@fluid-experimental/property-changeset 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.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.
Files changed (205) hide show
  1. package/dist/ajvFactory.cjs +19 -0
  2. package/dist/ajvFactory.cjs.map +1 -0
  3. package/dist/ajvFactory.d.cts +7 -0
  4. package/dist/ajvFactory.d.cts.map +1 -0
  5. package/dist/changeset.d.ts +3 -6
  6. package/dist/changeset.d.ts.map +1 -1
  7. package/dist/changeset.js +75 -75
  8. package/dist/changeset.js.map +1 -1
  9. package/dist/changeset_operations/array.d.ts +6 -2
  10. package/dist/changeset_operations/array.d.ts.map +1 -1
  11. package/dist/changeset_operations/array.js +94 -96
  12. package/dist/changeset_operations/array.js.map +1 -1
  13. package/dist/changeset_operations/arrayChangesetIterator.d.ts +2 -5
  14. package/dist/changeset_operations/arrayChangesetIterator.d.ts.map +1 -1
  15. package/dist/changeset_operations/arrayChangesetIterator.js +11 -12
  16. package/dist/changeset_operations/arrayChangesetIterator.js.map +1 -1
  17. package/dist/changeset_operations/changesetConflictTypes.d.ts.map +1 -1
  18. package/dist/changeset_operations/changesetConflictTypes.js +2 -2
  19. package/dist/changeset_operations/changesetConflictTypes.js.map +1 -1
  20. package/dist/changeset_operations/indexedCollection.d.ts +1 -4
  21. package/dist/changeset_operations/indexedCollection.d.ts.map +1 -1
  22. package/dist/changeset_operations/indexedCollection.js +48 -49
  23. package/dist/changeset_operations/indexedCollection.js.map +1 -1
  24. package/dist/changeset_operations/isEmptyChangeset.d.ts +1 -4
  25. package/dist/changeset_operations/isEmptyChangeset.d.ts.map +1 -1
  26. package/dist/changeset_operations/isEmptyChangeset.js +9 -9
  27. package/dist/changeset_operations/isEmptyChangeset.js.map +1 -1
  28. package/dist/helpers/typeidHelper.d.ts +0 -3
  29. package/dist/helpers/typeidHelper.d.ts.map +1 -1
  30. package/dist/helpers/typeidHelper.js +10 -10
  31. package/dist/helpers/typeidHelper.js.map +1 -1
  32. package/dist/index.d.ts +8 -8
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +19 -19
  35. package/dist/index.js.map +1 -1
  36. package/dist/isReservedKeyword.d.ts.map +1 -1
  37. package/dist/isReservedKeyword.js +2 -2
  38. package/dist/isReservedKeyword.js.map +1 -1
  39. package/dist/package.json +3 -0
  40. package/dist/pathHelper.d.ts +0 -3
  41. package/dist/pathHelper.d.ts.map +1 -1
  42. package/dist/pathHelper.js +2 -2
  43. package/dist/pathHelper.js.map +1 -1
  44. package/dist/rebase.js +8 -8
  45. package/dist/rebase.js.map +1 -1
  46. package/dist/templateSchema.d.ts.map +1 -1
  47. package/dist/templateSchema.js +2 -2
  48. package/dist/templateSchema.js.map +1 -1
  49. package/dist/templateValidator.d.ts +1 -1
  50. package/dist/templateValidator.d.ts.map +1 -1
  51. package/dist/templateValidator.js +49 -54
  52. package/dist/templateValidator.js.map +1 -1
  53. package/dist/test/array.spec.js +34 -36
  54. package/dist/test/array.spec.js.map +1 -1
  55. package/dist/test/indexedCollection.spec.js +9 -6
  56. package/dist/test/indexedCollection.spec.js.map +1 -1
  57. package/dist/test/map.spec.js +4 -4
  58. package/dist/test/map.spec.js.map +1 -1
  59. package/dist/test/pathHelper.spec.js +185 -185
  60. package/dist/test/pathHelper.spec.js.map +1 -1
  61. package/dist/test/reversibleCs.spec.js +5 -5
  62. package/dist/test/reversibleCs.spec.js.map +1 -1
  63. package/dist/test/schemaValidator.js +12 -11
  64. package/dist/test/schemaValidator.js.map +1 -1
  65. package/dist/test/schemas/badBothPropertiesAndTypeid.js +18 -18
  66. package/dist/test/schemas/badBothPropertiesAndTypeid.js.map +1 -1
  67. package/dist/test/schemas/badInvalidSemverInTypeid.js +40 -40
  68. package/dist/test/schemas/badInvalidSemverInTypeid.js.map +1 -1
  69. package/dist/test/schemas/badMissingSemverInTypeid.js +40 -40
  70. package/dist/test/schemas/badMissingSemverInTypeid.js.map +1 -1
  71. package/dist/test/schemas/badNestedProperties.js +40 -40
  72. package/dist/test/schemas/badNestedProperties.js.map +1 -1
  73. package/dist/test/schemas/badPrimitiveTypeid.js +25 -25
  74. package/dist/test/schemas/badPrimitiveTypeid.js.map +1 -1
  75. package/dist/test/schemas/badVersionedTypeid.js +41 -41
  76. package/dist/test/schemas/badVersionedTypeid.js.map +1 -1
  77. package/dist/test/schemas/goodColorPalette.js +15 -15
  78. package/dist/test/schemas/goodColorPalette.js.map +1 -1
  79. package/dist/test/schemas/goodDraftAsVersion.js +12 -12
  80. package/dist/test/schemas/goodDraftAsVersion.js.map +1 -1
  81. package/dist/test/schemas/goodPointId.js +40 -40
  82. package/dist/test/schemas/goodPointId.js.map +1 -1
  83. package/dist/test/schemas/goodReferenceAndRegular.js +16 -16
  84. package/dist/test/schemas/goodReferenceAndRegular.js.map +1 -1
  85. package/dist/test/schemas/goodReservedTypes.js +22 -22
  86. package/dist/test/schemas/goodReservedTypes.js.map +1 -1
  87. package/dist/test/schemas/goodUIBorder.js +34 -34
  88. package/dist/test/schemas/goodUIBorder.js.map +1 -1
  89. package/dist/test/schemas/index.js +55 -0
  90. package/dist/test/schemas/index.js.map +1 -0
  91. package/dist/test/tsconfig.cjs.tsbuildinfo +1 -0
  92. package/dist/test/validator/templateSyntax.spec.js +20 -25
  93. package/dist/test/validator/templateSyntax.spec.js.map +1 -1
  94. package/dist/test/validator/templateValidator.spec.js +118 -89
  95. package/dist/test/validator/templateValidator.spec.js.map +1 -1
  96. package/dist/test/validator/typeidHelper.spec.js +42 -41
  97. package/dist/test/validator/typeidHelper.spec.js.map +1 -1
  98. package/dist/utils.d.ts +17 -13
  99. package/dist/utils.d.ts.map +1 -1
  100. package/dist/utils.js +79 -79
  101. package/dist/utils.js.map +1 -1
  102. package/dist/validationResultBuilder.d.ts +2 -1
  103. package/dist/validationResultBuilder.d.ts.map +1 -1
  104. package/dist/validationResultBuilder.js.map +1 -1
  105. package/lib/ajvFactory.cjs +19 -0
  106. package/lib/ajvFactory.cjs.map +1 -0
  107. package/lib/ajvFactory.d.cts +7 -0
  108. package/lib/ajvFactory.d.cts.map +1 -0
  109. package/lib/changeset.d.ts +3 -6
  110. package/lib/changeset.d.ts.map +1 -1
  111. package/lib/changeset.js +16 -16
  112. package/lib/changeset.js.map +1 -1
  113. package/lib/changeset_operations/array.d.ts +6 -2
  114. package/lib/changeset_operations/array.d.ts.map +1 -1
  115. package/lib/changeset_operations/array.js +7 -9
  116. package/lib/changeset_operations/array.js.map +1 -1
  117. package/lib/changeset_operations/arrayChangesetIterator.d.ts +2 -5
  118. package/lib/changeset_operations/arrayChangesetIterator.d.ts.map +1 -1
  119. package/lib/changeset_operations/arrayChangesetIterator.js +3 -4
  120. package/lib/changeset_operations/arrayChangesetIterator.js.map +1 -1
  121. package/lib/changeset_operations/changesetConflictTypes.d.ts.map +1 -1
  122. package/lib/changeset_operations/changesetConflictTypes.js.map +1 -1
  123. package/lib/changeset_operations/indexedCollection.d.ts +1 -4
  124. package/lib/changeset_operations/indexedCollection.d.ts.map +1 -1
  125. package/lib/changeset_operations/indexedCollection.js +10 -11
  126. package/lib/changeset_operations/indexedCollection.js.map +1 -1
  127. package/lib/changeset_operations/isEmptyChangeset.d.ts +1 -4
  128. package/lib/changeset_operations/isEmptyChangeset.d.ts.map +1 -1
  129. package/lib/changeset_operations/isEmptyChangeset.js +3 -3
  130. package/lib/changeset_operations/isEmptyChangeset.js.map +1 -1
  131. package/lib/helpers/typeidHelper.d.ts +0 -3
  132. package/lib/helpers/typeidHelper.d.ts.map +1 -1
  133. package/lib/helpers/typeidHelper.js +1 -1
  134. package/lib/helpers/typeidHelper.js.map +1 -1
  135. package/lib/index.d.ts +8 -8
  136. package/lib/index.d.ts.map +1 -1
  137. package/lib/index.js +8 -8
  138. package/lib/index.js.map +1 -1
  139. package/lib/isReservedKeyword.d.ts.map +1 -1
  140. package/lib/isReservedKeyword.js.map +1 -1
  141. package/lib/pathHelper.d.ts +0 -3
  142. package/lib/pathHelper.d.ts.map +1 -1
  143. package/lib/pathHelper.js.map +1 -1
  144. package/lib/rebase.js +2 -2
  145. package/lib/rebase.js.map +1 -1
  146. package/lib/templateSchema.d.ts.map +1 -1
  147. package/lib/templateSchema.js.map +1 -1
  148. package/lib/templateValidator.d.ts +1 -1
  149. package/lib/templateValidator.d.ts.map +1 -1
  150. package/lib/templateValidator.js +24 -29
  151. package/lib/templateValidator.js.map +1 -1
  152. package/lib/test/array.spec.js +768 -0
  153. package/lib/test/array.spec.js.map +1 -0
  154. package/lib/test/indexedCollection.spec.js +75 -0
  155. package/lib/test/indexedCollection.spec.js.map +1 -0
  156. package/lib/test/map.spec.js +17 -0
  157. package/lib/test/map.spec.js.map +1 -0
  158. package/lib/test/pathHelper.spec.js +435 -0
  159. package/lib/test/pathHelper.spec.js.map +1 -0
  160. package/lib/test/reversibleCs.spec.js +42 -0
  161. package/lib/test/reversibleCs.spec.js.map +1 -0
  162. package/lib/test/schemaValidator.js +103 -0
  163. package/lib/test/schemaValidator.js.map +1 -0
  164. package/lib/test/schemas/badBothPropertiesAndTypeid.js +24 -0
  165. package/lib/test/schemas/badBothPropertiesAndTypeid.js.map +1 -0
  166. package/lib/test/schemas/badInvalidSemverInTypeid.js +46 -0
  167. package/lib/test/schemas/badInvalidSemverInTypeid.js.map +1 -0
  168. package/lib/test/schemas/badMissingSemverInTypeid.js +46 -0
  169. package/lib/test/schemas/badMissingSemverInTypeid.js.map +1 -0
  170. package/lib/test/schemas/badNestedProperties.js +46 -0
  171. package/lib/test/schemas/badNestedProperties.js.map +1 -0
  172. package/lib/test/schemas/badPrimitiveTypeid.js +31 -0
  173. package/lib/test/schemas/badPrimitiveTypeid.js.map +1 -0
  174. package/lib/test/schemas/badVersionedTypeid.js +47 -0
  175. package/lib/test/schemas/badVersionedTypeid.js.map +1 -0
  176. package/lib/test/schemas/goodColorPalette.js +21 -0
  177. package/lib/test/schemas/goodColorPalette.js.map +1 -0
  178. package/lib/test/schemas/goodDraftAsVersion.js +18 -0
  179. package/lib/test/schemas/goodDraftAsVersion.js.map +1 -0
  180. package/lib/test/schemas/goodPointId.js +46 -0
  181. package/lib/test/schemas/goodPointId.js.map +1 -0
  182. package/lib/test/schemas/goodReferenceAndRegular.js +22 -0
  183. package/lib/test/schemas/goodReferenceAndRegular.js.map +1 -0
  184. package/lib/test/schemas/goodReservedTypes.js +29 -0
  185. package/lib/test/schemas/goodReservedTypes.js.map +1 -0
  186. package/lib/test/schemas/goodUIBorder.js +41 -0
  187. package/lib/test/schemas/goodUIBorder.js.map +1 -0
  188. package/lib/test/schemas/index.js +29 -0
  189. package/lib/test/schemas/index.js.map +1 -0
  190. package/lib/test/tsconfig.tsbuildinfo +1 -0
  191. package/lib/test/validator/templateSyntax.spec.js +83 -0
  192. package/lib/test/validator/templateSyntax.spec.js.map +1 -0
  193. package/lib/test/validator/templateValidator.spec.js +1022 -0
  194. package/lib/test/validator/templateValidator.spec.js.map +1 -0
  195. package/lib/test/validator/typeidHelper.spec.js +142 -0
  196. package/lib/test/validator/typeidHelper.spec.js.map +1 -0
  197. package/lib/utils.d.ts +17 -13
  198. package/lib/utils.d.ts.map +1 -1
  199. package/lib/utils.js +23 -23
  200. package/lib/utils.js.map +1 -1
  201. package/lib/validationResultBuilder.d.ts +2 -1
  202. package/lib/validationResultBuilder.d.ts.map +1 -1
  203. package/lib/validationResultBuilder.js.map +1 -1
  204. package/package.json +37 -16
  205. package/dist/test/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateValidator.spec.js","sourceRoot":"","sources":["../../../src/test/validator/templateValidator.spec.ts"],"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/* eslint no-unused-expressions: 0 */\n\n// Lint disable to avoid needing to place `async` on many test functions\n// as validity of testing is in general questionable and trying to avoid\n// changes.\n/* eslint-disable @typescript-eslint/promise-function-async */\n\n/**\n * @fileoverview In this file, we will test template validation.\n */\n\nimport { constants } from \"@fluid-experimental/property-common\";\nimport { expect } from \"chai\";\nimport semver from \"semver\";\n\nimport { TemplateValidator } from \"../../templateValidator.js\";\nimport type { SchemaValidationResult } from \"../../validationResultBuilder.js\";\nimport { SchemaValidator } from \"../schemaValidator.js\";\nimport {\n\tbadInvalidSemverInTypeid,\n\tbadMissingSemverInTypeid,\n\tbadPrimitiveTypeid,\n\tgoodPointId,\n\tgoodReservedTypes,\n\tgoodUIBorder,\n} from \"../schemas/index.js\";\n\n(function () {\n\tconst MSG = constants.MSG;\n\n\tconst performValidation = function (\n\t\tasync: boolean,\n\t\ttemplate,\n\t\ttemplatePrevious,\n\t\tskipSemver,\n\t\tasyncErrorMessage?,\n\t): Promise<SchemaValidationResult> {\n\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t// @ts-expect-error - per the catch and no throw below\n\t\treturn async\n\t\t\t? schemaValidator\n\t\t\t\t\t.validate(template, templatePrevious, async, skipSemver)\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\texpect(error.message).to.have.string(asyncErrorMessage);\n\t\t\t\t\t\t// This really should re-throw the error. As it stands this\n\t\t\t\t\t\t// catch returns `undefined` which is not SchemaValidationResult.\n\t\t\t\t\t\t// Throwing will cause \"fail: previous template: invalid semver\"\n\t\t\t\t\t\t// test case to fail with uncaught error.\n\t\t\t\t\t\t// This also has impact on the malformed validate function below.\n\t\t\t\t\t\t// throw error;\n\t\t\t\t\t})\n\t\t\t: // A better pattern is simply Promise.resolve(...). However without all callers\n\t\t\t // properly specifying they are `async` (lint disabled for file), they may fail.\n\t\t\t // In particular see test case\n\t\t\t // \"should fail if map with context key type typeid is not constant\"\n\t\t\t new Promise((resolve) => {\n\t\t\t\t\tresolve(\n\t\t\t\t\t\tschemaValidator.validate(template, templatePrevious, async, skipSemver),\n\t\t\t\t\t);\n\t\t\t });\n\t};\n\n\t// Performs both synchronous and asynchronous validation\n\tlet validate = function (\n\t\texpectations: (result: SchemaValidationResult) => SchemaValidationResult,\n\t\ttemplate?,\n\t\ttemplatePrevious?,\n\t\tskipSemver?,\n\t\tasyncErrorMessage?,\n\t) {\n\t\treturn performValidation(false, template, templatePrevious, skipSemver)\n\t\t\t.then(expectations)\n\t\t\t.then(\n\t\t\t\t// This patten is invalid. The `then` parameter is expected to be callable.\n\t\t\t\t// Instead performValidation is called and its result is is called. Or at least\n\t\t\t\t// should be. As set up the following .then is executed (apparently) on the\n\t\t\t\t// results of the prior performValidation. This could be address with this prefix:\n\t\t\t\t// async () =>\n\t\t\t\t// However doing so causes tests to fail. Testing coming through here appears\n\t\t\t\t// invalid.\n\t\t\t\t// @ts-expect-error\n\t\t\t\tperformValidation(true, template, templatePrevious, skipSemver, asyncErrorMessage),\n\t\t\t)\n\t\t\t.then(expectations);\n\t};\n\n\tdescribe(\"Template Validation\", function () {\n\t\t// --- INPUT ---\n\t\tdescribe(\"input validation\", function () {\n\t\t\tit(\"fail: empty template\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.NO_TEMPLATE);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations);\n\t\t\t});\n\n\t\t\tit(\"fail: template with no typeid\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MISSING_TYPE_ID);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, {});\n\t\t\t});\n\t\t});\n\n\t\t// --- TYPEID ---\n\t\tdescribe(\"typeid validation\", function () {\n\t\t\tit(\"pass: valid typeid\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: missing semver\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badMissingSemverInTypeid.templateSchema));\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\"'TeamLeoValidation2:PointID' is not valid\",\n\t\t\t\t\t);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 1\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 2\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-1.0.01\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.INVALID_VERSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: previous template: invalid semver\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet badTypeId = \"TeamLeoValidation2:PointID-1.0.0.1\";\n\t\t\t\ttemplatePrevious.typeid = badTypeId;\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(badTypeId);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(`'${badTypeId}' is not valid`);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(\n\t\t\t\t\texpectations,\n\t\t\t\t\ttemplate,\n\t\t\t\t\ttemplatePrevious,\n\t\t\t\t\tfalse,\n\t\t\t\t\t\"Invalid Version: 1.0.0.1\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t// --- Template versioning ---\n\t\tdescribe(\"template versioning\", function () {\n\t\t\tit(\"fail: version regression: 1.0.0 -> 0.9.9\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.9.9\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tdescribe(\"same version\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'id'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented patch level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: unstable with major content change: 0.0.1 -> 0.0.2\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.typeid = \"TeamLeoValidation2:PointID-0.0.1\";\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.0.2\";\n\t\t\t\t\ttemplate.properties[1].typeid = \"TeamLeoValidation2:ColorID-9.0.0\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(2); // 1st for the delete and the 2nd for the add\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented minor level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented major level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"skip semver validation\", function () {\n\t\t\tit(\"pass: deep equal on scrambled arrays\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet tmp = template.properties[0].properties[0];\n\t\t\t\ttemplate.properties[0].properties[0] = template.properties[0].properties[2];\n\t\t\t\ttemplate.properties[0].properties[2] = tmp;\n\t\t\t\ttmp = template.properties[1];\n\t\t\t\ttemplate.properties[1] = template.properties[2];\n\t\t\t\ttemplate.properties[2] = tmp;\n\t\t\t\t// Skip semver validation to cause a deep compare\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: deep equal with version regression\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: preserves input templates\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet copies = [\n\t\t\t\t\tJSON.parse(JSON.stringify(templatePrevious)),\n\t\t\t\t\tJSON.parse(JSON.stringify(template)),\n\t\t\t\t];\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(templatePrevious).to.deep.equal(copies[0]);\n\t\t\t\t\texpect(template).to.deep.equal(copies[1]);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tit(\"fail: changed value\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"syntax validation\", function () {\n\t\t\tit(\"pass: validate a simple file\", function () {\n\t\t\t\tlet template = goodPointId.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid file\", function () {\n\t\t\t\tlet template = badPrimitiveTypeid.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\texpect(result.unresolvedTypes.length).to.equal(1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass a schema with an empty array of properties\", function () {\n\t\t\t\tlet EmptyPropertySchema = {\n\t\t\t\t\ttypeid: \"Test:EmptyPropertySchema-1.0.0\",\n\t\t\t\t\tproperties: [],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, EmptyPropertySchema, null);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"bugs\", function () {\n\t\t\tdescribe(\"@bugfix Template validation with multiple inheritance\", function () {\n\t\t\t\tit(\"pass: deep equal with multiple inheritance\", function () {\n\t\t\t\t\tlet templateString =\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}';\n\t\t\t\t\tlet templatePrevious = JSON.parse(templateString);\n\t\t\t\t\tlet template = JSON.parse(templateString);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deep equal with out of order multiple inheritance\", function () {\n\t\t\t\t\tlet template = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}',\n\t\t\t\t\t);\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NodeProperty\",\"NamedProperty\"]}',\n\t\t\t\t\t);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\n\t\t\t\t\"@bugfix Local templates with 'abstract' properties fail validation \" +\n\t\t\t\t\t\"with remote one.\",\n\t\t\t\t() => {\n\t\t\t\t\tdescribe(\"pass: deep equal between no properties and an empty properties array\", () => {\n\t\t\t\t\t\tlet templateArray = {\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t\t\tproperties: [],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet templateAbstract = {\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tit(\"source is abstract and target is an empty properties array\", function () {\n\t\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn validate(expectations, templateAbstract, templateArray);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tit(\"target is abstract and source is an empty properties array\", function () {\n\t\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn validate(expectations, templateArray, templateAbstract);\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\tdescribe(\"Constants\", function () {\n\t\t\tbefore(function () {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tnew TemplateValidator({\n\t\t\t\t\tskipSemver: true,\n\t\t\t\t\tinheritsFrom: schemaValidator.inheritsFrom as any,\n\t\t\t\t\thasSchema: schemaValidator.hasSchema as any,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet expectationsGenerator = function (msg) {\n\t\t\t\treturn function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\texpect(result.errors[0].message).to.equal(msg);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tit(\"should pass a valid template\", function () {\n\t\t\t\tlet ConstantValid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantValid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"valid\", typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantValid, null);\n\t\t\t});\n\n\t\t\tit(\"should fail if constants array has no elements\", function () {\n\t\t\t\tlet ConstantEmptyArray = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantEmptyArray-1.0.0\",\n\t\t\t\t\tconstants: [],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants must NOT have fewer than 1 items\"),\n\t\t\t\t\tConstantEmptyArray,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have an id\", function () {\n\t\t\t\tlet ConstantNoId = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoId-1.0.0\",\n\t\t\t\t\tconstants: [{ typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants/0 must have required property 'id'\"),\n\t\t\t\t\tConstantNoId,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have a typeid\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\t// console.log(result.errors);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(5);\n\t\t\t\t\t\texpect(result.errors[3].message).to.include(\n\t\t\t\t\t\t\t\"must have required property 'inherits'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\texpect(result.errors[4].message).to.include(\n\t\t\t\t\t\t\t\"/constants/0 must have required property 'typeid'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoTypeid,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant does not have a typeid but maybe inherits from elsewhere\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tinherits: \"ConstantTest:ConstantParentWithTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoTypeid, null);\n\t\t\t});\n\n\t\t\tit(\"should not fail if constant does not have a value or typedValue\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", typeid: \"String\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoValue, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant map with context key type typeid has typeids as keys\", function () {\n\t\t\t\tlet Constant = {\n\t\t\t\t\ttypeid: \"ConstantTest:Constant-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\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\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, Constant, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type that is not a valid value\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"badvalue\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\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\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.include(\n\t\t\t\t\t\t\t\"should match one of the following: typeid,string\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoValue,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type typeid has invalid typeids as keys\", function () {\n\t\t\t\tlet ConstantMapWithBadKeys = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantMapWithBadKeys-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: { NotATypeId: 1, AlsoNotATypeId: -1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(2);\n\t\t\t\t\texpect(result.errors[0].message).to.include(\n\t\t\t\t\t\tMSG.KEY_MUST_BE_TYPEID + \"NotATypeId\",\n\t\t\t\t\t);\n\t\t\t\t\texpect(result.errors[1].message).to.include(\n\t\t\t\t\t\tMSG.KEY_MUST_BE_TYPEID + \"AlsoNotATypeId\",\n\t\t\t\t\t);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantMapWithBadKeys, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if map with context key type typeid is not constant\", function () {\n\t\t\t\tlet ConstantMapWithProperty = {\n\t\t\t\t\ttypeid: \"ConstantTest:Outerprop-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\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\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\tthrow new Error(\"This should not be called\");\n\t\t\t\t};\n\t\t\t\tlet failExpectations = function (error) {\n\t\t\t\t\texpect(error.toString()).to.include(\n\t\t\t\t\t\t\"SV-013: A map with typeids as keys must be constant\",\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\treturn performValidation(false, ConstantMapWithProperty, null, true)\n\t\t\t\t\t.then(expectations)\n\t\t\t\t\t.catch(failExpectations);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Async validation\", function () {\n\t\t\tit(\"can perform context validation asynchronously\", function (done) {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tlet templateValidator = new TemplateValidator({\n\t\t\t\t\tinheritsFromAsync: schemaValidator.inheritsFromAsync as any,\n\t\t\t\t\thasSchemaAsync: schemaValidator.hasSchemaAsync as any,\n\t\t\t\t});\n\n\t\t\t\t// Doesn't inherit from 'NamedProperty'. Will cause an error\n\t\t\t\tlet grandParentSchema = {\n\t\t\t\t\ttypeid: \"test:grandparentschema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tlet parentSchema = {\n\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\tinherits: [\"test:grandparentschema-1.0.0\"],\n\t\t\t\t};\n\n\t\t\t\tlet childSchema = {\n\t\t\t\t\ttypeid: \"test:childchema-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tschemaValidator.register(grandParentSchema);\n\t\t\t\tschemaValidator.register(parentSchema);\n\n\t\t\t\ttemplateValidator.validateAsync(childSchema as any).then(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdone(new Error(\"Should not be valid!\"));\n\t\t\t\t\t},\n\t\t\t\t\t(error) => {\n\t\t\t\t\t\texpect(error).to.exist;\n\t\t\t\t\t\tdone();\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n})();\n"]}
@@ -0,0 +1,142 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /* eslint no-unused-expressions: 0 */
6
+ /**
7
+ * @fileoverview In this file, we will test typeid_helper functions.
8
+ */
9
+ import { constants } from "@fluid-experimental/property-common";
10
+ import { expect } from "chai";
11
+ import { TypeIdHelper } from "../../helpers/typeidHelper.js";
12
+ (function () {
13
+ describe("Typeid helper", function () {
14
+ const MSG = constants.MSG;
15
+ it("getPrimitiveTypeId() should return all primitive typeids", () => {
16
+ const result = TypeIdHelper.getPrimitiveTypeIds();
17
+ expect(result).to.have.members([
18
+ "Float32",
19
+ "Float64",
20
+ "Int8",
21
+ "Uint8",
22
+ "Int16",
23
+ "Uint16",
24
+ "Int32",
25
+ "Uint32",
26
+ "Bool",
27
+ "String",
28
+ "Reference",
29
+ "Enum",
30
+ "Int64",
31
+ "Uint64",
32
+ ]);
33
+ });
34
+ it("getReservedTypeId() should return all reserved typeids", () => {
35
+ const result = TypeIdHelper.getReservedTypeIds();
36
+ expect(result).to.have.members([
37
+ "BaseProperty",
38
+ "ContainerProperty",
39
+ "NamedProperty",
40
+ "NodeProperty",
41
+ "NamedNodeProperty",
42
+ "RelationshipProperty",
43
+ ]);
44
+ });
45
+ describe("nativeInheritsFrom() method", function () {
46
+ it("should throw an error if the input is undefine", () => {
47
+ expect(() => {
48
+ TypeIdHelper.nativeInheritsFrom(undefined, "BaseProperty");
49
+ }).to.throw(MSG.TYPEID_NOT_DEFINED);
50
+ expect(() => {
51
+ // @ts-ignore
52
+ TypeIdHelper.nativeInheritsFrom("NodeProperty");
53
+ }).to.throw(MSG.TYPEID_NOT_DEFINED);
54
+ expect(() => {
55
+ // @ts-ignore
56
+ TypeIdHelper.nativeInheritsFrom();
57
+ }).to.throw(MSG.TYPEID_NOT_DEFINED);
58
+ });
59
+ it("should throw an error if the inputs are not native typeids", () => {
60
+ expect(() => {
61
+ TypeIdHelper.nativeInheritsFrom("template1", "BaseProperty");
62
+ }).to.throw(MSG.TYPEID_NOT_NATIVE + "template1");
63
+ expect(() => {
64
+ TypeIdHelper.nativeInheritsFrom("NodeProperty", "template1");
65
+ }).to.throw(MSG.TYPEID_NOT_NATIVE + "template1");
66
+ });
67
+ it("should recognize that all the native type inherit from BaseProperty", () => {
68
+ expect(TypeIdHelper.nativeInheritsFrom("Int8", "BaseProperty")).to.be.true;
69
+ expect(TypeIdHelper.nativeInheritsFrom("Uint8", "BaseProperty")).to.be.true;
70
+ expect(TypeIdHelper.nativeInheritsFrom("Int16", "BaseProperty")).to.be.true;
71
+ expect(TypeIdHelper.nativeInheritsFrom("Uint16", "BaseProperty")).to.be.true;
72
+ expect(TypeIdHelper.nativeInheritsFrom("Int32", "BaseProperty")).to.be.true;
73
+ expect(TypeIdHelper.nativeInheritsFrom("Uint32", "BaseProperty")).to.be.true;
74
+ expect(TypeIdHelper.nativeInheritsFrom("Float32", "BaseProperty")).to.be.true;
75
+ expect(TypeIdHelper.nativeInheritsFrom("Int64", "BaseProperty")).to.be.true;
76
+ expect(TypeIdHelper.nativeInheritsFrom("Uint64", "BaseProperty")).to.be.true;
77
+ expect(TypeIdHelper.nativeInheritsFrom("Float64", "BaseProperty")).to.be.true;
78
+ expect(TypeIdHelper.nativeInheritsFrom("Bool", "BaseProperty")).to.be.true;
79
+ expect(TypeIdHelper.nativeInheritsFrom("Reference", "BaseProperty")).to.be.true;
80
+ expect(TypeIdHelper.nativeInheritsFrom("Enum", "BaseProperty")).to.be.true;
81
+ expect(TypeIdHelper.nativeInheritsFrom("String", "BaseProperty")).to.be.true;
82
+ expect(TypeIdHelper.nativeInheritsFrom("NodeProperty", "BaseProperty")).to.be.true;
83
+ expect(TypeIdHelper.nativeInheritsFrom("ContainerProperty", "BaseProperty")).to.be
84
+ .true;
85
+ expect(TypeIdHelper.nativeInheritsFrom("NamedProperty", "BaseProperty")).to.be.true;
86
+ expect(TypeIdHelper.nativeInheritsFrom("NamedNodeProperty", "BaseProperty")).to.be
87
+ .true;
88
+ expect(TypeIdHelper.nativeInheritsFrom("RelationshipProperty", "BaseProperty")).to
89
+ .be.true;
90
+ expect(TypeIdHelper.nativeInheritsFrom("Reference<NodeProperty>", "Reference")).to
91
+ .be.true;
92
+ expect(TypeIdHelper.nativeInheritsFrom("NodeProperty", "Reference<NodeProperty>"))
93
+ .to.be.false;
94
+ });
95
+ it("should recognize that the Reference<NodeProperty> inherits from BaseProperty", () => {
96
+ const result = TypeIdHelper.nativeInheritsFrom("Reference<NodeProperty>", "BaseProperty");
97
+ expect(result).to.be.true;
98
+ });
99
+ it("should throw an error if in_typeid is enum<> ", () => {
100
+ expect(() => {
101
+ TypeIdHelper.nativeInheritsFrom("enum<NodeProperty>", "BaseProperty");
102
+ }).to.throw(MSG.TYPEID_NOT_NATIVE + "enum<NodeProperty>");
103
+ });
104
+ it("should throw an error if base_typeid is enum<> ", () => {
105
+ expect(() => {
106
+ TypeIdHelper.nativeInheritsFrom("NodeProperty", "enum<NodeProperty>");
107
+ }).to.throw(MSG.TYPEID_NOT_NATIVE + "enum<NodeProperty>");
108
+ });
109
+ it("should recognize that the Enum inherits from Int32", () => {
110
+ const result = TypeIdHelper.nativeInheritsFrom("Enum", "Int32");
111
+ expect(result).to.be.true;
112
+ });
113
+ it("should recognize that the NodeProperty inherits from ContainerProperty", () => {
114
+ const result = TypeIdHelper.nativeInheritsFrom("NodeProperty", "ContainerProperty");
115
+ expect(result).to.be.true;
116
+ });
117
+ it("should recognize that the NamedProperty inherits from ContainerProperty", () => {
118
+ const result = TypeIdHelper.nativeInheritsFrom("NamedProperty", "ContainerProperty");
119
+ expect(result).to.be.true;
120
+ });
121
+ it("should recognize that the String inherits from ContainerProperty", () => {
122
+ const result = TypeIdHelper.nativeInheritsFrom("String", "ContainerProperty");
123
+ expect(result).to.be.true;
124
+ });
125
+ it("should recognize that the NamedNodeProperty inherits from NamedProperty", () => {
126
+ const result = TypeIdHelper.nativeInheritsFrom("NamedNodeProperty", "NamedProperty");
127
+ expect(result).to.be.true;
128
+ });
129
+ it("should recognize that the NamedNodeProperty inherits from NodeProperty", () => {
130
+ const result = TypeIdHelper.nativeInheritsFrom("NamedNodeProperty", "NodeProperty");
131
+ expect(result).to.be.true;
132
+ });
133
+ it("should recognize that the RelationshipProperty inherits from NodeProperty and NamedProperty", () => {
134
+ expect(TypeIdHelper.nativeInheritsFrom("RelationshipProperty", "NodeProperty")).to
135
+ .be.true;
136
+ expect(TypeIdHelper.nativeInheritsFrom("RelationshipProperty", "NamedProperty")).to
137
+ .be.true;
138
+ });
139
+ });
140
+ });
141
+ })();
142
+ //# sourceMappingURL=typeidHelper.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeidHelper.spec.js","sourceRoot":"","sources":["../../../src/test/validator/typeidHelper.spec.ts"],"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/* eslint no-unused-expressions: 0 */\n\n/**\n * @fileoverview In this file, we will test typeid_helper functions.\n */\n\nimport { constants } from \"@fluid-experimental/property-common\";\nimport { expect } from \"chai\";\n\nimport { TypeIdHelper } from \"../../helpers/typeidHelper.js\";\n\n(function () {\n\tdescribe(\"Typeid helper\", function () {\n\t\tconst MSG = constants.MSG;\n\n\t\tit(\"getPrimitiveTypeId() should return all primitive typeids\", () => {\n\t\t\tconst result = TypeIdHelper.getPrimitiveTypeIds();\n\t\t\texpect(result).to.have.members([\n\t\t\t\t\"Float32\",\n\t\t\t\t\"Float64\",\n\t\t\t\t\"Int8\",\n\t\t\t\t\"Uint8\",\n\t\t\t\t\"Int16\",\n\t\t\t\t\"Uint16\",\n\t\t\t\t\"Int32\",\n\t\t\t\t\"Uint32\",\n\t\t\t\t\"Bool\",\n\t\t\t\t\"String\",\n\t\t\t\t\"Reference\",\n\t\t\t\t\"Enum\",\n\t\t\t\t\"Int64\",\n\t\t\t\t\"Uint64\",\n\t\t\t]);\n\t\t});\n\n\t\tit(\"getReservedTypeId() should return all reserved typeids\", () => {\n\t\t\tconst result = TypeIdHelper.getReservedTypeIds();\n\n\t\t\texpect(result).to.have.members([\n\t\t\t\t\"BaseProperty\",\n\t\t\t\t\"ContainerProperty\",\n\t\t\t\t\"NamedProperty\",\n\t\t\t\t\"NodeProperty\",\n\t\t\t\t\"NamedNodeProperty\",\n\t\t\t\t\"RelationshipProperty\",\n\t\t\t]);\n\t\t});\n\n\t\tdescribe(\"nativeInheritsFrom() method\", function () {\n\t\t\tit(\"should throw an error if the input is undefine\", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(undefined as unknown as string, \"BaseProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_DEFINED);\n\t\t\t\texpect(() => {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"NodeProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_DEFINED);\n\t\t\t\texpect(() => {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom();\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_DEFINED);\n\t\t\t});\n\n\t\t\tit(\"should throw an error if the inputs are not native typeids\", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"template1\", \"BaseProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"template1\");\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"template1\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"template1\");\n\t\t\t});\n\n\t\t\tit(\"should recognize that all the native type inherit from BaseProperty\", () => {\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int8\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint8\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int16\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint16\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int32\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint32\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Float32\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int64\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint64\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Float64\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Bool\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Reference\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Enum\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"String\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"ContainerProperty\", \"BaseProperty\")).to.be\n\t\t\t\t\t.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NamedProperty\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NamedNodeProperty\", \"BaseProperty\")).to.be\n\t\t\t\t\t.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"RelationshipProperty\", \"BaseProperty\")).to\n\t\t\t\t\t.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Reference<NodeProperty>\", \"Reference\")).to\n\t\t\t\t\t.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"Reference<NodeProperty>\"))\n\t\t\t\t\t.to.be.false;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the Reference<NodeProperty> inherits from BaseProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\n\t\t\t\t\t\"Reference<NodeProperty>\",\n\t\t\t\t\t\"BaseProperty\",\n\t\t\t\t);\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should throw an error if in_typeid is enum<> \", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"enum<NodeProperty>\", \"BaseProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"enum<NodeProperty>\");\n\t\t\t});\n\n\t\t\tit(\"should throw an error if base_typeid is enum<> \", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"enum<NodeProperty>\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"enum<NodeProperty>\");\n\t\t\t});\n\n\t\t\tit(\"should recognize that the Enum inherits from Int32\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"Enum\", \"Int32\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NodeProperty inherits from ContainerProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"ContainerProperty\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NamedProperty inherits from ContainerProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\n\t\t\t\t\t\"NamedProperty\",\n\t\t\t\t\t\"ContainerProperty\",\n\t\t\t\t);\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the String inherits from ContainerProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"String\", \"ContainerProperty\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NamedNodeProperty inherits from NamedProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\n\t\t\t\t\t\"NamedNodeProperty\",\n\t\t\t\t\t\"NamedProperty\",\n\t\t\t\t);\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NamedNodeProperty inherits from NodeProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"NamedNodeProperty\", \"NodeProperty\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the RelationshipProperty inherits from NodeProperty and NamedProperty\", () => {\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"RelationshipProperty\", \"NodeProperty\")).to\n\t\t\t\t\t.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"RelationshipProperty\", \"NamedProperty\")).to\n\t\t\t\t\t.be.true;\n\t\t\t});\n\t\t});\n\t});\n})();\n"]}
package/lib/utils.d.ts CHANGED
@@ -1,7 +1,11 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
1
5
  import { ErrorCallback } from "async";
2
- import { SerializedChangeSet } from "./changeset";
3
- import { ExtractedContext } from "./helpers/typeidHelper";
4
- import { PathTree } from "./pathHelper";
6
+ import { SerializedChangeSet } from "./changeset.js";
7
+ import { ExtractedContext } from "./helpers/typeidHelper.js";
8
+ import { PathTree } from "./pathHelper.js";
5
9
  /**
6
10
  * Utils
7
11
  * @alias property-changeset.Utils
@@ -357,11 +361,11 @@ export declare namespace Utils {
357
361
  *
358
362
  * ```typescript
359
363
  * new Map([
360
- * ['entry', new Map()],
361
- * ['nested', new Map([
362
- * ['entry2', new Map()],
363
- * ['entry3', new Map()]
364
- * ])]
364
+ * ['entry', new Map()],
365
+ * ['nested', new Map([
366
+ * ['entry2', new Map()],
367
+ * ['entry3', new Map()]
368
+ * ])]
365
369
  * ])
366
370
  * ```
367
371
  *
@@ -369,11 +373,11 @@ export declare namespace Utils {
369
373
  *
370
374
  * ```typescript
371
375
  * {
372
- * entry: {},
373
- * nested: {
374
- * entry2: {}
375
- * entry3: {}
376
- * }
376
+ * entry: {},
377
+ * nested: {
378
+ * entry2: {}
379
+ * entry3: {}
380
+ * }
377
381
  * }
378
382
  * ```
379
383
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/lib/utils.js CHANGED
@@ -3,21 +3,21 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  // @ts-ignore
6
- import { ConsoleUtils, constants } from "@fluid-experimental/property-common";
6
+ import { constants, ConsoleUtils } from "@fluid-experimental/property-common";
7
7
  import { eachOfSeries, eachSeries, series, timesSeries, whilst } from "async";
8
8
  import { copy as cloneDeep } from "fastest-json-copy";
9
- import isNumber from "lodash/isNumber";
10
- import isString from "lodash/isString";
11
- import isEmpty from "lodash/isEmpty";
12
- import extend from "lodash/extend";
13
- import each from "lodash/each";
14
- import isEqual from "lodash/isEqual";
15
- import find from "lodash/find";
16
- import { ArrayChangeSetIterator } from "./changeset_operations/arrayChangesetIterator";
17
- import { TypeIdHelper } from "./helpers/typeidHelper";
18
- import { isReservedKeyword } from "./isReservedKeyword";
19
- import { PathHelper } from "./pathHelper";
20
- import { ArrayIteratorOperationTypes } from "./changeset_operations/operationTypes";
9
+ import each from "lodash/each.js";
10
+ import extend from "lodash/extend.js";
11
+ import find from "lodash/find.js";
12
+ import isEmpty from "lodash/isEmpty.js";
13
+ import isEqual from "lodash/isEqual.js";
14
+ import isNumber from "lodash/isNumber.js";
15
+ import isString from "lodash/isString.js";
16
+ import { ArrayChangeSetIterator } from "./changeset_operations/arrayChangesetIterator.js";
17
+ import { ArrayIteratorOperationTypes } from "./changeset_operations/operationTypes.js";
18
+ import { TypeIdHelper } from "./helpers/typeidHelper.js";
19
+ import { isReservedKeyword } from "./isReservedKeyword.js";
20
+ import { PathHelper } from "./pathHelper.js";
21
21
  const { PROPERTY_PATH_DELIMITER, MSG } = constants;
22
22
  /**
23
23
  * Utils
@@ -1311,11 +1311,11 @@ export var Utils;
1311
1311
  *
1312
1312
  * ```typescript
1313
1313
  * new Map([
1314
- * ['entry', new Map()],
1315
- * ['nested', new Map([
1316
- * ['entry2', new Map()],
1317
- * ['entry3', new Map()]
1318
- * ])]
1314
+ * ['entry', new Map()],
1315
+ * ['nested', new Map([
1316
+ * ['entry2', new Map()],
1317
+ * ['entry3', new Map()]
1318
+ * ])]
1319
1319
  * ])
1320
1320
  * ```
1321
1321
  *
@@ -1323,11 +1323,11 @@ export var Utils;
1323
1323
  *
1324
1324
  * ```typescript
1325
1325
  * {
1326
- * entry: {},
1327
- * nested: {
1328
- * entry2: {}
1329
- * entry3: {}
1330
- * }
1326
+ * entry: {},
1327
+ * nested: {
1328
+ * entry2: {}
1329
+ * entry3: {}
1330
+ * }
1331
1331
  * }
1332
1332
  * ```
1333
1333
  *