From 0482460c09f83f885b83f1a82dba887b244a64b1 Mon Sep 17 00:00:00 2001 From: Gheric Speiginer Date: Thu, 14 Mar 2019 05:06:53 -0400 Subject: [PATCH] fix: WrappedValue.unwrap empty string behavior (#6900) --- tests/app/data/observable-tests.ts | 13 ++++++++++++- tns-core-modules/data/observable/observable.ts | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/app/data/observable-tests.ts b/tests/app/data/observable-tests.ts index 17e56b40b..6e647b5de 100644 --- a/tests/app/data/observable-tests.ts +++ b/tests/app/data/observable-tests.ts @@ -521,7 +521,18 @@ export function test_CorrectPropertyValueAfterUsingWrappedValue() { testObservable.set("property1", wrappedArray); - TKUnit.assertEqual(testObservable.get("property1"), testArray, "WrappedValue is used only to execute property change logic and unwrapped value should be used as proeprty value."); + TKUnit.assertEqual(testObservable.get("property1"), testArray, "WrappedValue is used only to execute property change logic and unwrapped value should be used as property value."); +} + +export function test_CorrectPropertyValueAfterUsingStringEmptyWrappedValue() { + const emptyString = ""; + let testObservable = fromObject({ "property1": emptyString }); + + let wrappedEmptyString = WrappedValue.wrap(emptyString); + + testObservable.set("property1", wrappedEmptyString); + + TKUnit.assertEqual(testObservable.get("property1"), emptyString, "WrappedValue is used only to execute property change logic and unwrapped value should be used as property value."); } export function test_NestedObservablesWithObservableArrayShouldNotCrash() { diff --git a/tns-core-modules/data/observable/observable.ts b/tns-core-modules/data/observable/observable.ts index 89b9340f8..21b829b09 100644 --- a/tns-core-modules/data/observable/observable.ts +++ b/tns-core-modules/data/observable/observable.ts @@ -13,7 +13,7 @@ export class WrappedValue implements WrappedValueDefinition { } public static unwrap(value: any) { - return (value && value.wrapped) ? value.wrapped : value; + return (value instanceof WrappedValue) ? value.wrapped : value; } public static wrap(value: any) { @@ -249,4 +249,4 @@ export function fromObjectRecursive(source: any): Observable { let observable = new ObservableFromObject(); addPropertiesFromObject(observable, source, true); return observable; -} \ No newline at end of file +}