@itwin/ecschema-locaters 5.0.0-dev.11 → 5.0.0-dev.111

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 (101) hide show
  1. package/CHANGELOG.md +71 -1
  2. package/lib/cjs/SchemaFileLocater.d.ts +23 -8
  3. package/lib/cjs/SchemaFileLocater.d.ts.map +1 -1
  4. package/lib/cjs/SchemaFileLocater.js +23 -11
  5. package/lib/cjs/SchemaFileLocater.js.map +1 -1
  6. package/lib/cjs/SchemaJsonFileLocater.d.ts +4 -3
  7. package/lib/cjs/SchemaJsonFileLocater.d.ts.map +1 -1
  8. package/lib/cjs/SchemaJsonFileLocater.js +4 -3
  9. package/lib/cjs/SchemaJsonFileLocater.js.map +1 -1
  10. package/lib/cjs/SchemaStringLocater.d.ts +2 -2
  11. package/lib/cjs/SchemaStringLocater.d.ts.map +1 -1
  12. package/lib/cjs/SchemaStringLocater.js +12 -9
  13. package/lib/cjs/SchemaStringLocater.js.map +1 -1
  14. package/lib/cjs/SchemaXml.d.ts +1 -1
  15. package/lib/cjs/SchemaXml.js +1 -1
  16. package/lib/cjs/SchemaXml.js.map +1 -1
  17. package/lib/cjs/SchemaXmlFileLocater.d.ts +31 -3
  18. package/lib/cjs/SchemaXmlFileLocater.d.ts.map +1 -1
  19. package/lib/cjs/SchemaXmlFileLocater.js +46 -4
  20. package/lib/cjs/SchemaXmlFileLocater.js.map +1 -1
  21. package/lib/cjs/SchemaXmlStringLocater.d.ts +2 -2
  22. package/lib/cjs/SchemaXmlStringLocater.d.ts.map +1 -1
  23. package/lib/cjs/SchemaXmlStringLocater.js +4 -4
  24. package/lib/cjs/SchemaXmlStringLocater.js.map +1 -1
  25. package/lib/cjs/StubSchemaXmlFileLocater.d.ts +2 -2
  26. package/lib/cjs/StubSchemaXmlFileLocater.d.ts.map +1 -1
  27. package/lib/cjs/StubSchemaXmlFileLocater.js +9 -9
  28. package/lib/cjs/StubSchemaXmlFileLocater.js.map +1 -1
  29. package/lib/cjs/ecschema-locaters.js.map +1 -1
  30. package/lib/cjs/test/ConcurrentGetSchemaJson.test.js.map +1 -1
  31. package/lib/cjs/test/ConcurrentGetSchemaXml.test.js.map +1 -1
  32. package/lib/cjs/test/SchemaJsonFileLocator.test.js +2 -2
  33. package/lib/cjs/test/SchemaJsonFileLocator.test.js.map +1 -1
  34. package/lib/cjs/test/SchemaXml.test.js.map +1 -1
  35. package/lib/cjs/test/SchemaXmlFileLocator.test.js +12 -9
  36. package/lib/cjs/test/SchemaXmlFileLocator.test.js.map +1 -1
  37. package/lib/cjs/test/SchemaXmlStringLocater.test.js +9 -9
  38. package/lib/cjs/test/SchemaXmlStringLocater.test.js.map +1 -1
  39. package/lib/cjs/test/StubSchemaXmlFileLocater.test.js +9 -8
  40. package/lib/cjs/test/StubSchemaXmlFileLocater.test.js.map +1 -1
  41. package/lib/esm/SchemaFileLocater.d.ts +101 -0
  42. package/lib/esm/SchemaFileLocater.d.ts.map +1 -0
  43. package/lib/esm/SchemaFileLocater.js +220 -0
  44. package/lib/esm/SchemaFileLocater.js.map +1 -0
  45. package/lib/esm/SchemaJsonFileLocater.d.ts +43 -0
  46. package/lib/esm/SchemaJsonFileLocater.d.ts.map +1 -0
  47. package/lib/esm/SchemaJsonFileLocater.js +97 -0
  48. package/lib/esm/SchemaJsonFileLocater.js.map +1 -0
  49. package/lib/esm/SchemaStringLocater.d.ts +54 -0
  50. package/lib/esm/SchemaStringLocater.d.ts.map +1 -0
  51. package/lib/esm/SchemaStringLocater.js +83 -0
  52. package/lib/esm/SchemaStringLocater.js.map +1 -0
  53. package/lib/esm/SchemaXml.d.ts +22 -0
  54. package/lib/esm/SchemaXml.d.ts.map +1 -0
  55. package/lib/esm/SchemaXml.js +55 -0
  56. package/lib/esm/SchemaXml.js.map +1 -0
  57. package/lib/esm/SchemaXmlFileLocater.d.ts +70 -0
  58. package/lib/esm/SchemaXmlFileLocater.d.ts.map +1 -0
  59. package/lib/esm/SchemaXmlFileLocater.js +140 -0
  60. package/lib/esm/SchemaXmlFileLocater.js.map +1 -0
  61. package/lib/esm/SchemaXmlStringLocater.d.ts +48 -0
  62. package/lib/esm/SchemaXmlStringLocater.d.ts.map +1 -0
  63. package/lib/esm/SchemaXmlStringLocater.js +100 -0
  64. package/lib/esm/SchemaXmlStringLocater.js.map +1 -0
  65. package/lib/esm/StubSchemaXmlFileLocater.d.ts +81 -0
  66. package/lib/esm/StubSchemaXmlFileLocater.d.ts.map +1 -0
  67. package/lib/esm/StubSchemaXmlFileLocater.js +184 -0
  68. package/lib/esm/StubSchemaXmlFileLocater.js.map +1 -0
  69. package/lib/esm/ecschema-locaters.d.ts +20 -0
  70. package/lib/esm/ecschema-locaters.d.ts.map +1 -0
  71. package/lib/esm/ecschema-locaters.js +24 -0
  72. package/lib/esm/ecschema-locaters.js.map +1 -0
  73. package/lib/esm/test/ConcurrentGetSchemaJson.test.d.ts +2 -0
  74. package/lib/esm/test/ConcurrentGetSchemaJson.test.d.ts.map +1 -0
  75. package/lib/esm/test/ConcurrentGetSchemaJson.test.js +249 -0
  76. package/lib/esm/test/ConcurrentGetSchemaJson.test.js.map +1 -0
  77. package/lib/esm/test/ConcurrentGetSchemaXml.test.d.ts +2 -0
  78. package/lib/esm/test/ConcurrentGetSchemaXml.test.d.ts.map +1 -0
  79. package/lib/esm/test/ConcurrentGetSchemaXml.test.js +186 -0
  80. package/lib/esm/test/ConcurrentGetSchemaXml.test.js.map +1 -0
  81. package/lib/esm/test/SchemaJsonFileLocator.test.d.ts +2 -0
  82. package/lib/esm/test/SchemaJsonFileLocator.test.d.ts.map +1 -0
  83. package/lib/esm/test/SchemaJsonFileLocator.test.js +118 -0
  84. package/lib/esm/test/SchemaJsonFileLocator.test.js.map +1 -0
  85. package/lib/esm/test/SchemaXml.test.d.ts +2 -0
  86. package/lib/esm/test/SchemaXml.test.d.ts.map +1 -0
  87. package/lib/esm/test/SchemaXml.test.js +55 -0
  88. package/lib/esm/test/SchemaXml.test.js.map +1 -0
  89. package/lib/esm/test/SchemaXmlFileLocator.test.d.ts +2 -0
  90. package/lib/esm/test/SchemaXmlFileLocator.test.d.ts.map +1 -0
  91. package/lib/esm/test/SchemaXmlFileLocator.test.js +182 -0
  92. package/lib/esm/test/SchemaXmlFileLocator.test.js.map +1 -0
  93. package/lib/esm/test/SchemaXmlStringLocater.test.d.ts +2 -0
  94. package/lib/esm/test/SchemaXmlStringLocater.test.d.ts.map +1 -0
  95. package/lib/esm/test/SchemaXmlStringLocater.test.js +219 -0
  96. package/lib/esm/test/SchemaXmlStringLocater.test.js.map +1 -0
  97. package/lib/esm/test/StubSchemaXmlFileLocater.test.d.ts +2 -0
  98. package/lib/esm/test/StubSchemaXmlFileLocater.test.d.ts.map +1 -0
  99. package/lib/esm/test/StubSchemaXmlFileLocater.test.js +170 -0
  100. package/lib/esm/test/StubSchemaXmlFileLocater.test.js.map +1 -0
  101. package/package.json +14 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ConcurrentGetSchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/ConcurrentGetSchemaXml.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, expect } from \"chai\";\r\nimport * as fs from \"fs\";\r\nimport * as path from \"path\";\r\nimport { Schema, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\r\nimport { StubSchemaXmlFileLocater } from \"../StubSchemaXmlFileLocater\";\r\nimport { SchemaXml } from \"../SchemaXml\";\r\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\r\n\r\ndescribe(\"Concurrent XML schema deserialization\", () => {\r\n const assetDir: string = path.join(__dirname, \"assets\");\r\n const schemaFolder = path.join(__dirname, \"assets\", \"xml\");\r\n\r\n const schemaKeys: SchemaKey[] = [];\r\n let context: SchemaContext;\r\n let contextSync: SchemaContext;\r\n let syncSchemas: Array<Schema | undefined> = [];\r\n\r\n const locater = new SchemaXmlFileLocater();\r\n const helperLocater = new StubSchemaXmlFileLocater();\r\n\r\n before(() => {\r\n if (!fs.existsSync(assetDir))\r\n fs.mkdirSync(assetDir);\r\n if (!fs.existsSync(schemaFolder))\r\n fs.mkdirSync(schemaFolder);\r\n\r\n copySchemasToAssetsDir();\r\n\r\n // Deserialize schemas synchronously/serially as standard to compare to\r\n contextSync = new SchemaContext();\r\n locater.addSchemaSearchPath(schemaFolder);\r\n contextSync.addLocater(locater);\r\n\r\n const schemaFiles = fs.readdirSync(schemaFolder);\r\n schemaFiles.forEach((fileName) => {\r\n const schemaFile = path.join(schemaFolder, fileName);\r\n const key = helperLocater.getSchemaKey(fs.readFileSync(schemaFile, \"utf-8\"));\r\n\r\n schemaKeys.push(key);\r\n });\r\n\r\n syncSchemas = schemaKeys.map((key): Schema | undefined => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = contextSync.getSchemaSync(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n });\r\n\r\n beforeEach(() => {\r\n context = new SchemaContext();\r\n context.addLocater(locater);\r\n });\r\n\r\n function getSchemaPathFromPackage(packageName: string, schemaFileName: string): string {\r\n const schemaFile = path.join(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"@bentley\", packageName, schemaFileName);\r\n return schemaFile;\r\n }\r\n\r\n function copySchemasToAssetsDir() {\r\n // Copy Schemas that we need for testing\r\n fs.copyFileSync(getSchemaPathFromPackage(\"aec-units-schema\", \"AecUnits.ecschema.xml\"), path.join(schemaFolder, \"AecUnits.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-custom-attributes-schema\", \"BisCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"BisCustomAttributes.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-map-schema\", \"ECDbMap.ecschema.xml\"), path.join(schemaFolder, \"ECDbMap.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-schema-policies-schema\", \"ECDbSchemaPolicies.ecschema.xml\"), path.join(schemaFolder, \"ECDbSchemaPolicies.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"formats-schema\", \"Formats.ecschema.xml\"), path.join(schemaFolder, \"Formats.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"units-schema\", \"Units.ecschema.xml\"), path.join(schemaFolder, \"Units.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"core-custom-attributes-schema\", \"CoreCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"CoreCustomAttributes.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-core-schema\", \"BisCore.ecschema.xml\"), path.join(schemaFolder, \"BisCore.ecschema.xml\"));\r\n }\r\n\r\n const loadSchemaString = (schemaName: string) => {\r\n const searchPath = path.join(__dirname, \"assets\", \"xml\", `${schemaName}.ecschema.xml`);\r\n const file = fs.readFileSync(searchPath);\r\n return file.toString();\r\n };\r\n\r\n it(\"should match schemas deserialized concurrently with schemas deserialized serially\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n const asyncSchemas = await Promise.all(schemaPromises);\r\n\r\n for (let i = 0; i < schemaKeys.length; i++) {\r\n const syncSchema = syncSchemas[i];\r\n expect(syncSchema).not.to.be.undefined;\r\n const syncXML = await SchemaXml.writeString(syncSchema!);\r\n\r\n const asyncSchema = asyncSchemas[i];\r\n expect(asyncSchema).not.to.be.undefined;\r\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\r\n expect(asyncXML).to.deep.equal(syncXML);\r\n }\r\n });\r\n\r\n it(\"should be able to mix getSchema and getSchemaSync\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key, index): Promise<Schema | undefined> => {\r\n if (index % 2 === 0) {\r\n // Use getSchema() for even indices\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n } else {\r\n // Use getSchemaSync() for odd indices\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = context.getSchemaSync(key, SchemaMatchType.Latest);\r\n return schema;\r\n }\r\n });\r\n const asyncSchemas = await Promise.all(schemaPromises);\r\n\r\n for (let i = 0; i < schemaKeys.length; i++) {\r\n const syncSchema = syncSchemas[i];\r\n expect(syncSchema).not.to.be.undefined;\r\n const syncXML = await SchemaXml.writeString(syncSchema!);\r\n\r\n const asyncSchema = asyncSchemas[i];\r\n expect(asyncSchema).not.to.be.undefined;\r\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\r\n expect(asyncXML).to.deep.equal(syncXML);\r\n }\r\n });\r\n\r\n it(\"Concurrently get BisCore with SchemaXmlFileLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlFileLocater = new SchemaXmlFileLocater();\r\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\r\n schemaContext.addLocater(xmlFileLocater);\r\n\r\n const schemas = await Promise.all(\r\n [...Array(100).keys()].map(async () => {\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(100);\r\n schemas.forEach((schema) => {\r\n assert(schema !== undefined);\r\n expect(schema.fullName).to.equal(\"BisCore\");\r\n });\r\n });\r\n\r\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlFileLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlFileLocater = new SchemaXmlFileLocater();\r\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\r\n schemaContext.addLocater(xmlFileLocater);\r\n\r\n let getBisCoreFirst = 0;\r\n const schemas = await Promise.all(\r\n [...Array(2).keys()].map(async () => {\r\n if (getBisCoreFirst === 0) {\r\n getBisCoreFirst = 1;\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }\r\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(2);\r\n schemas.forEach((schema) => {\r\n expect(schema).to.not.be.undefined;\r\n });\r\n });\r\n\r\n it(\"Concurrently get BisCore with SchemaXmlStringLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlStringLocater = new SchemaXmlStringLocater();\r\n schemaContext.addLocater(xmlStringLocater);\r\n\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\r\n\r\n const schemas = await Promise.all(\r\n [...Array(100).keys()].map(async () => {\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(100);\r\n schemas.forEach((schema) => {\r\n assert(schema !== undefined);\r\n expect(schema.fullName).to.equal(\"BisCore\");\r\n });\r\n });\r\n\r\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlStringLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlStringLocater = new SchemaXmlStringLocater();\r\n schemaContext.addLocater(xmlStringLocater);\r\n\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\r\n\r\n let getBisCoreFirst = 0;\r\n const schemas = await Promise.all(\r\n [...Array(2).keys()].map(async () => {\r\n if (getBisCoreFirst === 0) {\r\n getBisCoreFirst = 1;\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }\r\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(2);\r\n schemas.forEach((schema) => {\r\n expect(schema).to.not.be.undefined;\r\n });\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ConcurrentGetSchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/ConcurrentGetSchemaXml.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert, expect } from \"chai\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { Schema, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\nimport { StubSchemaXmlFileLocater } from \"../StubSchemaXmlFileLocater\";\nimport { SchemaXml } from \"../SchemaXml\";\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\n\ndescribe(\"Concurrent XML schema deserialization\", () => {\n const assetDir: string = path.join(__dirname, \"assets\");\n const schemaFolder = path.join(__dirname, \"assets\", \"xml\");\n\n const schemaKeys: SchemaKey[] = [];\n let context: SchemaContext;\n let contextSync: SchemaContext;\n let syncSchemas: Array<Schema | undefined> = [];\n\n const locater = new SchemaXmlFileLocater();\n const helperLocater = new StubSchemaXmlFileLocater();\n\n before(() => {\n if (!fs.existsSync(assetDir))\n fs.mkdirSync(assetDir);\n if (!fs.existsSync(schemaFolder))\n fs.mkdirSync(schemaFolder);\n\n copySchemasToAssetsDir();\n\n // Deserialize schemas synchronously/serially as standard to compare to\n contextSync = new SchemaContext();\n locater.addSchemaSearchPath(schemaFolder);\n contextSync.addLocater(locater);\n\n const schemaFiles = fs.readdirSync(schemaFolder);\n schemaFiles.forEach((fileName) => {\n const schemaFile = path.join(schemaFolder, fileName);\n const key = helperLocater.getSchemaKey(fs.readFileSync(schemaFile, \"utf-8\"));\n\n schemaKeys.push(key);\n });\n\n syncSchemas = schemaKeys.map((key): Schema | undefined => {\n if (!key)\n return undefined;\n\n const schema = contextSync.getSchemaSync(key, SchemaMatchType.Latest);\n return schema;\n });\n });\n\n beforeEach(() => {\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n function getSchemaPathFromPackage(packageName: string, schemaFileName: string): string {\n const schemaFile = path.join(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"@bentley\", packageName, schemaFileName);\n return schemaFile;\n }\n\n function copySchemasToAssetsDir() {\n // Copy Schemas that we need for testing\n fs.copyFileSync(getSchemaPathFromPackage(\"aec-units-schema\", \"AecUnits.ecschema.xml\"), path.join(schemaFolder, \"AecUnits.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-custom-attributes-schema\", \"BisCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"BisCustomAttributes.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-map-schema\", \"ECDbMap.ecschema.xml\"), path.join(schemaFolder, \"ECDbMap.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-schema-policies-schema\", \"ECDbSchemaPolicies.ecschema.xml\"), path.join(schemaFolder, \"ECDbSchemaPolicies.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"formats-schema\", \"Formats.ecschema.xml\"), path.join(schemaFolder, \"Formats.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"units-schema\", \"Units.ecschema.xml\"), path.join(schemaFolder, \"Units.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"core-custom-attributes-schema\", \"CoreCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"CoreCustomAttributes.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-core-schema\", \"BisCore.ecschema.xml\"), path.join(schemaFolder, \"BisCore.ecschema.xml\"));\n }\n\n const loadSchemaString = (schemaName: string) => {\n const searchPath = path.join(__dirname, \"assets\", \"xml\", `${schemaName}.ecschema.xml`);\n const file = fs.readFileSync(searchPath);\n return file.toString();\n };\n\n it(\"should match schemas deserialized concurrently with schemas deserialized serially\", async () => {\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n });\n const asyncSchemas = await Promise.all(schemaPromises);\n\n for (let i = 0; i < schemaKeys.length; i++) {\n const syncSchema = syncSchemas[i];\n expect(syncSchema).not.to.be.undefined;\n const syncXML = await SchemaXml.writeString(syncSchema!);\n\n const asyncSchema = asyncSchemas[i];\n expect(asyncSchema).not.to.be.undefined;\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\n expect(asyncXML).to.deep.equal(syncXML);\n }\n });\n\n it(\"should be able to mix getSchema and getSchemaSync\", async () => {\n const schemaPromises = schemaKeys.map(async (key, index): Promise<Schema | undefined> => {\n if (index % 2 === 0) {\n // Use getSchema() for even indices\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n } else {\n // Use getSchemaSync() for odd indices\n if (!key)\n return undefined;\n\n const schema = context.getSchemaSync(key, SchemaMatchType.Latest);\n return schema;\n }\n });\n const asyncSchemas = await Promise.all(schemaPromises);\n\n for (let i = 0; i < schemaKeys.length; i++) {\n const syncSchema = syncSchemas[i];\n expect(syncSchema).not.to.be.undefined;\n const syncXML = await SchemaXml.writeString(syncSchema!);\n\n const asyncSchema = asyncSchemas[i];\n expect(asyncSchema).not.to.be.undefined;\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\n expect(asyncXML).to.deep.equal(syncXML);\n }\n });\n\n it(\"Concurrently get BisCore with SchemaXmlFileLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlFileLocater = new SchemaXmlFileLocater();\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\n schemaContext.addLocater(xmlFileLocater);\n\n const schemas = await Promise.all(\n [...Array(100).keys()].map(async () => {\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }),\n );\n expect(schemas.length).to.equal(100);\n schemas.forEach((schema) => {\n assert(schema !== undefined);\n expect(schema.fullName).to.equal(\"BisCore\");\n });\n });\n\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlFileLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlFileLocater = new SchemaXmlFileLocater();\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\n schemaContext.addLocater(xmlFileLocater);\n\n let getBisCoreFirst = 0;\n const schemas = await Promise.all(\n [...Array(2).keys()].map(async () => {\n if (getBisCoreFirst === 0) {\n getBisCoreFirst = 1;\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\n }),\n );\n expect(schemas.length).to.equal(2);\n schemas.forEach((schema) => {\n expect(schema).to.not.be.undefined;\n });\n });\n\n it(\"Concurrently get BisCore with SchemaXmlStringLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlStringLocater = new SchemaXmlStringLocater();\n schemaContext.addLocater(xmlStringLocater);\n\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\n\n const schemas = await Promise.all(\n [...Array(100).keys()].map(async () => {\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }),\n );\n expect(schemas.length).to.equal(100);\n schemas.forEach((schema) => {\n assert(schema !== undefined);\n expect(schema.fullName).to.equal(\"BisCore\");\n });\n });\n\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlStringLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlStringLocater = new SchemaXmlStringLocater();\n schemaContext.addLocater(xmlStringLocater);\n\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\n\n let getBisCoreFirst = 0;\n const schemas = await Promise.all(\n [...Array(2).keys()].map(async () => {\n if (getBisCoreFirst === 0) {\n getBisCoreFirst = 1;\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\n }),\n );\n expect(schemas.length).to.equal(2);\n schemas.forEach((schema) => {\n expect(schema).to.not.be.undefined;\n });\n });\n});\n"]}
@@ -65,7 +65,7 @@ describe("SchemaJsonFileLocater tests: ", () => {
65
65
  }
66
66
  catch (e) {
67
67
  const error = e;
68
- chai_1.assert.strictEqual(error.errorNumber, EC.ECObjectsStatus.InvalidECJson);
68
+ chai_1.assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);
69
69
  return;
70
70
  }
71
71
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -77,7 +77,7 @@ describe("SchemaJsonFileLocater tests: ", () => {
77
77
  }
78
78
  catch (e) {
79
79
  const error = e;
80
- chai_1.assert.strictEqual(error.errorNumber, EC.ECObjectsStatus.InvalidECJson);
80
+ chai_1.assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);
81
81
  return;
82
82
  }
83
83
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaJsonFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaJsonFileLocator.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as EC from \"@itwin/ecschema-metadata\";\r\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\r\nimport { SchemaJsonFileLocater } from \"../SchemaJsonFileLocater\";\r\n\r\ndescribe(\"SchemaJsonFileLocater tests: \", () => {\r\n let locater: SchemaJsonFileLocater;\r\n let context: EC.SchemaContext;\r\n\r\n beforeEach(() => {\r\n locater = new SchemaJsonFileLocater();\r\n\r\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\r\n context = new EC.SchemaContext();\r\n context.addLocater(locater);\r\n });\r\n\r\n it(\"locate valid schema with multiple references\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"locate valid schema with multiple references synchronously\", () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema called multiple times for same schema\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\r\n\r\n const locater1 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const locater2 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const context1 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\r\n const context2 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n // locater should not cache, but context should cache\r\n assert.notEqual(locater1, locater2);\r\n assert.notEqual(locater1, context1);\r\n assert.strictEqual(context1, context2);\r\n });\r\n\r\n it(\"getSchema called multiple times for same schema synchronously\", () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\r\n\r\n const locater1 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const locater2 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const context1 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\r\n const context2 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n // locater should not cache, but context should cache\r\n assert.notEqual(locater1, locater2);\r\n assert.notEqual(locater1, context1);\r\n assert.strictEqual(context1, context2);\r\n });\r\n\r\n it(\"getSchema which does not exist, returns undefined\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"DoesNotExist\");\r\n const result = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\r\n assert.isUndefined(result);\r\n });\r\n\r\n it(\"loadSchema from file, bad schema name, throws\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"BadSchemaName\");\r\n\r\n try {\r\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\r\n } catch (e) {\r\n const error = e as EC.ECObjectsError;\r\n assert.strictEqual(error.errorNumber, EC.ECObjectsStatus.InvalidECJson);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"loadSchema from file, bad schema version, throws\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"BadSchemaVersion\");\r\n\r\n try {\r\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\r\n } catch (e) {\r\n const error = e as EC.ECObjectsError;\r\n assert.strictEqual(error.errorNumber, EC.ECObjectsStatus.InvalidECJson);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"getSchema, full version, succeeds\", async () => {\r\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 1), EC.SchemaMatchType.Exact, context);\r\n\r\n assert.isDefined(stub);\r\n const key = stub!.schemaKey as FileSchemaKey;\r\n assert.strictEqual(key.name, \"SchemaA\");\r\n assert.strictEqual(key.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\r\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 2), EC.SchemaMatchType.Exact, context));\r\n });\r\n\r\n it(\"getSchema, latest, succeeds\", async () => {\r\n const schema = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.Latest, context);\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"02.00.02\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, succeeds\", async () => {\r\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.LatestWriteCompatible, context);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\r\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 2, 0), EC.SchemaMatchType.LatestWriteCompatible, context));\r\n });\r\n\r\n it(\"getSchema, latest read compatible, succeeds\", async () => {\r\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 0, 0), EC.SchemaMatchType.LatestReadCompatible, context);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\r\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 2, 1, 1), EC.SchemaMatchType.LatestReadCompatible, context));\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SchemaJsonFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaJsonFileLocator.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"chai\";\nimport * as path from \"path\";\nimport * as EC from \"@itwin/ecschema-metadata\";\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\nimport { SchemaJsonFileLocater } from \"../SchemaJsonFileLocater\";\n\ndescribe(\"SchemaJsonFileLocater tests: \", () => {\n let locater: SchemaJsonFileLocater;\n let context: EC.SchemaContext;\n\n beforeEach(() => {\n locater = new SchemaJsonFileLocater();\n\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\n context = new EC.SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"locate valid schema with multiple references synchronously\", () => {\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema called multiple times for same schema\", async () => {\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const context1 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\n\n // locater should not cache, but context should cache\n assert.notEqual(locater1, locater2);\n assert.notEqual(locater1, context1);\n assert.strictEqual(context1, context2);\n });\n\n it(\"getSchema called multiple times for same schema synchronously\", () => {\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const locater2 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const context1 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\n const context2 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\n\n // locater should not cache, but context should cache\n assert.notEqual(locater1, locater2);\n assert.notEqual(locater1, context1);\n assert.strictEqual(context1, context2);\n });\n\n it(\"getSchema which does not exist, returns undefined\", async () => {\n const schemaKey = new EC.SchemaKey(\"DoesNotExist\");\n const result = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\n assert.isUndefined(result);\n });\n\n it(\"loadSchema from file, bad schema name, throws\", async () => {\n const schemaKey = new EC.SchemaKey(\"BadSchemaName\");\n\n try {\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as EC.ECSchemaError;\n assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema version, throws\", async () => {\n const schemaKey = new EC.SchemaKey(\"BadSchemaVersion\");\n\n try {\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as EC.ECSchemaError;\n assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"getSchema, full version, succeeds\", async () => {\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 1), EC.SchemaMatchType.Exact, context);\n\n assert.isDefined(stub);\n const key = stub!.schemaKey as FileSchemaKey;\n assert.strictEqual(key.name, \"SchemaA\");\n assert.strictEqual(key.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 2), EC.SchemaMatchType.Exact, context));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n const schema = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.Latest, context);\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.LatestWriteCompatible, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 2, 0), EC.SchemaMatchType.LatestWriteCompatible, context));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 0, 0), EC.SchemaMatchType.LatestReadCompatible, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 2, 1, 1), EC.SchemaMatchType.LatestReadCompatible, context));\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXml.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { expect } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as fs from \"fs-extra\";\r\nimport * as sinon from \"sinon\";\r\nimport { SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\r\nimport { SchemaXml } from \"../SchemaXml\";\r\n\r\ndescribe(\"SchemaXml tests:\", () => {\r\n let locater: SchemaXmlFileLocater;\r\n let resultLocater: SchemaXmlFileLocater;\r\n let context: SchemaContext;\r\n let resultContext: SchemaContext;\r\n const outDir = path.join(__dirname, \"output\");\r\n\r\n before(() => {\r\n fs.ensureDirSync(outDir);\r\n });\r\n\r\n beforeEach(() => {\r\n locater = new SchemaXmlFileLocater();\r\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\r\n context = new SchemaContext();\r\n context.addLocater(locater);\r\n\r\n resultLocater = new SchemaXmlFileLocater();\r\n resultLocater.addSchemaSearchPath(path.join(__dirname, \"output\"));\r\n resultContext = new SchemaContext();\r\n resultContext.addLocater(resultLocater);\r\n });\r\n\r\n afterEach(() => {\r\n sinon.restore();\r\n });\r\n\r\n it(\"writeFile creates schema xml file successfully.\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n await SchemaXml.writeFile(schema!, outDir);\r\n\r\n const resultSchema = await resultContext.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n expect(resultSchema).to.not.be.undefined;\r\n expect(resultSchema?.schemaKey.matches(schema?.schemaKey as SchemaKey)).to.be.true;\r\n });\r\n\r\n it(\"writeFile with bad path specified, should fail.\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n await expect(SchemaXml.writeFile(schema!, \"badPath\")).to.be.rejectedWith(`The output directory 'badPath' does not exist.`);\r\n });\r\n\r\n it(\"writeFile, writeFile fails, failure handled properly.\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n sinon.stub(fs, \"writeFile\").rejects(new Error(\"SomeError\"));\r\n const outFile = path.resolve(outDir, `${schema!.name}.ecschema.xml`);\r\n\r\n await expect(SchemaXml.writeFile(schema!, outDir)).to.be.rejectedWith(`An error occurred writing to file '${outFile}': SomeError`);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXml.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { expect } from \"chai\";\nimport * as path from \"path\";\nimport * as fs from \"fs-extra\";\nimport * as sinon from \"sinon\";\nimport { SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\nimport { SchemaXml } from \"../SchemaXml\";\n\ndescribe(\"SchemaXml tests:\", () => {\n let locater: SchemaXmlFileLocater;\n let resultLocater: SchemaXmlFileLocater;\n let context: SchemaContext;\n let resultContext: SchemaContext;\n const outDir = path.join(__dirname, \"output\");\n\n before(() => {\n fs.ensureDirSync(outDir);\n });\n\n beforeEach(() => {\n locater = new SchemaXmlFileLocater();\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\n context = new SchemaContext();\n context.addLocater(locater);\n\n resultLocater = new SchemaXmlFileLocater();\n resultLocater.addSchemaSearchPath(path.join(__dirname, \"output\"));\n resultContext = new SchemaContext();\n resultContext.addLocater(resultLocater);\n });\n\n afterEach(() => {\n sinon.restore();\n });\n\n it(\"writeFile creates schema xml file successfully.\", async () => {\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n await SchemaXml.writeFile(schema!, outDir);\n\n const resultSchema = await resultContext.getSchema(schemaKey, SchemaMatchType.Exact);\n\n expect(resultSchema).to.not.be.undefined;\n expect(resultSchema?.schemaKey.matches(schema?.schemaKey as SchemaKey)).to.be.true;\n });\n\n it(\"writeFile with bad path specified, should fail.\", async () => {\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n await expect(SchemaXml.writeFile(schema!, \"badPath\")).to.be.rejectedWith(`The output directory 'badPath' does not exist.`);\n });\n\n it(\"writeFile, writeFile fails, failure handled properly.\", async () => {\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n sinon.stub(fs, \"writeFile\").rejects(new Error(\"SomeError\"));\n const outFile = path.resolve(outDir, `${schema!.name}.ecschema.xml`);\n\n await expect(SchemaXml.writeFile(schema!, outDir)).to.be.rejectedWith(`An error occurred writing to file '${outFile}': SomeError`);\n });\n});\n"]}
@@ -53,7 +53,7 @@ describe("SchemaXmlFileLocater tests:", () => {
53
53
  }
54
54
  catch (e) {
55
55
  const error = e;
56
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
56
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
57
57
  return;
58
58
  }
59
59
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -65,7 +65,7 @@ describe("SchemaXmlFileLocater tests:", () => {
65
65
  }
66
66
  catch (e) {
67
67
  const error = e;
68
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
68
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
69
69
  return;
70
70
  }
71
71
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -77,7 +77,7 @@ describe("SchemaXmlFileLocater tests:", () => {
77
77
  }
78
78
  catch (e) {
79
79
  const error = e;
80
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
80
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
81
81
  return;
82
82
  }
83
83
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -95,7 +95,7 @@ describe("SchemaXmlFileLocater tests:", () => {
95
95
  }
96
96
  catch (e) {
97
97
  const error = e;
98
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema);
98
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.UnableToLocateSchema);
99
99
  return;
100
100
  }
101
101
  chai_1.assert.fail();
@@ -159,23 +159,26 @@ describe("SchemaXmlFileLocater tests:", () => {
159
159
  });
160
160
  it("getSchemaKey, invalid xml, throws", () => {
161
161
  const schemaXml = `<ECSchemaBad schemaName="SchemaA" version="1.1.1"> </ECSchemaBad>`;
162
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find '<ECSchema>' tag in the given file`);
162
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find '<ECSchema>' tag in the given file`);
163
163
  });
164
164
  it("getSchemaKey, invalid schemaName attribute, throws", () => {
165
165
  const schemaXml = `<ECSchema schemaNameBad="SchemaA" version="1.1.1"> </ECSchema>`;
166
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
166
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
167
167
  });
168
168
  it("getSchemaKey, invalid schemaName, throws", () => {
169
169
  const schemaXml = `<ECSchema version="1.1.1" schemaName=""> </ECSchema>`;
170
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
170
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
171
171
  });
172
172
  it("getSchemaKey, invalid version attribute, throws", () => {
173
173
  const schemaXml = `<ECSchema schemaName="SchemaA" versionBad="1.1.1"> </ECSchema>`;
174
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
174
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
175
175
  });
176
176
  it("getSchemaKey, invalid version, throws", () => {
177
177
  const schemaXml = `<ECSchema schemaName="SchemaA" version=""> </ECSchema>`;
178
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
178
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
179
+ });
180
+ it("PublishedSchemaXmlFileLocater - should throw with incorrect argument", async () => {
181
+ chai_1.assert.throw(() => new SchemaXmlFileLocater_1.PublishedSchemaXmlFileLocater(__dirname), Error, `The directory ${path.join(__dirname, "ECSchemas")} containing standard schemas does not exist.`);
179
182
  });
180
183
  });
181
184
  //# sourceMappingURL=SchemaXmlFileLocator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaXmlFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlFileLocator.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, expect } from \"chai\";\r\nimport * as path from \"path\";\r\nimport { ECObjectsError, ECObjectsStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\r\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\r\n\r\ndescribe(\"SchemaXmlFileLocater tests:\", () => {\r\n let locater: SchemaXmlFileLocater;\r\n let context: SchemaContext;\r\n\r\n beforeEach(() => {\r\n locater = new SchemaXmlFileLocater();\r\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\r\n context = new SchemaContext();\r\n context.addLocater(locater);\r\n });\r\n\r\n it(\"locate valid schema with multiple references\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"locate valid schema with multiple references synchronously\", () => {\r\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = context.getSchemaSync(schemaKey, SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema called multiple times for same schema\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n\r\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\r\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\r\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n const context2 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n // locater should not cache, but context should cache\r\n assert.notEqual(locater1, locater2);\r\n assert.notEqual(locater1, context1);\r\n assert.strictEqual(context1, context2);\r\n });\r\n\r\n it(\"getSchema which does not exist, returns undefined\", async () => {\r\n const schemaKey = new SchemaKey(\"DoesNotExist\");\r\n\r\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\r\n });\r\n\r\n it(\"loadSchema from file, bad schema tag, throws\", async () => {\r\n const schemaKey = new SchemaKey(\"BadSchemaTag\");\r\n try {\r\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"loadSchema from file, bad schema name tag, throws\", async () => {\r\n const schemaKey = new SchemaKey(\"BadSchemaNameTag\");\r\n try {\r\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"loadSchema from file, bad schema version tag, throws\", async () => {\r\n const schemaKey = new SchemaKey(\"BadSchemaVersionTag\");\r\n\r\n try {\r\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"getSchema, full version, succeeds\", async () => {\r\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\r\n assert.isDefined(stub);\r\n const key = stub!.schemaKey as FileSchemaKey;\r\n assert.strictEqual(key.name, \"SchemaA\");\r\n assert.strictEqual(key.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, reference does not exist, throws.\", async () => {\r\n try {\r\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.UnableToLocateSchema);\r\n return;\r\n }\r\n\r\n assert.fail();\r\n });\r\n\r\n it(\"getSchema, references set\", async () => {\r\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\r\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\r\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\r\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schemaA);\r\n assert.strictEqual(schemaA!.references.length, 2);\r\n assert.deepEqual(schemaA!.references[0], schemaC);\r\n assert.deepEqual(schemaA!.references[1], schemaB);\r\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\r\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\r\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\r\n });\r\n\r\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\r\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\r\n });\r\n\r\n it(\"getSchema, latest, succeeds\", async () => {\r\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, succeeds\", async () => {\r\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\r\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\r\n });\r\n\r\n it(\"getSchema, latest read compatible, succeeds\", async () => {\r\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\r\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\r\n });\r\n\r\n it(\"sync - should ignore commented out schema references\", () => {\r\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"async - should ignore commented out schema references\", async () => {\r\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\r\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\r\n const key = locater.getSchemaKey(schemaXml);\r\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\r\n });\r\n it(\"getSchemaKey, invalid xml, throws\", () => {\r\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find '<ECSchema>' tag in the given file`);\r\n });\r\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\r\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\r\n });\r\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\r\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\r\n });\r\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\r\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\r\n });\r\n it(\"getSchemaKey, invalid version, throws\", () => {\r\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SchemaXmlFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlFileLocator.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;AAE/F,+BAAsC;AACtC,6BAA6B;AAC7B,gEAA+H;AAE/H,kEAA8F;AAE9F,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,OAA6B,CAAC;IAClC,IAAI,OAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,2CAAoB,EAAE,CAAC;QACrC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,OAAO,GAAG,IAAI,iCAAa,EAAE,CAAC;QAC9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,GAAG,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAEzE,aAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,SAAS,GAAG,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAEvE,aAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,SAAS,GAAG,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,KAAK,EAAE,IAAI,iCAAa,EAAE,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,KAAK,EAAE,IAAI,iCAAa,EAAE,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAE3E,qDAAqD;QACrD,aAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,aAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,SAAS,GAAG,IAAI,6BAAS,CAAC,cAAc,CAAC,CAAC;QAEhD,aAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,GAAG,IAAI,6BAAS,CAAC,cAAc,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAkB,CAAC;YACjC,aAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,kCAAc,CAAC,gBAAgB,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,aAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,SAAS,GAAG,IAAI,6BAAS,CAAC,kBAAkB,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAkB,CAAC;YACjC,aAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,kCAAc,CAAC,gBAAgB,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,aAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,SAAS,GAAG,IAAI,6BAAS,CAAC,qBAAqB,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mCAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAkB,CAAC;YACjC,aAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,kCAAc,CAAC,gBAAgB,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,aAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxG,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,IAAK,CAAC,SAA0B,CAAC;QAC7C,aAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxC,aAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAkB,CAAC;YACjC,aAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,kCAAc,CAAC,oBAAoB,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,aAAM,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAClG,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAClG,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAClG,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC;QAElG,aAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1B,aAAM,CAAC,WAAW,CAAC,OAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,aAAM,CAAC,SAAS,CAAC,OAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClD,aAAM,CAAC,SAAS,CAAC,OAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClD,aAAM,CAAC,SAAS,CAAC,OAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChE,aAAM,CAAC,SAAS,CAAC,OAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChE,aAAM,CAAC,SAAS,CAAC,OAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,aAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEzG,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,qBAAqB,CAAC,CAAC;QAE/G,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,aAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACxH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,oBAAoB,CAAC,CAAC;QAE9G,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,aAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,6BAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,oBAAoB,CAAC,CAAC;QAEpH,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mCAAe,CAAC,oBAAoB,CAAC,CAAC;QAEtH,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,SAAS,GAAG,6DAA6D,CAAC;QAChF,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,aAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,6BAAS,CAAC,SAAS,EAAE,IAAI,6BAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,mEAAmE,CAAC;QACtF,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAa,EAAE,mDAAmD,CAAC,CAAC;IAC7H,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,SAAS,GAAG,gEAAgE,CAAC;QACnF,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAa,EAAE,6EAA6E,CAAC,CAAC;IACvJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,SAAS,GAAG,sDAAsD,CAAC;QACzE,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAa,EAAE,6EAA6E,CAAC,CAAC;IACvJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,SAAS,GAAG,gEAAgE,CAAC;QACnF,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAa,EAAE,6EAA6E,CAAC,CAAC;IACvJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,SAAS,GAAG,wDAAwD,CAAC;QAC3E,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAa,EAAE,6EAA6E,CAAC,CAAC;IACvJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,aAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,oDAA6B,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,8CAA8C,CAAC,CAAC;IAC5K,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert, expect } from \"chai\";\nimport * as path from \"path\";\nimport { ECSchemaError, ECSchemaStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\nimport { PublishedSchemaXmlFileLocater, SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\n\ndescribe(\"SchemaXmlFileLocater tests:\", () => {\n let locater: SchemaXmlFileLocater;\n let context: SchemaContext;\n\n beforeEach(() => {\n locater = new SchemaXmlFileLocater();\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"locate valid schema with multiple references synchronously\", () => {\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema called multiple times for same schema\", async () => {\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n // locater should not cache, but context should cache\n assert.notEqual(locater1, locater2);\n assert.notEqual(locater1, context1);\n assert.strictEqual(context1, context2);\n });\n\n it(\"getSchema which does not exist, returns undefined\", async () => {\n const schemaKey = new SchemaKey(\"DoesNotExist\");\n\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\n });\n\n it(\"loadSchema from file, bad schema tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaTag\");\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema name tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaNameTag\");\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema version tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaVersionTag\");\n\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"getSchema, full version, succeeds\", async () => {\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\n assert.isDefined(stub);\n const key = stub!.schemaKey as FileSchemaKey;\n assert.strictEqual(key.name, \"SchemaA\");\n assert.strictEqual(key.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, reference does not exist, throws.\", async () => {\n try {\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.UnableToLocateSchema);\n return;\n }\n\n assert.fail();\n });\n\n it(\"getSchema, references set\", async () => {\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\n\n assert.isDefined(schemaA);\n assert.strictEqual(schemaA!.references.length, 2);\n assert.deepEqual(schemaA!.references[0], schemaC);\n assert.deepEqual(schemaA!.references[1], schemaB);\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\n });\n\n it(\"sync - should ignore commented out schema references\", () => {\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"async - should ignore commented out schema references\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n const key = locater.getSchemaKey(schemaXml);\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\n });\n it(\"getSchemaKey, invalid xml, throws\", () => {\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find '<ECSchema>' tag in the given file`);\n });\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid version, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"PublishedSchemaXmlFileLocater - should throw with incorrect argument\", async () => {\n assert.throw(() => new PublishedSchemaXmlFileLocater(__dirname), Error, `The directory ${path.join(__dirname, \"ECSchemas\")} containing standard schemas does not exist.`);\n });\n});\n"]}
@@ -77,7 +77,7 @@ describe("SchemaXmlStringLocater tests:", () => {
77
77
  }
78
78
  catch (e) {
79
79
  const error = e;
80
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
80
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
81
81
  return;
82
82
  }
83
83
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -89,7 +89,7 @@ describe("SchemaXmlStringLocater tests:", () => {
89
89
  }
90
90
  catch (e) {
91
91
  const error = e;
92
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
92
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
93
93
  return;
94
94
  }
95
95
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -101,7 +101,7 @@ describe("SchemaXmlStringLocater tests:", () => {
101
101
  }
102
102
  catch (e) {
103
103
  const error = e;
104
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
104
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
105
105
  return;
106
106
  }
107
107
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -122,7 +122,7 @@ describe("SchemaXmlStringLocater tests:", () => {
122
122
  }
123
123
  catch (e) {
124
124
  const error = e;
125
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema);
125
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.UnableToLocateSchema);
126
126
  return;
127
127
  }
128
128
  chai_1.assert.fail();
@@ -199,23 +199,23 @@ describe("SchemaXmlStringLocater tests:", () => {
199
199
  });
200
200
  it("getSchemaKey, invalid xml, throws", () => {
201
201
  const schemaXml = `<ECSchemaBad schemaName="SchemaA" version="1.1.1"> </ECSchemaBad>`;
202
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find '<ECSchema>' tag in the given string`);
202
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find '<ECSchema>' tag in the given string`);
203
203
  });
204
204
  it("getSchemaKey, invalid schemaName attribute, throws", () => {
205
205
  const schemaXml = `<ECSchema schemaNameBad="SchemaA" version="1.1.1"> </ECSchema>`;
206
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
206
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
207
207
  });
208
208
  it("getSchemaKey, invalid schemaName, throws", () => {
209
209
  const schemaXml = `<ECSchema version="1.1.1" schemaName=""> </ECSchema>`;
210
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
210
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
211
211
  });
212
212
  it("getSchemaKey, invalid version attribute, throws", () => {
213
213
  const schemaXml = `<ECSchema schemaName="SchemaA" versionBad="1.1.1"> </ECSchema>`;
214
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
214
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
215
215
  });
216
216
  it("getSchemaKey, invalid version, throws", () => {
217
217
  const schemaXml = `<ECSchema schemaName="SchemaA" version=""> </ECSchema>`;
218
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
218
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
219
219
  });
220
220
  });
221
221
  //# sourceMappingURL=SchemaXmlStringLocater.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaXmlStringLocater.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlStringLocater.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, expect } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as fs from \"fs\";\r\nimport { globSync } from \"glob\";\r\nimport { ECObjectsError, ECObjectsStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\r\nimport { StringSchemaKey } from \"../SchemaStringLocater\";\r\n\r\ndescribe(\"SchemaXmlStringLocater tests:\", () => {\r\n let locater: SchemaXmlStringLocater;\r\n let context: SchemaContext;\r\n let schemaStrings: string [];\r\n\r\n const loadSchemaString = (schemaName: string) => {\r\n const searchPath = path.join(__dirname, \"assets\", `${schemaName}.ecschema.xml`);\r\n const file = fs.readFileSync(searchPath);\r\n return file.toString();\r\n };\r\n\r\n const loadSchemaStrings = () => {\r\n const schemas: string [] = [];\r\n const searchPath = path.join(__dirname, \"assets\", \"Schema*.ecschema.xml\");\r\n const result = globSync(searchPath, { windowsPathsNoEscape: true });\r\n for (const match of result) {\r\n const file = fs.readFileSync(match);\r\n if (!file)\r\n continue;\r\n schemas.push(file.toString());\r\n }\r\n return schemas;\r\n };\r\n\r\n beforeEach(() => {\r\n schemaStrings = loadSchemaStrings();\r\n locater = new SchemaXmlStringLocater();\r\n context = new SchemaContext();\r\n context.addLocater(locater);\r\n });\r\n\r\n it(\"locate valid schema with multiple references\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"locate valid schema with multiple references synchronously\", () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = context.getSchemaSync(schemaKey, SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema called multiple times for same schema\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n\r\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\r\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\r\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n const context2 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n // locater should not cache, but context should cache\r\n assert.notEqual(locater1, locater2);\r\n assert.notEqual(locater1, context1);\r\n assert.strictEqual(context1, context2);\r\n });\r\n\r\n it(\"getSchema which does not exist, returns undefined\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const schemaKey = new SchemaKey(\"DoesNotExist\");\r\n\r\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\r\n });\r\n\r\n it(\"addSchemaString, bad schema tag, throws\", async () => {\r\n const schemaString = loadSchemaString(\"BadSchemaTag\");\r\n try {\r\n locater.addSchemaString(schemaString);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"addSchemaString, bad schema name tag, throws\", async () => {\r\n const schemaString = loadSchemaString(\"BadSchemaNameTag\");\r\n try {\r\n locater.addSchemaString(schemaString);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"addSchemaString, bad schema version tag, throws\", async () => {\r\n const schemaString = loadSchemaString(\"BadSchemaVersionTag\");\r\n try {\r\n locater.addSchemaString(schemaString);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"getSchema, full version, succeeds\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\r\n assert.isDefined(stub);\r\n const key = stub!.schemaKey as StringSchemaKey;\r\n assert.strictEqual(key.name, \"SchemaA\");\r\n assert.strictEqual(key.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, reference does not exist, throws.\", async () => {\r\n const schemaString = loadSchemaString(\"RefDoesNotExist\");\r\n locater.addSchemaString(schemaString);\r\n try {\r\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\r\n } catch (e) {\r\n const error = e as ECObjectsError;\r\n assert.strictEqual(error.errorNumber, ECObjectsStatus.UnableToLocateSchema);\r\n return;\r\n }\r\n\r\n assert.fail();\r\n });\r\n\r\n it(\"getSchema, references set\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n\r\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\r\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\r\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\r\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schemaA);\r\n assert.strictEqual(schemaA!.references.length, 2);\r\n assert.deepEqual(schemaA!.references[0], schemaC);\r\n assert.deepEqual(schemaA!.references[1], schemaB);\r\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\r\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\r\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\r\n });\r\n\r\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\r\n });\r\n\r\n it(\"getSchema, latest, succeeds\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, succeeds\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\r\n });\r\n\r\n it(\"getSchema, latest read compatible, succeeds\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\r\n });\r\n\r\n it(\"sync - should ignore commented out schema references\", () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const schemaString = loadSchemaString(\"RefCommentedOut\");\r\n locater.addSchemaString(schemaString);\r\n\r\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"async - should ignore commented out schema references\", async () => {\r\n locater.addSchemaStrings(schemaStrings);\r\n const schemaString = loadSchemaString(\"RefCommentedOut\");\r\n locater.addSchemaString(schemaString);\r\n\r\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\r\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\r\n const key = locater.getSchemaKey(schemaXml);\r\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\r\n });\r\n\r\n it(\"getSchemaKey, invalid xml, throws\", () => {\r\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find '<ECSchema>' tag in the given string`);\r\n });\r\n\r\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\r\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\r\n });\r\n\r\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\r\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\r\n });\r\n\r\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\r\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\r\n });\r\n\r\n it(\"getSchemaKey, invalid version, throws\", () => {\r\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\r\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\r\n });\r\n});\r\n\r\n"]}
1
+ {"version":3,"file":"SchemaXmlStringLocater.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlStringLocater.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert, expect } from \"chai\";\nimport * as path from \"path\";\nimport * as fs from \"fs\";\nimport { globSync } from \"glob\";\nimport { ECSchemaError, ECSchemaStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\nimport { StringSchemaKey } from \"../SchemaStringLocater\";\n\ndescribe(\"SchemaXmlStringLocater tests:\", () => {\n let locater: SchemaXmlStringLocater;\n let context: SchemaContext;\n let schemaStrings: string [];\n\n const loadSchemaString = (schemaName: string) => {\n const searchPath = path.join(__dirname, \"assets\", `${schemaName}.ecschema.xml`);\n const file = fs.readFileSync(searchPath);\n return file.toString();\n };\n\n const loadSchemaStrings = () => {\n const schemas: string [] = [];\n const searchPath = path.join(__dirname, \"assets\", \"Schema*.ecschema.xml\");\n const result = globSync(searchPath, { windowsPathsNoEscape: true });\n for (const match of result) {\n const file = fs.readFileSync(match);\n if (!file)\n continue;\n schemas.push(file.toString());\n }\n return schemas;\n };\n\n beforeEach(() => {\n schemaStrings = loadSchemaStrings();\n locater = new SchemaXmlStringLocater();\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"locate valid schema with multiple references synchronously\", () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema called multiple times for same schema\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n // locater should not cache, but context should cache\n assert.notEqual(locater1, locater2);\n assert.notEqual(locater1, context1);\n assert.strictEqual(context1, context2);\n });\n\n it(\"getSchema which does not exist, returns undefined\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"DoesNotExist\");\n\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\n });\n\n it(\"addSchemaString, bad schema tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"addSchemaString, bad schema name tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaNameTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"addSchemaString, bad schema version tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaVersionTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"getSchema, full version, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\n assert.isDefined(stub);\n const key = stub!.schemaKey as StringSchemaKey;\n assert.strictEqual(key.name, \"SchemaA\");\n assert.strictEqual(key.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, reference does not exist, throws.\", async () => {\n const schemaString = loadSchemaString(\"RefDoesNotExist\");\n locater.addSchemaString(schemaString);\n try {\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.UnableToLocateSchema);\n return;\n }\n\n assert.fail();\n });\n\n it(\"getSchema, references set\", async () => {\n locater.addSchemaStrings(schemaStrings);\n\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\n\n assert.isDefined(schemaA);\n assert.strictEqual(schemaA!.references.length, 2);\n assert.deepEqual(schemaA!.references[0], schemaC);\n assert.deepEqual(schemaA!.references[1], schemaB);\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\n locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\n locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\n });\n\n it(\"sync - should ignore commented out schema references\", () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaString = loadSchemaString(\"RefCommentedOut\");\n locater.addSchemaString(schemaString);\n\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"async - should ignore commented out schema references\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaString = loadSchemaString(\"RefCommentedOut\");\n locater.addSchemaString(schemaString);\n\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n const key = locater.getSchemaKey(schemaXml);\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\n });\n\n it(\"getSchemaKey, invalid xml, throws\", () => {\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find '<ECSchema>' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid version, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n});\n\n"]}