From cbbee3bbe7769ef918768714ec1dabab541bd452 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Wed, 17 May 2017 13:30:46 +0300 Subject: [PATCH] =?UTF-8?q?get=20method=20on=20Observable=20created=20with?= =?UTF-8?q?=20fromObject=20wan=E2=80=99t=20returning=20the=20value=20that?= =?UTF-8?q?=20was=20put=20from=20set=20if=20that=20property=20was=20not=20?= =?UTF-8?q?specified=20in=20the=20object=20passed=20to=20fromObject.=20(#4?= =?UTF-8?q?213)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit get method on Observable created with fromObject wasn’t returning the … --- tests/app/data/observable-tests.ts | 20 +++++++++++++++++++ .../data/observable/observable.ts | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/tests/app/data/observable-tests.ts b/tests/app/data/observable-tests.ts index a13740541..94227010a 100644 --- a/tests/app/data/observable-tests.ts +++ b/tests/app/data/observable-tests.ts @@ -539,3 +539,23 @@ export function test_NestedObservableWithNullShouldNotCrash() { }); TKUnit.assert(testObservable !== undefined); } + +export function test_get_set_on_observables_fromObject_without_property_in_json() { + const array = new ObservableArray(); + const vm = fromObject({}); + vm.set("p", array); + const value1 = vm.get("p"); + const value2 = (vm).p; + TKUnit.assertEqual(value1, array); + TKUnit.assertNull(value2); +} + +export function test_get_set_on_observables_fromObject_with_property_in_json() { + const array = new ObservableArray(); + const vm = fromObject({ p: null}); + vm.set("p", array); + const value1 = vm.get("p"); + const value2 = (vm).p; + TKUnit.assertEqual(value1, array); + TKUnit.assertEqual(value2, array); +} \ No newline at end of file diff --git a/tns-core-modules/data/observable/observable.ts b/tns-core-modules/data/observable/observable.ts index 329faeeb1..87fbc1d29 100644 --- a/tns-core-modules/data/observable/observable.ts +++ b/tns-core-modules/data/observable/observable.ts @@ -185,6 +185,10 @@ export class Observable implements ObservableDefinition { class ObservableFromObject extends Observable { public _map = {}; + public get(name: string): any { + return this._map[name]; + } + public set(name: string, value: any) { const currentValue = this._map[name]; if (currentValue === value) {