@fluid-experimental/property-properties 2.0.0-internal.3.0.2 → 2.0.0-internal.3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/containerSerializer.d.ts.map +1 -1
- package/dist/containerSerializer.js +5 -5
- package/dist/containerSerializer.js.map +1 -1
- package/dist/enableValidations.js.map +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.d.ts +10 -10
- package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.js +70 -53
- package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/dist/properties/arrayProperty.d.ts.map +1 -1
- package/dist/properties/arrayProperty.js +152 -103
- package/dist/properties/arrayProperty.js.map +1 -1
- package/dist/properties/baseProperty.d.ts +4 -4
- package/dist/properties/baseProperty.d.ts.map +1 -1
- package/dist/properties/baseProperty.js +69 -47
- package/dist/properties/baseProperty.js.map +1 -1
- package/dist/properties/boolProperty.d.ts.map +1 -1
- package/dist/properties/boolProperty.js +3 -3
- package/dist/properties/boolProperty.js.map +1 -1
- package/dist/properties/containerProperty.d.ts +8 -8
- package/dist/properties/containerProperty.d.ts.map +1 -1
- package/dist/properties/containerProperty.js +33 -26
- package/dist/properties/containerProperty.js.map +1 -1
- package/dist/properties/enumArrayProperty.d.ts.map +1 -1
- package/dist/properties/enumArrayProperty.js +14 -14
- package/dist/properties/enumArrayProperty.js.map +1 -1
- package/dist/properties/enumProperty.d.ts.map +1 -1
- package/dist/properties/enumProperty.js +17 -17
- package/dist/properties/enumProperty.js.map +1 -1
- package/dist/properties/floatProperties.js +4 -4
- package/dist/properties/floatProperties.js.map +1 -1
- package/dist/properties/index.d.ts +23 -23
- package/dist/properties/index.d.ts.map +1 -1
- package/dist/properties/index.js.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.js +47 -37
- package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/dist/properties/intProperties.d.ts.map +1 -1
- package/dist/properties/intProperties.js +10 -10
- package/dist/properties/intProperties.js.map +1 -1
- package/dist/properties/lazyLoadedProperties.js.map +1 -1
- package/dist/properties/mapProperty.d.ts.map +1 -1
- package/dist/properties/mapProperty.js +21 -17
- package/dist/properties/mapProperty.js.map +1 -1
- package/dist/properties/namedNodeProperty.d.ts.map +1 -1
- package/dist/properties/namedNodeProperty.js +3 -3
- package/dist/properties/namedNodeProperty.js.map +1 -1
- package/dist/properties/namedProperty.d.ts.map +1 -1
- package/dist/properties/namedProperty.js +7 -5
- package/dist/properties/namedProperty.js.map +1 -1
- package/dist/properties/nodeProperty.d.ts.map +1 -1
- package/dist/properties/nodeProperty.js +5 -3
- package/dist/properties/nodeProperty.js.map +1 -1
- package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
- package/dist/properties/primitiveTypeCasts.js +9 -9
- package/dist/properties/primitiveTypeCasts.js.map +1 -1
- package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
- package/dist/properties/referenceArrayProperty.js +31 -25
- package/dist/properties/referenceArrayProperty.js.map +1 -1
- package/dist/properties/referenceMapProperty.d.ts.map +1 -1
- package/dist/properties/referenceMapProperty.js +18 -18
- package/dist/properties/referenceMapProperty.js.map +1 -1
- package/dist/properties/referenceProperty.d.ts.map +1 -1
- package/dist/properties/referenceProperty.js +33 -29
- package/dist/properties/referenceProperty.js.map +1 -1
- package/dist/properties/setProperty.d.ts.map +1 -1
- package/dist/properties/setProperty.js +31 -29
- package/dist/properties/setProperty.js.map +1 -1
- package/dist/properties/stringProperty.d.ts.map +1 -1
- package/dist/properties/stringProperty.js +56 -40
- package/dist/properties/stringProperty.js.map +1 -1
- package/dist/properties/uintProperties.js +5 -5
- package/dist/properties/uintProperties.js.map +1 -1
- package/dist/properties/valueArrayProperty.d.ts +1 -1
- package/dist/properties/valueArrayProperty.d.ts.map +1 -1
- package/dist/properties/valueArrayProperty.js +30 -29
- package/dist/properties/valueArrayProperty.js.map +1 -1
- package/dist/properties/valueMapProperty.d.ts.map +1 -1
- package/dist/properties/valueMapProperty.js +31 -29
- package/dist/properties/valueMapProperty.js.map +1 -1
- package/dist/properties/valueProperty.d.ts.map +1 -1
- package/dist/properties/valueProperty.js +11 -9
- package/dist/properties/valueProperty.js.map +1 -1
- package/dist/propertyFactory.d.ts.map +1 -1
- package/dist/propertyFactory.js +309 -252
- package/dist/propertyFactory.js.map +1 -1
- package/dist/propertyTemplate.d.ts +17 -17
- package/dist/propertyTemplate.d.ts.map +1 -1
- package/dist/propertyTemplate.js +64 -45
- package/dist/propertyTemplate.js.map +1 -1
- package/dist/propertyTemplateWrapper.d.ts.map +1 -1
- package/dist/propertyTemplateWrapper.js +40 -25
- package/dist/propertyTemplateWrapper.js.map +1 -1
- package/dist/propertyUtils.d.ts.map +1 -1
- package/dist/propertyUtils.js.map +1 -1
- package/dist/test/properties/arrayProperty.spec.js +566 -490
- package/dist/test/properties/arrayProperty.spec.js.map +1 -1
- package/dist/test/properties/baseProperty.spec.js +293 -280
- package/dist/test/properties/baseProperty.spec.js.map +1 -1
- package/dist/test/properties/containerProperty.spec.js +100 -94
- package/dist/test/properties/containerProperty.spec.js.map +1 -1
- package/dist/test/properties/customArrayProperty.spec.js +174 -147
- package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumArrayProperty.spec.js +67 -63
- package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumProperty.spec.js +115 -97
- package/dist/test/properties/enumProperty.spec.js.map +1 -1
- package/dist/test/properties/float32.spec.js +5 -5
- package/dist/test/properties/float32.spec.js.map +1 -1
- package/dist/test/properties/int64ArrayProperty.spec.js +157 -93
- package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/int64MapProperty.spec.js +185 -166
- package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
- package/dist/test/properties/int64Property.spec.js +109 -109
- package/dist/test/properties/int64Property.spec.js.map +1 -1
- package/dist/test/properties/isLeafNode.spec.js +75 -76
- package/dist/test/properties/isLeafNode.spec.js.map +1 -1
- package/dist/test/properties/mapProperty.spec.js +571 -531
- package/dist/test/properties/mapProperty.spec.js.map +1 -1
- package/dist/test/properties/namedNodeProperty.spec.js +31 -31
- package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
- package/dist/test/properties/nodeProperty.spec.js +805 -795
- package/dist/test/properties/nodeProperty.spec.js.map +1 -1
- package/dist/test/properties/referenceProperty.spec.js +729 -679
- package/dist/test/properties/referenceProperty.spec.js.map +1 -1
- package/dist/test/properties/relationshipProperty.spec.js +16 -16
- package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
- package/dist/test/properties/setProperty.spec.js +288 -227
- package/dist/test/properties/setProperty.spec.js.map +1 -1
- package/dist/test/properties/stringProperty.spec.js +326 -318
- package/dist/test/properties/stringProperty.spec.js.map +1 -1
- package/dist/test/properties/uint64Property.spec.js +46 -36
- package/dist/test/properties/uint64Property.spec.js.map +1 -1
- package/dist/test/properties/valueMapProperty.spec.js +259 -246
- package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
- package/dist/test/properties/valueProperty.spec.js +49 -43
- package/dist/test/properties/valueProperty.spec.js.map +1 -1
- package/dist/test/propertyFactory.spec.js +2038 -1631
- package/dist/test/propertyFactory.spec.js.map +1 -1
- package/dist/test/propertyTemplateWrapper.spec.js +72 -102
- package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
- package/dist/test/propertyUtils.spec.js +22 -21
- package/dist/test/propertyUtils.spec.js.map +1 -1
- package/dist/test/reversibleChangeset.spec.js +857 -703
- package/dist/test/reversibleChangeset.spec.js.map +1 -1
- package/dist/test/setup.js +5 -5
- package/dist/test/setup.js.map +1 -1
- package/dist/test/tsconfig.tsbuildinfo +1 -1
- package/dist/test/utils.spec.js +1334 -1144
- package/dist/test/utils.spec.js.map +1 -1
- package/dist/test/validation/badMissingSemverInTypeid.js +20 -20
- package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
- package/dist/test/validation/badPrimitiveTypeid.js +12 -12
- package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
- package/dist/test/validation/goodColorId.js +91 -91
- package/dist/test/validation/goodColorId.js.map +1 -1
- package/dist/test/validation/goodColorPalette.js +4 -4
- package/dist/test/validation/goodColorPalette.js.map +1 -1
- package/dist/test/validation/goodPointId.js +20 -20
- package/dist/test/validation/goodPointId.js.map +1 -1
- package/dist/test/validation/reversibleChangeSetTestData.js +23841 -2
- package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
- package/lib/containerSerializer.d.ts.map +1 -1
- package/lib/containerSerializer.js +5 -5
- package/lib/containerSerializer.js.map +1 -1
- package/lib/enableValidations.js.map +1 -1
- package/lib/index.d.ts +19 -19
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -19
- package/lib/index.js.map +1 -1
- package/lib/properties/abstractStaticCollectionProperty.d.ts +10 -10
- package/lib/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
- package/lib/properties/abstractStaticCollectionProperty.js +70 -53
- package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/lib/properties/arrayProperty.d.ts.map +1 -1
- package/lib/properties/arrayProperty.js +152 -103
- package/lib/properties/arrayProperty.js.map +1 -1
- package/lib/properties/baseProperty.d.ts +4 -4
- package/lib/properties/baseProperty.d.ts.map +1 -1
- package/lib/properties/baseProperty.js +73 -51
- package/lib/properties/baseProperty.js.map +1 -1
- package/lib/properties/boolProperty.d.ts.map +1 -1
- package/lib/properties/boolProperty.js +3 -3
- package/lib/properties/boolProperty.js.map +1 -1
- package/lib/properties/containerProperty.d.ts +8 -8
- package/lib/properties/containerProperty.d.ts.map +1 -1
- package/lib/properties/containerProperty.js +33 -26
- package/lib/properties/containerProperty.js.map +1 -1
- package/lib/properties/enumArrayProperty.d.ts.map +1 -1
- package/lib/properties/enumArrayProperty.js +14 -14
- package/lib/properties/enumArrayProperty.js.map +1 -1
- package/lib/properties/enumProperty.d.ts.map +1 -1
- package/lib/properties/enumProperty.js +17 -17
- package/lib/properties/enumProperty.js.map +1 -1
- package/lib/properties/floatProperties.js +4 -4
- package/lib/properties/floatProperties.js.map +1 -1
- package/lib/properties/index.d.ts +23 -23
- package/lib/properties/index.d.ts.map +1 -1
- package/lib/properties/index.js +23 -23
- package/lib/properties/index.js.map +1 -1
- package/lib/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
- package/lib/properties/indexedCollectionBaseProperty.js +47 -37
- package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/lib/properties/intProperties.d.ts.map +1 -1
- package/lib/properties/intProperties.js +10 -10
- package/lib/properties/intProperties.js.map +1 -1
- package/lib/properties/lazyLoadedProperties.js.map +1 -1
- package/lib/properties/mapProperty.d.ts.map +1 -1
- package/lib/properties/mapProperty.js +21 -17
- package/lib/properties/mapProperty.js.map +1 -1
- package/lib/properties/namedNodeProperty.d.ts.map +1 -1
- package/lib/properties/namedNodeProperty.js +3 -3
- package/lib/properties/namedNodeProperty.js.map +1 -1
- package/lib/properties/namedProperty.d.ts.map +1 -1
- package/lib/properties/namedProperty.js +7 -5
- package/lib/properties/namedProperty.js.map +1 -1
- package/lib/properties/nodeProperty.d.ts.map +1 -1
- package/lib/properties/nodeProperty.js +5 -3
- package/lib/properties/nodeProperty.js.map +1 -1
- package/lib/properties/primitiveTypeCasts.d.ts.map +1 -1
- package/lib/properties/primitiveTypeCasts.js +9 -9
- package/lib/properties/primitiveTypeCasts.js.map +1 -1
- package/lib/properties/referenceArrayProperty.d.ts.map +1 -1
- package/lib/properties/referenceArrayProperty.js +31 -25
- package/lib/properties/referenceArrayProperty.js.map +1 -1
- package/lib/properties/referenceMapProperty.d.ts.map +1 -1
- package/lib/properties/referenceMapProperty.js +18 -18
- package/lib/properties/referenceMapProperty.js.map +1 -1
- package/lib/properties/referenceProperty.d.ts.map +1 -1
- package/lib/properties/referenceProperty.js +33 -29
- package/lib/properties/referenceProperty.js.map +1 -1
- package/lib/properties/setProperty.d.ts.map +1 -1
- package/lib/properties/setProperty.js +31 -29
- package/lib/properties/setProperty.js.map +1 -1
- package/lib/properties/stringProperty.d.ts.map +1 -1
- package/lib/properties/stringProperty.js +56 -40
- package/lib/properties/stringProperty.js.map +1 -1
- package/lib/properties/uintProperties.js +5 -5
- package/lib/properties/uintProperties.js.map +1 -1
- package/lib/properties/valueArrayProperty.d.ts +1 -1
- package/lib/properties/valueArrayProperty.d.ts.map +1 -1
- package/lib/properties/valueArrayProperty.js +30 -29
- package/lib/properties/valueArrayProperty.js.map +1 -1
- package/lib/properties/valueMapProperty.d.ts.map +1 -1
- package/lib/properties/valueMapProperty.js +31 -29
- package/lib/properties/valueMapProperty.js.map +1 -1
- package/lib/properties/valueProperty.d.ts.map +1 -1
- package/lib/properties/valueProperty.js +11 -9
- package/lib/properties/valueProperty.js.map +1 -1
- package/lib/propertyFactory.d.ts.map +1 -1
- package/lib/propertyFactory.js +309 -252
- package/lib/propertyFactory.js.map +1 -1
- package/lib/propertyTemplate.d.ts +17 -17
- package/lib/propertyTemplate.d.ts.map +1 -1
- package/lib/propertyTemplate.js +64 -45
- package/lib/propertyTemplate.js.map +1 -1
- package/lib/propertyTemplateWrapper.d.ts.map +1 -1
- package/lib/propertyTemplateWrapper.js +40 -25
- package/lib/propertyTemplateWrapper.js.map +1 -1
- package/lib/propertyUtils.d.ts.map +1 -1
- package/lib/propertyUtils.js.map +1 -1
- package/package.json +28 -28
- package/src/index.d.ts +2750 -2681
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/baseProperty.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview In this file, we will test the functions of a BaseProperty object\n * described in /src/properties/baseProperty.js\n */\n\nvar PropertyFactory, ChangeSet, MSG, BaseProperty;\n\ndescribe('BaseProperty', function() {\n /**\n * Get all the objects we need in this test here.\n */\n before(function() {\n PropertyFactory = require('../..').PropertyFactory;\n ChangeSet = require('@fluid-experimental/property-changeset').ChangeSet;\n MSG = require('@fluid-experimental/property-common').constants.MSG;\n BaseProperty = require('../..').BaseProperty;\n\n var TestPropertyObject = {\n typeid: 'autodesk.tests:property.with.special.characters-1.0.0',\n properties: [\n { id: 'simple_property', typeid: 'String' },\n { id: 'test.property', typeid: 'String' },\n { id: 'test\"property\"', typeid: 'String' },\n {\n id: 'test[property]', properties: [\n {\n id: '.property.', properties: [\n { id: 'test', typeid: 'String' },\n ],\n },\n ],\n },\n ],\n };\n\n PropertyFactory._reregister(TestPropertyObject);\n });\n\n describe('Serializing a BaseProperty with special characters', function() {\n it('should be possible to serialize a property with special characters', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n myProp._properties['test.property'].value = 'a';\n myProp._properties['test\"property\"'].value = 'b';\n myProp._properties['test[property]']['.property.']['test'].value = 'c';\n\n var serialized = myProp._serialize(false);\n\n var myProp2 = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n myProp2.deserialize(serialized);\n expect(myProp2._properties['test.property'].value).to.equal('a');\n expect(myProp2._properties['test\"property\"'].value).to.equal('b');\n expect(myProp2._properties['test[property]']['.property.']['test'].value).to.equal('c');\n });\n });\n\n describe('Get should work', function() {\n // Test whether .get accepts the correct parameters\n it('should accept an id (string) or an array of ids', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n var correctArrayFn = function() {\n myProp.get(['test']);\n };\n var correctStringFn = function() {\n myProp.get('test');\n };\n expect(correctArrayFn).to.not.throw();\n expect(correctStringFn).to.not.throw();\n });\n // .get(['test1','test2']) === .get('test1').get('test2')\n it('when an array is passed, it should do a .get for each id in the array', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n expect(myProp.get(['test[property]', '.property.', 'test'])).to.equal(\n myProp.get('test[property]').get('.property.').get('test'));\n });\n\n it('when an array is passed with a bad path, it should return undefined', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n expect(myProp.get(['wrong path', '.property', 'test'])).to.be.undefined;\n });\n\n it('should work with raise level path tokens', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n expect(myProp.get(['test[property]', '.property.', BaseProperty.PATH_TOKENS.UP,\n '.property.', 'test'])).to.deep.equal(myProp.get('test[property]').get('.property.').get('test'));\n expect(myProp.get(['test[property]', '.property.',\n BaseProperty.PATH_TOKENS.UP, BaseProperty.PATH_TOKENS.UP,\n 'simple_property'])).to.deep.equal(myProp.get('simple_property'));\n });\n\n it('should work with path root tokens', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n expect(myProp.get([BaseProperty.PATH_TOKENS.ROOT])).to.equal(myProp);\n expect(myProp.get([BaseProperty.PATH_TOKENS.ROOT, 'simple_property']))\n .to.equal(myProp.get('simple_property'));\n expect(myProp.get('test[property]').get([BaseProperty.PATH_TOKENS.ROOT])).to.equal(myProp);\n });\n });\n\n describe('GetValue should work', function() {\n it('should return the value of a primitive property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n myProp._properties['test.property'].value = 'a';\n var myValue = myProp.getValue(['test.property']);\n expect(myValue).to.equal('a');\n });\n\n it('should work with an array of paths', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n myProp.get(['test[property]', '.property.', 'test']).setValue('b');\n expect(myProp.getValue(['test[property]', '.property.', 'test'])).to.equal('b');\n });\n\n it('should throw if using .getValue on a non-primitive property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n var incorrectFn = function() {\n myProp.getValue(['test[property]']);\n };\n expect(incorrectFn).to.throw();\n });\n });\n\n describe('GetValues should work', function() {\n it('should return the values of a property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n myProp.setValues({\n 'simple_property': 'string1',\n 'test\"property\"': 'string3',\n 'test[property]': {\n '.property.': {\n 'test': 'string4',\n },\n },\n });\n\n expect(myProp.getValues()).to.deep.equal({\n 'simple_property': 'string1',\n 'test.property': '',\n 'test\"property\"': 'string3',\n 'test[property]': {\n '.property.': {\n 'test': 'string4',\n },\n },\n });\n });\n\n it('setValues should accept the output of getValues as a valid input', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n myProp.setValues({\n 'simple_property': 'string1',\n 'test\"property\"': 'string3',\n 'test[property]': {\n '.property.': {\n 'test': 'string4',\n },\n },\n });\n\n var correctFn = function() {\n myProp.setValues(myProp.getValues());\n };\n expect(correctFn).to.not.throw();\n });\n });\n\n describe('setValues should work', function() {\n it('should accept an object and set each values in that object', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n myProp.setValues({\n 'simple_property': 'string1',\n 'test[property]': {\n '.property.': {\n 'test': 'string2',\n },\n },\n });\n expect(myProp.get('simple_property').getValue()).to.equal('string1');\n expect(myProp.get(['test[property]', '.property.', 'test']).getValue()).to.equal('string2');\n });\n it('should throw if trying to insert in a non-exiting path', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n var invalidFunction = function() {\n myProp.setValues({\n 'simple_property': 'string1',\n 'test[property]': {\n '.property.': {\n 'test123': 'string2',\n },\n },\n });\n };\n // TODO: move this to constants.js\n expect(invalidFunction).to.throw(MSG.SET_VALUES_PATH_INVALID + 'test123');\n });\n\n it('should throw if trying to insert into a path that resolves to a property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n var invalidFunction = function() {\n myProp.setValues({\n 'simple_property': 'string1',\n 'test[property]': {\n '.property.': 'string2',\n },\n });\n };\n expect(invalidFunction).to.throw(MSG.SET_VALUES_PATH_PROPERTY + '.property.');\n });\n });\n\n describe('Path resolution should work', function() {\n // Test whether the right paths are returned\n it('should work with getAbsolutePath', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n\n expect(myProp.get('simple_property').getAbsolutePath()).to.equal('/simple_property');\n expect(myProp.get('test.property').getAbsolutePath()).to.equal('/\"test.property\"');\n expect(myProp.get('test\"property\"').getAbsolutePath()).to.equal('/\"test\\\\\"property\\\\\"\"');\n expect(myProp.get('test[property]').getAbsolutePath()).to.equal('/\"test[property]\"');\n expect(myProp.get('test[property]')\n .get('.property.').getAbsolutePath()).to.equal('/\"test[property]\".\".property.\"');\n expect(myProp.get('test[property]')\n .get('.property.')\n .get('test').getAbsolutePath()).to.equal('/\"test[property]\".\".property.\".test');\n });\n\n it('should work with getRelativePath', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n var nested = myProp.get('test[property]');\n expect(myProp.get(['test[property]', '.property.', 'test'])\n .getRelativePath(nested)).to.equal('\".property.\".test');\n expect(myProp.get(['test[property]', '.property.', 'test']).getRelativePath(myProp.get('simple_property')))\n .to.equal('../\"test[property]\".\".property.\".test');\n expect(nested.getRelativePath(myProp.get(['test[property]', '.property.', 'test']))).to.equal('../../');\n });\n\n // Test that path resolution works\n it('should work with resolvePath', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n\n expect(myProp.resolvePath('simple_property')).to.equal(myProp.get('simple_property'));\n expect(myProp.resolvePath('\"test.property\"')).to.equal(myProp.get('test.property'));\n expect(myProp.resolvePath('\"test\\\\\"property\\\\\"\"')).to.equal(myProp.get('test\"property\"'));\n expect(myProp.resolvePath('\"test[property]\"')).to.equal(myProp.get('test[property]'));\n expect(myProp.resolvePath('\"test[property]\".\".property.\"')).to.equal(\n myProp.get('test[property]').get('.property.'));\n expect(myProp.resolvePath('\"test[property]\".\".property.\".test')).to.equal(\n myProp.get('test[property]').get('.property.').get('test'));\n\n expect(myProp.resolvePath('/')).to.equal(myProp);\n expect(myProp.resolvePath('/simple_property')).to.equal(myProp.get('simple_property'));\n expect(myProp.get('simple_property').resolvePath('/')).to.equal(myProp);\n expect(myProp.get('simple_property').resolvePath('/simple_property')).to.equal(\n myProp.get('simple_property'));\n });\n\n it('should return undefined for invalid paths', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n\n expect(myProp.resolvePath('invalid_path')).to.be.undefined;\n expect(myProp.resolvePath('invalid_path.invalid_child')).to.be.undefined;\n });\n });\n\n describe('cleanDirty', function() {\n it('should work for paths with special characters', function() {\n var property = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n property.resolvePath('\"test[property]\".\".property.\".test').value = 'test';\n property.cleanDirty();\n expect(property._serialize(true)).to.be.empty;\n expect(property.getPendingChanges()).to.deep.equal(new ChangeSet({}));\n });\n });\n\n it('should clone the property set', function(done) {\n var nodeProperty = PropertyFactory.create('NodeProperty');\n\n nodeProperty.deserialize({\n insert: {\n String: {\n result1: 'foo',\n result2: 'bar',\n },\n NodeProperty: {\n result3: {\n insert: {\n Uint32: {\n result4: 4,\n },\n },\n },\n },\n },\n });\n\n var clone = nodeProperty.clone();\n\n expect(nodeProperty._serialize(false)).to.eql(clone._serialize(false));\n\n done();\n });\n\n it('should support reapplying dirty flags on non-identical changeSets', function(done) {\n let nodeProperty = PropertyFactory.create('NodeProperty');\n\n nodeProperty.insert('result1', PropertyFactory.create('String'));\n nodeProperty.insert('result2', PropertyFactory.create('String'));\n nodeProperty.insert('result3', PropertyFactory.create('Int32'));\n nodeProperty.insert('result4', PropertyFactory.create('Int32'));\n\n const changeset1 = {\n String: {\n result1: 'foo',\n result2: 'bar',\n },\n };\n\n const changeset2 = {\n Int32: {\n result3: 10,\n result4: 11,\n },\n };\n\n nodeProperty._reapplyDirtyFlags(changeset1, changeset2);\n\n done();\n });\n\n it('should be able to handle duplicate namespace', function() {\n var ANumber = {\n typeid: 'autodesk.tests:ANumber-1.0.0',\n properties: [{\n id: 'aValue', typeid: 'Int32',\n }],\n };\n PropertyFactory.register(ANumber);\n\n var SomeNumbers = {\n typeid: 'autodesk.tests:SomeNumbers-1.0.0',\n properties: [\n { id: 'aValue', typeid: 'autodesk.tests:ANumber-1.0.0' },\n { id: 'anotherValue', typeid: 'autodesk.tests:ANumber-1.0.0' },\n { id: 'thirdValue', typeid: 'autodesk.tests:ANumber-1.0.0' },\n ],\n };\n PropertyFactory.register(SomeNumbers);\n\n var originalSomeNumbers = PropertyFactory.create(SomeNumbers.typeid);\n\n let root = PropertyFactory.create('NodeProperty');\n root.insert('aValue', originalSomeNumbers);\n\n var someNumbers = root.resolvePath('aValue');\n expect(someNumbers).to.equal(originalSomeNumbers);\n var aNumber = root.resolvePath('aValue.aValue');\n expect(aNumber).to.exist;\n var aValue = root.resolvePath('aValue.aValue.aValue');\n expect(aValue).to.exist;\n });\n\n describe('getContext', function() {\n it('should work with context of single', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n expect(myProp.getContext()).to.equal('single');\n });\n it('should work with other contexts', function() {\n var arrayProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0', 'array');\n expect(arrayProp.getContext()).to.equal('array');\n var mapProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0', 'map');\n expect(mapProp.getContext()).to.equal('map');\n });\n });\n\n describe('getFullTypeid', function() {\n it('should return the typeid of the property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n expect(myProp.getFullTypeid()).to.equal('autodesk.tests:property.with.special.characters-1.0.0');\n });\n });\n\n describe('getTypeid', function() {\n it('should return the typeid of the property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n expect(myProp.getTypeid()).to.equal('autodesk.tests:property.with.special.characters-1.0.0');\n });\n });\n\n describe('getId', function() {\n it('should return the id of the property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n var nested = myProp.get('test.property');\n expect(nested.getId()).to.equal('test.property');\n });\n });\n\n describe('getParent', function() {\n it('should return the parent property', function() {\n var myProp = PropertyFactory.create('autodesk.tests:property.with.special.characters-1.0.0');\n var nested = myProp.get('test.property');\n expect(nested.getParent()).to.deep.equal(myProp);\n });\n });\n\n // Other aspects of traverseDown function are already tested. Missing BREAK_TRAVERSAL and paths only.\n describe('traverseDown, hasPendingChanges and getPendingChanges', function() {\n var BREAK_TRAVERSAL;\n\n before(function() {\n BREAK_TRAVERSAL = require('../..').BaseProperty.BREAK_TRAVERSAL;\n var TestTraversalObject = {\n typeid: 'autodesk.tests:property.traversal-1.0.0',\n properties: [\n { id: 'p1', typeid: 'String' },\n {\n id: 'p2', properties: [\n {\n id: 'p2p1', properties: [\n { id: 'p2p1p1', typeid: 'String' },\n { id: 'p2p1p2', typeid: 'String' },\n { id: 'p2p1p3', typeid: 'String' },\n ],\n },\n {\n id: 'p2p2', properties: [\n { id: 'p2p2p1', typeid: 'String' },\n { id: 'p2p2p2', typeid: 'String' },\n { id: 'p2p2p3', typeid: 'Int32' },\n ],\n },\n ],\n },\n { id: 'p3', typeid: 'String' },\n {\n id: 'p4', properties: [\n {\n id: 'p4p1', properties: [\n { id: 'p4p1p1', typeid: 'String' },\n ],\n },\n {\n id: 'p4p2', properties: [\n { id: 'p4p2p1', typeid: 'String' },\n ],\n },\n ],\n },\n ],\n };\n PropertyFactory.register(TestTraversalObject);\n });\n\n it('should stop when callback returns BREAK_TRAVERSAL', function() {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n\n var nbrCalls = 0;\n var breakTrav = function(prop) {\n if (++nbrCalls === 5) {\n return BREAK_TRAVERSAL;\n }\n return undefined;\n };\n property.traverseDown(breakTrav);\n expect(nbrCalls).to.equal(5);\n });\n\n it('should provide path of each prop', function() {\n var arrPaths = [];\n var gatherPaths = function(prop, path) {\n arrPaths.push(path);\n };\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n property.resolvePath('p4').traverseDown(gatherPaths);\n expect(arrPaths).to.deep.equal(['p4p1', 'p4p1.p4p1p1', 'p4p2', 'p4p2.p4p2p1']);\n });\n\n it('should return pending changes', function() {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n expect(property.resolvePath('p2').getPendingChanges()).to.deep.equal(new ChangeSet({}));\n expect(property.resolvePath('p2').hasPendingChanges()).to.be.false;\n property.resolvePath('p2.p2p1.p2p1p2').value = 'Hi';\n property.resolvePath('p2.p2p2.p2p2p1').value = 'Hello';\n property.resolvePath('p2.p2p2.p2p2p3').value = 42;\n expect(property.resolvePath('p2').getPendingChanges()).to.deep.equal(\n new ChangeSet({ 'Int32': { 'p2p2.p2p2p3': 42 }, 'String': { 'p2p1.p2p1p2': 'Hi', 'p2p2.p2p2p1': 'Hello' } }));\n expect(property.resolvePath('p2').hasPendingChanges()).to.be.true;\n });\n\n it('should output a pretty string with prettyPrint()', function() {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n var expectedPrettyStr =\n 'p2 (ContainerProperty):\\n' +\n ' p2p1 (ContainerProperty):\\n' +\n ' p2p1p1 (String): \"\"\\n' +\n ' p2p1p2 (String): \"\"\\n' +\n ' p2p1p3 (String): \"\"\\n' +\n ' p2p2 (ContainerProperty):\\n' +\n ' p2p2p1 (String): \"\"\\n' +\n ' p2p2p2 (String): \"\"\\n' +\n ' p2p2p3 (Int32): 0\\n';\n var prettyStr = '';\n property.resolvePath('p2').prettyPrint(function(str) {\n prettyStr += str + '\\n';\n });\n expect(prettyStr).to.equal(expectedPrettyStr);\n });\n });\n describe('Ancestry relations should be resolved correctly', function() {\n /**\n * creates a workspace\n * @return {property-properties.Workspace} workspace\n */\n function createRootProperty() {\n return Promise.resolve(PropertyFactory.create('NodeProperty'));\n }\n\n it('property should be ancestor of subproperty', function() {\n return createRootProperty().then(function(workspace) {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n var subproperty = property.resolvePath('p2.p2p1.p2p1p2');\n workspace.insert('test', property);\n expect(property.isAncestorOf(subproperty)).to.equal(true);\n });\n });\n\n it('property should not be ancestor itself', function() {\n return createRootProperty().then(function(workspace) {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n expect(property.isAncestorOf(property)).to.equal(false);\n });\n });\n\n it('property not in workspace should correctly resolve ancestry', function() {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n var subproperty = property.resolvePath('p2.p2p1.p2p1p2');\n expect(property.isAncestorOf(subproperty)).to.equal(true);\n expect(subproperty.isDescendantOf(property)).to.equal(true);\n });\n\n it('property should be ancestor of subproperty', function() {\n return createRootProperty().then(function(workspace) {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n var subproperty = property.resolvePath('p2.p2p1.p2p1p2');\n workspace.insert('test', property);\n expect(property.isAncestorOf(subproperty)).to.equal(true);\n });\n });\n\n it('subproperty should be descendant of property', function() {\n return createRootProperty().then(function(workspace) {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n var subproperty = property.resolvePath('p2.p2p1.p2p1p2');\n workspace.insert('test', property);\n expect(subproperty.isDescendantOf(property)).to.equal(true);\n });\n });\n\n it('property in array property should be descendant of array', function() {\n return createRootProperty().then(function(workspace) {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0', 'array');\n var element = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n property.push(element);\n var subproperty = element.resolvePath('p2.p2p1.p2p1p2');\n workspace.insert('test', property);\n expect(subproperty.isDescendantOf(property)).to.equal(true);\n });\n });\n\n it('array property should be ancestor of property in array', function() {\n return createRootProperty().then(function(workspace) {\n var property = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0', 'array');\n var element = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n property.push(element);\n var subproperty = element.resolvePath('p2.p2p1.p2p1p2');\n workspace.insert('test', property);\n expect(property.isAncestorOf(subproperty)).to.equal(true);\n });\n });\n\n it('two different properties should not be related', function() {\n return createRootProperty().then(function(workspace) {\n var prop1 = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n var prop2 = PropertyFactory.create('autodesk.tests:property.traversal-1.0.0');\n workspace.insert('test1', prop1);\n workspace.insert('test2', prop2);\n expect(prop2.isAncestorOf(prop1)).to.equal(false);\n expect(prop2.isDescendantOf(prop1)).to.equal(false);\n expect(prop1.isAncestorOf(prop2)).to.equal(false);\n expect(prop1.isDescendantOf(prop2)).to.equal(false);\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"baseProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/baseProperty.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview In this file, we will test the functions of a BaseProperty object\n * described in /src/properties/baseProperty.js\n */\n\nvar PropertyFactory, ChangeSet, MSG, BaseProperty;\n\ndescribe(\"BaseProperty\", function () {\n\t/**\n\t * Get all the objects we need in this test here.\n\t */\n\tbefore(function () {\n\t\tPropertyFactory = require(\"../..\").PropertyFactory;\n\t\tChangeSet = require(\"@fluid-experimental/property-changeset\").ChangeSet;\n\t\tMSG = require(\"@fluid-experimental/property-common\").constants.MSG;\n\t\tBaseProperty = require(\"../..\").BaseProperty;\n\n\t\tvar TestPropertyObject = {\n\t\t\ttypeid: \"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"simple_property\", typeid: \"String\" },\n\t\t\t\t{ id: \"test.property\", typeid: \"String\" },\n\t\t\t\t{ id: 'test\"property\"', typeid: \"String\" },\n\t\t\t\t{\n\t\t\t\t\tid: \"test[property]\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \".property.\",\n\t\t\t\t\t\t\tproperties: [{ id: \"test\", typeid: \"String\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tPropertyFactory._reregister(TestPropertyObject);\n\t});\n\n\tdescribe(\"Serializing a BaseProperty with special characters\", function () {\n\t\tit(\"should be possible to serialize a property with special characters\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tmyProp._properties[\"test.property\"].value = \"a\";\n\t\t\tmyProp._properties['test\"property\"'].value = \"b\";\n\t\t\tmyProp._properties[\"test[property]\"][\".property.\"][\"test\"].value = \"c\";\n\n\t\t\tvar serialized = myProp._serialize(false);\n\n\t\t\tvar myProp2 = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tmyProp2.deserialize(serialized);\n\t\t\texpect(myProp2._properties[\"test.property\"].value).to.equal(\"a\");\n\t\t\texpect(myProp2._properties['test\"property\"'].value).to.equal(\"b\");\n\t\t\texpect(myProp2._properties[\"test[property]\"][\".property.\"][\"test\"].value).to.equal(\"c\");\n\t\t});\n\t});\n\n\tdescribe(\"Get should work\", function () {\n\t\t// Test whether .get accepts the correct parameters\n\t\tit(\"should accept an id (string) or an array of ids\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tvar correctArrayFn = function () {\n\t\t\t\tmyProp.get([\"test\"]);\n\t\t\t};\n\t\t\tvar correctStringFn = function () {\n\t\t\t\tmyProp.get(\"test\");\n\t\t\t};\n\t\t\texpect(correctArrayFn).to.not.throw();\n\t\t\texpect(correctStringFn).to.not.throw();\n\t\t});\n\t\t// .get(['test1','test2']) === .get('test1').get('test2')\n\t\tit(\"when an array is passed, it should do a .get for each id in the array\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\texpect(myProp.get([\"test[property]\", \".property.\", \"test\"])).to.equal(\n\t\t\t\tmyProp.get(\"test[property]\").get(\".property.\").get(\"test\"),\n\t\t\t);\n\t\t});\n\n\t\tit(\"when an array is passed with a bad path, it should return undefined\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\texpect(myProp.get([\"wrong path\", \".property\", \"test\"])).to.be.undefined;\n\t\t});\n\n\t\tit(\"should work with raise level path tokens\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\texpect(\n\t\t\t\tmyProp.get([\n\t\t\t\t\t\"test[property]\",\n\t\t\t\t\t\".property.\",\n\t\t\t\t\tBaseProperty.PATH_TOKENS.UP,\n\t\t\t\t\t\".property.\",\n\t\t\t\t\t\"test\",\n\t\t\t\t]),\n\t\t\t).to.deep.equal(myProp.get(\"test[property]\").get(\".property.\").get(\"test\"));\n\t\t\texpect(\n\t\t\t\tmyProp.get([\n\t\t\t\t\t\"test[property]\",\n\t\t\t\t\t\".property.\",\n\t\t\t\t\tBaseProperty.PATH_TOKENS.UP,\n\t\t\t\t\tBaseProperty.PATH_TOKENS.UP,\n\t\t\t\t\t\"simple_property\",\n\t\t\t\t]),\n\t\t\t).to.deep.equal(myProp.get(\"simple_property\"));\n\t\t});\n\n\t\tit(\"should work with path root tokens\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\texpect(myProp.get([BaseProperty.PATH_TOKENS.ROOT])).to.equal(myProp);\n\t\t\texpect(myProp.get([BaseProperty.PATH_TOKENS.ROOT, \"simple_property\"])).to.equal(\n\t\t\t\tmyProp.get(\"simple_property\"),\n\t\t\t);\n\t\t\texpect(myProp.get(\"test[property]\").get([BaseProperty.PATH_TOKENS.ROOT])).to.equal(\n\t\t\t\tmyProp,\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"GetValue should work\", function () {\n\t\tit(\"should return the value of a primitive property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tmyProp._properties[\"test.property\"].value = \"a\";\n\t\t\tvar myValue = myProp.getValue([\"test.property\"]);\n\t\t\texpect(myValue).to.equal(\"a\");\n\t\t});\n\n\t\tit(\"should work with an array of paths\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tmyProp.get([\"test[property]\", \".property.\", \"test\"]).setValue(\"b\");\n\t\t\texpect(myProp.getValue([\"test[property]\", \".property.\", \"test\"])).to.equal(\"b\");\n\t\t});\n\n\t\tit(\"should throw if using .getValue on a non-primitive property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tvar incorrectFn = function () {\n\t\t\t\tmyProp.getValue([\"test[property]\"]);\n\t\t\t};\n\t\t\texpect(incorrectFn).to.throw();\n\t\t});\n\t});\n\n\tdescribe(\"GetValues should work\", function () {\n\t\tit(\"should return the values of a property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tmyProp.setValues({\n\t\t\t\t\"simple_property\": \"string1\",\n\t\t\t\t'test\"property\"': \"string3\",\n\t\t\t\t\"test[property]\": {\n\t\t\t\t\t\".property.\": {\n\t\t\t\t\t\ttest: \"string4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\texpect(myProp.getValues()).to.deep.equal({\n\t\t\t\t\"simple_property\": \"string1\",\n\t\t\t\t\"test.property\": \"\",\n\t\t\t\t'test\"property\"': \"string3\",\n\t\t\t\t\"test[property]\": {\n\t\t\t\t\t\".property.\": {\n\t\t\t\t\t\ttest: \"string4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"setValues should accept the output of getValues as a valid input\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tmyProp.setValues({\n\t\t\t\t\"simple_property\": \"string1\",\n\t\t\t\t'test\"property\"': \"string3\",\n\t\t\t\t\"test[property]\": {\n\t\t\t\t\t\".property.\": {\n\t\t\t\t\t\ttest: \"string4\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tvar correctFn = function () {\n\t\t\t\tmyProp.setValues(myProp.getValues());\n\t\t\t};\n\t\t\texpect(correctFn).to.not.throw();\n\t\t});\n\t});\n\n\tdescribe(\"setValues should work\", function () {\n\t\tit(\"should accept an object and set each values in that object\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tmyProp.setValues({\n\t\t\t\t\"simple_property\": \"string1\",\n\t\t\t\t\"test[property]\": {\n\t\t\t\t\t\".property.\": {\n\t\t\t\t\t\ttest: \"string2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t\texpect(myProp.get(\"simple_property\").getValue()).to.equal(\"string1\");\n\t\t\texpect(myProp.get([\"test[property]\", \".property.\", \"test\"]).getValue()).to.equal(\n\t\t\t\t\"string2\",\n\t\t\t);\n\t\t});\n\t\tit(\"should throw if trying to insert in a non-exiting path\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tvar invalidFunction = function () {\n\t\t\t\tmyProp.setValues({\n\t\t\t\t\t\"simple_property\": \"string1\",\n\t\t\t\t\t\"test[property]\": {\n\t\t\t\t\t\t\".property.\": {\n\t\t\t\t\t\t\ttest123: \"string2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t};\n\t\t\t// TODO: move this to constants.js\n\t\t\texpect(invalidFunction).to.throw(MSG.SET_VALUES_PATH_INVALID + \"test123\");\n\t\t});\n\n\t\tit(\"should throw if trying to insert into a path that resolves to a property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tvar invalidFunction = function () {\n\t\t\t\tmyProp.setValues({\n\t\t\t\t\t\"simple_property\": \"string1\",\n\t\t\t\t\t\"test[property]\": {\n\t\t\t\t\t\t\".property.\": \"string2\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t};\n\t\t\texpect(invalidFunction).to.throw(MSG.SET_VALUES_PATH_PROPERTY + \".property.\");\n\t\t});\n\t});\n\n\tdescribe(\"Path resolution should work\", function () {\n\t\t// Test whether the right paths are returned\n\t\tit(\"should work with getAbsolutePath\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\n\t\t\texpect(myProp.get(\"simple_property\").getAbsolutePath()).to.equal(\"/simple_property\");\n\t\t\texpect(myProp.get(\"test.property\").getAbsolutePath()).to.equal('/\"test.property\"');\n\t\t\texpect(myProp.get('test\"property\"').getAbsolutePath()).to.equal(\n\t\t\t\t'/\"test\\\\\"property\\\\\"\"',\n\t\t\t);\n\t\t\texpect(myProp.get(\"test[property]\").getAbsolutePath()).to.equal('/\"test[property]\"');\n\t\t\texpect(myProp.get(\"test[property]\").get(\".property.\").getAbsolutePath()).to.equal(\n\t\t\t\t'/\"test[property]\".\".property.\"',\n\t\t\t);\n\t\t\texpect(\n\t\t\t\tmyProp.get(\"test[property]\").get(\".property.\").get(\"test\").getAbsolutePath(),\n\t\t\t).to.equal('/\"test[property]\".\".property.\".test');\n\t\t});\n\n\t\tit(\"should work with getRelativePath\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tvar nested = myProp.get(\"test[property]\");\n\t\t\texpect(\n\t\t\t\tmyProp.get([\"test[property]\", \".property.\", \"test\"]).getRelativePath(nested),\n\t\t\t).to.equal('\".property.\".test');\n\t\t\texpect(\n\t\t\t\tmyProp\n\t\t\t\t\t.get([\"test[property]\", \".property.\", \"test\"])\n\t\t\t\t\t.getRelativePath(myProp.get(\"simple_property\")),\n\t\t\t).to.equal('../\"test[property]\".\".property.\".test');\n\t\t\texpect(\n\t\t\t\tnested.getRelativePath(myProp.get([\"test[property]\", \".property.\", \"test\"])),\n\t\t\t).to.equal(\"../../\");\n\t\t});\n\n\t\t// Test that path resolution works\n\t\tit(\"should work with resolvePath\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\n\t\t\texpect(myProp.resolvePath(\"simple_property\")).to.equal(myProp.get(\"simple_property\"));\n\t\t\texpect(myProp.resolvePath('\"test.property\"')).to.equal(myProp.get(\"test.property\"));\n\t\t\texpect(myProp.resolvePath('\"test\\\\\"property\\\\\"\"')).to.equal(\n\t\t\t\tmyProp.get('test\"property\"'),\n\t\t\t);\n\t\t\texpect(myProp.resolvePath('\"test[property]\"')).to.equal(myProp.get(\"test[property]\"));\n\t\t\texpect(myProp.resolvePath('\"test[property]\".\".property.\"')).to.equal(\n\t\t\t\tmyProp.get(\"test[property]\").get(\".property.\"),\n\t\t\t);\n\t\t\texpect(myProp.resolvePath('\"test[property]\".\".property.\".test')).to.equal(\n\t\t\t\tmyProp.get(\"test[property]\").get(\".property.\").get(\"test\"),\n\t\t\t);\n\n\t\t\texpect(myProp.resolvePath(\"/\")).to.equal(myProp);\n\t\t\texpect(myProp.resolvePath(\"/simple_property\")).to.equal(myProp.get(\"simple_property\"));\n\t\t\texpect(myProp.get(\"simple_property\").resolvePath(\"/\")).to.equal(myProp);\n\t\t\texpect(myProp.get(\"simple_property\").resolvePath(\"/simple_property\")).to.equal(\n\t\t\t\tmyProp.get(\"simple_property\"),\n\t\t\t);\n\t\t});\n\n\t\tit(\"should return undefined for invalid paths\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\n\t\t\texpect(myProp.resolvePath(\"invalid_path\")).to.be.undefined;\n\t\t\texpect(myProp.resolvePath(\"invalid_path.invalid_child\")).to.be.undefined;\n\t\t});\n\t});\n\n\tdescribe(\"cleanDirty\", function () {\n\t\tit(\"should work for paths with special characters\", function () {\n\t\t\tvar property = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tproperty.resolvePath('\"test[property]\".\".property.\".test').value = \"test\";\n\t\t\tproperty.cleanDirty();\n\t\t\texpect(property._serialize(true)).to.be.empty;\n\t\t\texpect(property.getPendingChanges()).to.deep.equal(new ChangeSet({}));\n\t\t});\n\t});\n\n\tit(\"should clone the property set\", function (done) {\n\t\tvar nodeProperty = PropertyFactory.create(\"NodeProperty\");\n\n\t\tnodeProperty.deserialize({\n\t\t\tinsert: {\n\t\t\t\tString: {\n\t\t\t\t\tresult1: \"foo\",\n\t\t\t\t\tresult2: \"bar\",\n\t\t\t\t},\n\t\t\t\tNodeProperty: {\n\t\t\t\t\tresult3: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tUint32: {\n\t\t\t\t\t\t\t\tresult4: 4,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tvar clone = nodeProperty.clone();\n\n\t\texpect(nodeProperty._serialize(false)).to.eql(clone._serialize(false));\n\n\t\tdone();\n\t});\n\n\tit(\"should support reapplying dirty flags on non-identical changeSets\", function (done) {\n\t\tlet nodeProperty = PropertyFactory.create(\"NodeProperty\");\n\n\t\tnodeProperty.insert(\"result1\", PropertyFactory.create(\"String\"));\n\t\tnodeProperty.insert(\"result2\", PropertyFactory.create(\"String\"));\n\t\tnodeProperty.insert(\"result3\", PropertyFactory.create(\"Int32\"));\n\t\tnodeProperty.insert(\"result4\", PropertyFactory.create(\"Int32\"));\n\n\t\tconst changeset1 = {\n\t\t\tString: {\n\t\t\t\tresult1: \"foo\",\n\t\t\t\tresult2: \"bar\",\n\t\t\t},\n\t\t};\n\n\t\tconst changeset2 = {\n\t\t\tInt32: {\n\t\t\t\tresult3: 10,\n\t\t\t\tresult4: 11,\n\t\t\t},\n\t\t};\n\n\t\tnodeProperty._reapplyDirtyFlags(changeset1, changeset2);\n\n\t\tdone();\n\t});\n\n\tit(\"should be able to handle duplicate namespace\", function () {\n\t\tvar ANumber = {\n\t\t\ttypeid: \"autodesk.tests:ANumber-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"aValue\",\n\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tPropertyFactory.register(ANumber);\n\n\t\tvar SomeNumbers = {\n\t\t\ttypeid: \"autodesk.tests:SomeNumbers-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"aValue\", typeid: \"autodesk.tests:ANumber-1.0.0\" },\n\t\t\t\t{ id: \"anotherValue\", typeid: \"autodesk.tests:ANumber-1.0.0\" },\n\t\t\t\t{ id: \"thirdValue\", typeid: \"autodesk.tests:ANumber-1.0.0\" },\n\t\t\t],\n\t\t};\n\t\tPropertyFactory.register(SomeNumbers);\n\n\t\tvar originalSomeNumbers = PropertyFactory.create(SomeNumbers.typeid);\n\n\t\tlet root = PropertyFactory.create(\"NodeProperty\");\n\t\troot.insert(\"aValue\", originalSomeNumbers);\n\n\t\tvar someNumbers = root.resolvePath(\"aValue\");\n\t\texpect(someNumbers).to.equal(originalSomeNumbers);\n\t\tvar aNumber = root.resolvePath(\"aValue.aValue\");\n\t\texpect(aNumber).to.exist;\n\t\tvar aValue = root.resolvePath(\"aValue.aValue.aValue\");\n\t\texpect(aValue).to.exist;\n\t});\n\n\tdescribe(\"getContext\", function () {\n\t\tit(\"should work with context of single\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\texpect(myProp.getContext()).to.equal(\"single\");\n\t\t});\n\t\tit(\"should work with other contexts\", function () {\n\t\t\tvar arrayProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t\t\"array\",\n\t\t\t);\n\t\t\texpect(arrayProp.getContext()).to.equal(\"array\");\n\t\t\tvar mapProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t\t\"map\",\n\t\t\t);\n\t\t\texpect(mapProp.getContext()).to.equal(\"map\");\n\t\t});\n\t});\n\n\tdescribe(\"getFullTypeid\", function () {\n\t\tit(\"should return the typeid of the property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\texpect(myProp.getFullTypeid()).to.equal(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"getTypeid\", function () {\n\t\tit(\"should return the typeid of the property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\texpect(myProp.getTypeid()).to.equal(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"getId\", function () {\n\t\tit(\"should return the id of the property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tvar nested = myProp.get(\"test.property\");\n\t\t\texpect(nested.getId()).to.equal(\"test.property\");\n\t\t});\n\t});\n\n\tdescribe(\"getParent\", function () {\n\t\tit(\"should return the parent property\", function () {\n\t\t\tvar myProp = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:property.with.special.characters-1.0.0\",\n\t\t\t);\n\t\t\tvar nested = myProp.get(\"test.property\");\n\t\t\texpect(nested.getParent()).to.deep.equal(myProp);\n\t\t});\n\t});\n\n\t// Other aspects of traverseDown function are already tested. Missing BREAK_TRAVERSAL and paths only.\n\tdescribe(\"traverseDown, hasPendingChanges and getPendingChanges\", function () {\n\t\tvar BREAK_TRAVERSAL;\n\n\t\tbefore(function () {\n\t\t\tBREAK_TRAVERSAL = require(\"../..\").BaseProperty.BREAK_TRAVERSAL;\n\t\t\tvar TestTraversalObject = {\n\t\t\t\ttypeid: \"autodesk.tests:property.traversal-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"p1\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"p2\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"p2p1\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"p2p1p1\", typeid: \"String\" },\n\t\t\t\t\t\t\t\t\t{ id: \"p2p1p2\", typeid: \"String\" },\n\t\t\t\t\t\t\t\t\t{ id: \"p2p1p3\", typeid: \"String\" },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"p2p2\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"p2p2p1\", typeid: \"String\" },\n\t\t\t\t\t\t\t\t\t{ id: \"p2p2p2\", typeid: \"String\" },\n\t\t\t\t\t\t\t\t\t{ id: \"p2p2p3\", typeid: \"Int32\" },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ id: \"p3\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"p4\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"p4p1\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"p4p1p1\", typeid: \"String\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"p4p2\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"p4p2p1\", typeid: \"String\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(TestTraversalObject);\n\t\t});\n\n\t\tit(\"should stop when callback returns BREAK_TRAVERSAL\", function () {\n\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\n\t\t\tvar nbrCalls = 0;\n\t\t\tvar breakTrav = function (prop) {\n\t\t\t\tif (++nbrCalls === 5) {\n\t\t\t\t\treturn BREAK_TRAVERSAL;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t};\n\t\t\tproperty.traverseDown(breakTrav);\n\t\t\texpect(nbrCalls).to.equal(5);\n\t\t});\n\n\t\tit(\"should provide path of each prop\", function () {\n\t\t\tvar arrPaths = [];\n\t\t\tvar gatherPaths = function (prop, path) {\n\t\t\t\tarrPaths.push(path);\n\t\t\t};\n\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\tproperty.resolvePath(\"p4\").traverseDown(gatherPaths);\n\t\t\texpect(arrPaths).to.deep.equal([\"p4p1\", \"p4p1.p4p1p1\", \"p4p2\", \"p4p2.p4p2p1\"]);\n\t\t});\n\n\t\tit(\"should return pending changes\", function () {\n\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\texpect(property.resolvePath(\"p2\").getPendingChanges()).to.deep.equal(new ChangeSet({}));\n\t\t\texpect(property.resolvePath(\"p2\").hasPendingChanges()).to.be.false;\n\t\t\tproperty.resolvePath(\"p2.p2p1.p2p1p2\").value = \"Hi\";\n\t\t\tproperty.resolvePath(\"p2.p2p2.p2p2p1\").value = \"Hello\";\n\t\t\tproperty.resolvePath(\"p2.p2p2.p2p2p3\").value = 42;\n\t\t\texpect(property.resolvePath(\"p2\").getPendingChanges()).to.deep.equal(\n\t\t\t\tnew ChangeSet({\n\t\t\t\t\tInt32: { \"p2p2.p2p2p3\": 42 },\n\t\t\t\t\tString: { \"p2p1.p2p1p2\": \"Hi\", \"p2p2.p2p2p1\": \"Hello\" },\n\t\t\t\t}),\n\t\t\t);\n\t\t\texpect(property.resolvePath(\"p2\").hasPendingChanges()).to.be.true;\n\t\t});\n\n\t\tit(\"should output a pretty string with prettyPrint()\", function () {\n\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\tvar expectedPrettyStr =\n\t\t\t\t\"p2 (ContainerProperty):\\n\" +\n\t\t\t\t\" p2p1 (ContainerProperty):\\n\" +\n\t\t\t\t' p2p1p1 (String): \"\"\\n' +\n\t\t\t\t' p2p1p2 (String): \"\"\\n' +\n\t\t\t\t' p2p1p3 (String): \"\"\\n' +\n\t\t\t\t\" p2p2 (ContainerProperty):\\n\" +\n\t\t\t\t' p2p2p1 (String): \"\"\\n' +\n\t\t\t\t' p2p2p2 (String): \"\"\\n' +\n\t\t\t\t\" p2p2p3 (Int32): 0\\n\";\n\t\t\tvar prettyStr = \"\";\n\t\t\tproperty.resolvePath(\"p2\").prettyPrint(function (str) {\n\t\t\t\tprettyStr += str + \"\\n\";\n\t\t\t});\n\t\t\texpect(prettyStr).to.equal(expectedPrettyStr);\n\t\t});\n\t});\n\tdescribe(\"Ancestry relations should be resolved correctly\", function () {\n\t\t/**\n\t\t * creates a workspace\n\t\t * @return {property-properties.Workspace} workspace\n\t\t */\n\t\tfunction createRootProperty() {\n\t\t\treturn Promise.resolve(PropertyFactory.create(\"NodeProperty\"));\n\t\t}\n\n\t\tit(\"property should be ancestor of subproperty\", function () {\n\t\t\treturn createRootProperty().then(function (workspace) {\n\t\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\tvar subproperty = property.resolvePath(\"p2.p2p1.p2p1p2\");\n\t\t\t\tworkspace.insert(\"test\", property);\n\t\t\t\texpect(property.isAncestorOf(subproperty)).to.equal(true);\n\t\t\t});\n\t\t});\n\n\t\tit(\"property should not be ancestor itself\", function () {\n\t\t\treturn createRootProperty().then(function (workspace) {\n\t\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\texpect(property.isAncestorOf(property)).to.equal(false);\n\t\t\t});\n\t\t});\n\n\t\tit(\"property not in workspace should correctly resolve ancestry\", function () {\n\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\tvar subproperty = property.resolvePath(\"p2.p2p1.p2p1p2\");\n\t\t\texpect(property.isAncestorOf(subproperty)).to.equal(true);\n\t\t\texpect(subproperty.isDescendantOf(property)).to.equal(true);\n\t\t});\n\n\t\tit(\"property should be ancestor of subproperty\", function () {\n\t\t\treturn createRootProperty().then(function (workspace) {\n\t\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\tvar subproperty = property.resolvePath(\"p2.p2p1.p2p1p2\");\n\t\t\t\tworkspace.insert(\"test\", property);\n\t\t\t\texpect(property.isAncestorOf(subproperty)).to.equal(true);\n\t\t\t});\n\t\t});\n\n\t\tit(\"subproperty should be descendant of property\", function () {\n\t\t\treturn createRootProperty().then(function (workspace) {\n\t\t\t\tvar property = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\tvar subproperty = property.resolvePath(\"p2.p2p1.p2p1p2\");\n\t\t\t\tworkspace.insert(\"test\", property);\n\t\t\t\texpect(subproperty.isDescendantOf(property)).to.equal(true);\n\t\t\t});\n\t\t});\n\n\t\tit(\"property in array property should be descendant of array\", function () {\n\t\t\treturn createRootProperty().then(function (workspace) {\n\t\t\t\tvar property = PropertyFactory.create(\n\t\t\t\t\t\"autodesk.tests:property.traversal-1.0.0\",\n\t\t\t\t\t\"array\",\n\t\t\t\t);\n\t\t\t\tvar element = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\tproperty.push(element);\n\t\t\t\tvar subproperty = element.resolvePath(\"p2.p2p1.p2p1p2\");\n\t\t\t\tworkspace.insert(\"test\", property);\n\t\t\t\texpect(subproperty.isDescendantOf(property)).to.equal(true);\n\t\t\t});\n\t\t});\n\n\t\tit(\"array property should be ancestor of property in array\", function () {\n\t\t\treturn createRootProperty().then(function (workspace) {\n\t\t\t\tvar property = PropertyFactory.create(\n\t\t\t\t\t\"autodesk.tests:property.traversal-1.0.0\",\n\t\t\t\t\t\"array\",\n\t\t\t\t);\n\t\t\t\tvar element = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\tproperty.push(element);\n\t\t\t\tvar subproperty = element.resolvePath(\"p2.p2p1.p2p1p2\");\n\t\t\t\tworkspace.insert(\"test\", property);\n\t\t\t\texpect(property.isAncestorOf(subproperty)).to.equal(true);\n\t\t\t});\n\t\t});\n\n\t\tit(\"two different properties should not be related\", function () {\n\t\t\treturn createRootProperty().then(function (workspace) {\n\t\t\t\tvar prop1 = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\tvar prop2 = PropertyFactory.create(\"autodesk.tests:property.traversal-1.0.0\");\n\t\t\t\tworkspace.insert(\"test1\", prop1);\n\t\t\t\tworkspace.insert(\"test2\", prop2);\n\t\t\t\texpect(prop2.isAncestorOf(prop1)).to.equal(false);\n\t\t\t\texpect(prop2.isDescendantOf(prop1)).to.equal(false);\n\t\t\t\texpect(prop1.isAncestorOf(prop2)).to.equal(false);\n\t\t\t\texpect(prop1.isDescendantOf(prop2)).to.equal(false);\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
|
|
@@ -6,179 +6,185 @@
|
|
|
6
6
|
* @fileoverview In this file, we will test the functions related Container property object
|
|
7
7
|
* this will also tests parts of Property Factory that creates Container property
|
|
8
8
|
*/
|
|
9
|
-
const MSG = require(
|
|
10
|
-
const PropertyFactory = require(
|
|
11
|
-
describe(
|
|
9
|
+
const MSG = require("@fluid-experimental/property-common").constants.MSG;
|
|
10
|
+
const PropertyFactory = require("../..").PropertyFactory;
|
|
11
|
+
describe("ContainerProperty", function () {
|
|
12
12
|
beforeEach(() => {
|
|
13
13
|
PropertyFactory._clear();
|
|
14
14
|
});
|
|
15
|
-
describe(
|
|
16
|
-
it(
|
|
15
|
+
describe("Changeset", function () {
|
|
16
|
+
it("should not add created properties to the changeset on creation", function () {
|
|
17
17
|
const DefaultPrimitive = {
|
|
18
|
-
typeid:
|
|
18
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
19
19
|
properties: [
|
|
20
|
-
{ id:
|
|
21
|
-
{ id:
|
|
22
|
-
{ id:
|
|
20
|
+
{ id: "num", typeid: "Uint32" },
|
|
21
|
+
{ id: "bool", typeid: "Bool" },
|
|
22
|
+
{ id: "string", typeid: "String" },
|
|
23
23
|
],
|
|
24
24
|
};
|
|
25
25
|
const changeset = {
|
|
26
26
|
Uint32: { num: 0 },
|
|
27
27
|
Bool: { bool: false },
|
|
28
|
-
String: { string:
|
|
28
|
+
String: { string: "" },
|
|
29
29
|
};
|
|
30
30
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
31
|
-
const instance = PropertyFactory.create(
|
|
31
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
32
32
|
expect(instance._serialize(false, false)).to.deep.equal(changeset);
|
|
33
33
|
expect(instance._serialize(true, false)).to.be.empty;
|
|
34
34
|
});
|
|
35
|
-
it(
|
|
35
|
+
it("should add optional properties that have default values to the changeset on creation", function () {
|
|
36
36
|
const DefaultPrimitive = {
|
|
37
|
-
typeid:
|
|
37
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
38
38
|
properties: [
|
|
39
|
-
{ id:
|
|
40
|
-
{ id:
|
|
41
|
-
{ id:
|
|
39
|
+
{ id: "num", typeid: "Uint32", value: 111, optional: true },
|
|
40
|
+
{ id: "bool", typeid: "Bool", value: true, optional: true },
|
|
41
|
+
{ id: "string", typeid: "String", value: "basic", optional: true },
|
|
42
42
|
],
|
|
43
43
|
};
|
|
44
44
|
const changeset = {
|
|
45
45
|
insert: {
|
|
46
46
|
Uint32: { num: 111 },
|
|
47
47
|
Bool: { bool: true },
|
|
48
|
-
String: { string:
|
|
48
|
+
String: { string: "basic" },
|
|
49
49
|
},
|
|
50
50
|
};
|
|
51
51
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
52
|
-
const instance = PropertyFactory.create(
|
|
52
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
53
53
|
expect(instance._serialize(true, false)).to.deep.equal(changeset);
|
|
54
54
|
});
|
|
55
|
-
it(
|
|
55
|
+
it("should not add optional properties that do not have default values to the changeset on creation", function () {
|
|
56
56
|
const DefaultPrimitive = {
|
|
57
|
-
typeid:
|
|
57
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
58
58
|
properties: [
|
|
59
|
-
{ id:
|
|
60
|
-
{ id:
|
|
61
|
-
{ id:
|
|
59
|
+
{ id: "num", typeid: "Uint32", optional: true },
|
|
60
|
+
{ id: "bool", typeid: "Bool", optional: true },
|
|
61
|
+
{ id: "string", typeid: "String", optional: true },
|
|
62
62
|
],
|
|
63
63
|
};
|
|
64
64
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
65
|
-
const instance = PropertyFactory.create(
|
|
65
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
66
66
|
expect(instance._serialize(true, false)).to.be.empty;
|
|
67
67
|
});
|
|
68
68
|
});
|
|
69
|
-
describe(
|
|
70
|
-
it(
|
|
69
|
+
describe("Optional Properties", function () {
|
|
70
|
+
it("should not exist on creation if no value is specified", function () {
|
|
71
71
|
const DefaultPrimitive = {
|
|
72
|
-
typeid:
|
|
72
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
73
73
|
properties: [
|
|
74
|
-
{ id:
|
|
75
|
-
{ id:
|
|
76
|
-
{ id:
|
|
74
|
+
{ id: "num", typeid: "Uint32", optional: true },
|
|
75
|
+
{ id: "bool", typeid: "Bool", optional: true },
|
|
76
|
+
{ id: "string", typeid: "String", optional: true },
|
|
77
77
|
],
|
|
78
78
|
};
|
|
79
79
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
80
|
-
const instance = PropertyFactory.create(
|
|
81
|
-
expect(instance.get(
|
|
82
|
-
expect(instance.get(
|
|
83
|
-
expect(instance.get(
|
|
80
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
81
|
+
expect(instance.get("num")).to.be.undefined;
|
|
82
|
+
expect(instance.get("bool")).to.be.undefined;
|
|
83
|
+
expect(instance.get("string")).to.be.undefined;
|
|
84
84
|
});
|
|
85
|
-
it(
|
|
85
|
+
it("should exist on creation if value is specified", function () {
|
|
86
86
|
const DefaultPrimitive = {
|
|
87
|
-
typeid:
|
|
87
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
88
88
|
properties: [
|
|
89
|
-
{ id:
|
|
90
|
-
{ id:
|
|
91
|
-
{ id:
|
|
89
|
+
{ id: "num", typeid: "Uint32", value: 111, optional: true },
|
|
90
|
+
{ id: "bool", typeid: "Bool", value: true, optional: true },
|
|
91
|
+
{ id: "string", typeid: "String", value: "basic", optional: true },
|
|
92
92
|
],
|
|
93
93
|
};
|
|
94
94
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
95
|
-
const instance = PropertyFactory.create(
|
|
96
|
-
expect(instance.get(
|
|
97
|
-
expect(instance.get(
|
|
98
|
-
expect(instance.get(
|
|
95
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
96
|
+
expect(instance.get("num").getValue()).to.equal(111);
|
|
97
|
+
expect(instance.get("bool").getValue()).to.equal(true);
|
|
98
|
+
expect(instance.get("string").getValue()).to.equal("basic");
|
|
99
99
|
});
|
|
100
|
-
it(
|
|
100
|
+
it("can be inserted", function () {
|
|
101
101
|
const DefaultPrimitive = {
|
|
102
|
-
typeid:
|
|
102
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
103
103
|
properties: [
|
|
104
|
-
{ id:
|
|
105
|
-
{ id:
|
|
106
|
-
{ id:
|
|
104
|
+
{ id: "num", typeid: "Uint32", optional: true },
|
|
105
|
+
{ id: "bool", typeid: "Bool", optional: true },
|
|
106
|
+
{ id: "string", typeid: "String", optional: true },
|
|
107
107
|
],
|
|
108
108
|
};
|
|
109
109
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
110
|
-
const instance = PropertyFactory.create(
|
|
111
|
-
const num = PropertyFactory.create(
|
|
110
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
111
|
+
const num = PropertyFactory.create("Uint32");
|
|
112
112
|
num.setValue(111);
|
|
113
|
-
const string = PropertyFactory.create(
|
|
114
|
-
string.setValue(
|
|
115
|
-
const bool = PropertyFactory.create(
|
|
113
|
+
const string = PropertyFactory.create("String");
|
|
114
|
+
string.setValue("basic");
|
|
115
|
+
const bool = PropertyFactory.create("Bool");
|
|
116
116
|
bool.setValue(true);
|
|
117
|
-
instance.insert(
|
|
118
|
-
instance.insert(
|
|
119
|
-
instance.insert(
|
|
120
|
-
expect(instance.get(
|
|
121
|
-
expect(instance.get(
|
|
122
|
-
expect(instance.get(
|
|
117
|
+
instance.insert("num", num);
|
|
118
|
+
instance.insert("bool", bool);
|
|
119
|
+
instance.insert("string", string);
|
|
120
|
+
expect(instance.get("num").getValue()).to.equal(111);
|
|
121
|
+
expect(instance.get("bool").getValue()).to.equal(true);
|
|
122
|
+
expect(instance.get("string").getValue()).to.equal("basic");
|
|
123
123
|
});
|
|
124
|
-
it(
|
|
124
|
+
it("can be removed", function () {
|
|
125
125
|
const DefaultPrimitive = {
|
|
126
|
-
typeid:
|
|
126
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
127
127
|
properties: [
|
|
128
|
-
{ id:
|
|
129
|
-
{ id:
|
|
130
|
-
{ id:
|
|
128
|
+
{ id: "num", typeid: "Uint32", value: 111, optional: true },
|
|
129
|
+
{ id: "bool", typeid: "Bool", value: true, optional: true },
|
|
130
|
+
{ id: "string", typeid: "String", value: "basic", optional: true },
|
|
131
131
|
],
|
|
132
132
|
};
|
|
133
133
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
134
|
-
const instance = PropertyFactory.create(
|
|
135
|
-
instance.remove(
|
|
136
|
-
instance.remove(
|
|
137
|
-
instance.remove(
|
|
138
|
-
expect(instance.get(
|
|
139
|
-
expect(instance.get(
|
|
140
|
-
expect(instance.get(
|
|
134
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
135
|
+
instance.remove("num");
|
|
136
|
+
instance.remove("bool");
|
|
137
|
+
instance.remove("string");
|
|
138
|
+
expect(instance.get("num")).to.be.undefined;
|
|
139
|
+
expect(instance.get("bool")).to.be.undefined;
|
|
140
|
+
expect(instance.get("string")).to.be.undefined;
|
|
141
141
|
});
|
|
142
|
-
it(
|
|
142
|
+
it("throws error if inserted property has unknown id", function () {
|
|
143
143
|
const DefaultPrimitive = {
|
|
144
|
-
typeid:
|
|
144
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
145
145
|
properties: [
|
|
146
|
-
{ id:
|
|
147
|
-
{ id:
|
|
148
|
-
{ id:
|
|
146
|
+
{ id: "num", typeid: "Uint32", value: 111, optional: true },
|
|
147
|
+
{ id: "bool", typeid: "Bool", value: true, optional: true },
|
|
148
|
+
{ id: "string", typeid: "String", value: "basic", optional: true },
|
|
149
149
|
],
|
|
150
150
|
};
|
|
151
151
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
152
|
-
const instance = PropertyFactory.create(
|
|
153
|
-
const prop = PropertyFactory.create(
|
|
154
|
-
expect(() => {
|
|
152
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
153
|
+
const prop = PropertyFactory.create("String");
|
|
154
|
+
expect(() => {
|
|
155
|
+
instance.insert("badId", prop);
|
|
156
|
+
}).to.throw(MSG.CANNOT_INSERT_UNKNOWN_PROPERTY + "badId");
|
|
155
157
|
});
|
|
156
|
-
it(
|
|
158
|
+
it("throws error if inserted property typeid does not match corresponding typeid", function () {
|
|
157
159
|
const DefaultPrimitive = {
|
|
158
|
-
typeid:
|
|
160
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
159
161
|
properties: [
|
|
160
|
-
{ id:
|
|
161
|
-
{ id:
|
|
162
|
-
{ id:
|
|
162
|
+
{ id: "num", typeid: "Uint32", optional: true },
|
|
163
|
+
{ id: "bool", typeid: "Bool", optional: true },
|
|
164
|
+
{ id: "string", typeid: "String", optional: true },
|
|
163
165
|
],
|
|
164
166
|
};
|
|
165
167
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
166
|
-
const instance = PropertyFactory.create(
|
|
167
|
-
const prop = PropertyFactory.create(
|
|
168
|
-
expect(() => {
|
|
168
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
169
|
+
const prop = PropertyFactory.create("String");
|
|
170
|
+
expect(() => {
|
|
171
|
+
instance.insert("num", prop);
|
|
172
|
+
}).to.throw(MSG.MISMATCHING_PROPERTY_TYPEID);
|
|
169
173
|
});
|
|
170
|
-
it(
|
|
174
|
+
it("throws error if attempting to remove a not optional property", function () {
|
|
171
175
|
const DefaultPrimitive = {
|
|
172
|
-
typeid:
|
|
176
|
+
typeid: "SimpleTest:OptionalPrimitive-1.0.0",
|
|
173
177
|
properties: [
|
|
174
|
-
{ id:
|
|
175
|
-
{ id:
|
|
176
|
-
{ id:
|
|
178
|
+
{ id: "num", typeid: "Uint32", value: 111 },
|
|
179
|
+
{ id: "bool", typeid: "Bool", value: true, optional: true },
|
|
180
|
+
{ id: "string", typeid: "String", value: "basic", optional: true },
|
|
177
181
|
],
|
|
178
182
|
};
|
|
179
183
|
PropertyFactory._reregister(DefaultPrimitive);
|
|
180
|
-
const instance = PropertyFactory.create(
|
|
181
|
-
expect(() => {
|
|
184
|
+
const instance = PropertyFactory.create("SimpleTest:OptionalPrimitive-1.0.0");
|
|
185
|
+
expect(() => {
|
|
186
|
+
instance.remove("num");
|
|
187
|
+
}).to.throw(MSG.CANNOT_REMOVE_NONE_OPTIONAL_PROP + "num");
|
|
182
188
|
});
|
|
183
189
|
});
|
|
184
190
|
});
|