@itwin/ecschema-locaters 4.0.0-dev.52 → 4.0.0-dev.54

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 (31) hide show
  1. package/lib/cjs/SchemaFileLocater.d.ts +82 -82
  2. package/lib/cjs/SchemaFileLocater.js +212 -212
  3. package/lib/cjs/SchemaFileLocater.js.map +1 -1
  4. package/lib/cjs/SchemaFileUtility.d.ts +17 -17
  5. package/lib/cjs/SchemaFileUtility.js +48 -48
  6. package/lib/cjs/SchemaFileUtility.js.map +1 -1
  7. package/lib/cjs/SchemaJsonFileLocater.d.ts +33 -33
  8. package/lib/cjs/SchemaJsonFileLocater.js +90 -90
  9. package/lib/cjs/SchemaJsonFileLocater.js.map +1 -1
  10. package/lib/cjs/SchemaXmlFileLocater.d.ts +33 -33
  11. package/lib/cjs/SchemaXmlFileLocater.js +93 -93
  12. package/lib/cjs/SchemaXmlFileLocater.js.map +1 -1
  13. package/lib/cjs/StubSchemaXmlFileLocater.d.ts +69 -69
  14. package/lib/cjs/StubSchemaXmlFileLocater.js +177 -177
  15. package/lib/cjs/StubSchemaXmlFileLocater.js.map +1 -1
  16. package/lib/cjs/ecschema-locaters.d.ts +17 -17
  17. package/lib/cjs/ecschema-locaters.js +37 -33
  18. package/lib/cjs/ecschema-locaters.js.map +1 -1
  19. package/lib/cjs/test/SchemaFileUtility.test.d.ts +1 -1
  20. package/lib/cjs/test/SchemaFileUtility.test.js +56 -56
  21. package/lib/cjs/test/SchemaFileUtility.test.js.map +1 -1
  22. package/lib/cjs/test/SchemaJsonFileLocator.test.d.ts +1 -1
  23. package/lib/cjs/test/SchemaJsonFileLocator.test.js +119 -119
  24. package/lib/cjs/test/SchemaJsonFileLocator.test.js.map +1 -1
  25. package/lib/cjs/test/SchemaXmlFileLocator.test.d.ts +1 -1
  26. package/lib/cjs/test/SchemaXmlFileLocator.test.js +180 -180
  27. package/lib/cjs/test/SchemaXmlFileLocator.test.js.map +1 -1
  28. package/lib/cjs/test/StubSchemaXmlFileLocater.test.d.ts +1 -1
  29. package/lib/cjs/test/StubSchemaXmlFileLocater.test.js +170 -170
  30. package/lib/cjs/test/StubSchemaXmlFileLocater.test.js.map +1 -1
  31. package/package.json +6 -6
@@ -1,181 +1,181 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const chai_1 = require("chai");
8
- const path = require("path");
9
- const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
10
- const SchemaXmlFileLocater_1 = require("../SchemaXmlFileLocater");
11
- describe("SchemaXmlFileLocater tests:", () => {
12
- let locater;
13
- let context;
14
- beforeEach(() => {
15
- locater = new SchemaXmlFileLocater_1.SchemaXmlFileLocater();
16
- locater.addSchemaSearchPath(path.join(__dirname, "assets"));
17
- context = new ecschema_metadata_1.SchemaContext();
18
- context.addLocater(locater);
19
- });
20
- it("locate valid schema with multiple references", async () => {
21
- const schemaKey = new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1);
22
- const schema = await context.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
23
- chai_1.assert.isDefined(schema);
24
- chai_1.assert.strictEqual(schema.schemaKey.name, "SchemaA");
25
- chai_1.assert.strictEqual(schema.schemaKey.version.toString(), "01.01.01");
26
- });
27
- it("locate valid schema with multiple references synchronously", () => {
28
- const schemaKey = new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1);
29
- const schema = context.getSchemaSync(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
30
- chai_1.assert.isDefined(schema);
31
- chai_1.assert.strictEqual(schema.schemaKey.name, "SchemaA");
32
- chai_1.assert.strictEqual(schema.schemaKey.version.toString(), "01.01.01");
33
- });
34
- it("getSchema called multiple times for same schema", async () => {
35
- const schemaKey = new ecschema_metadata_1.SchemaKey("SchemaD", 4, 4, 4);
36
- const locater1 = await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact, new ecschema_metadata_1.SchemaContext());
37
- const locater2 = await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact, new ecschema_metadata_1.SchemaContext());
38
- const context1 = await context.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
39
- const context2 = await context.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
40
- // locater should not cache, but context should cache
41
- chai_1.assert.notEqual(locater1, locater2);
42
- chai_1.assert.notEqual(locater1, context1);
43
- chai_1.assert.strictEqual(context1, context2);
44
- });
45
- it("getSchema which does not exist, returns undefined", async () => {
46
- const schemaKey = new ecschema_metadata_1.SchemaKey("DoesNotExist");
47
- chai_1.assert.isUndefined(await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact, context));
48
- });
49
- it("loadSchema from file, bad schema tag, throws", async () => {
50
- const schemaKey = new ecschema_metadata_1.SchemaKey("BadSchemaTag");
51
- try {
52
- await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Latest, context);
53
- }
54
- catch (e) {
55
- const error = e;
56
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
57
- return;
58
- }
59
- chai_1.assert.fail(0, 1, "Expected ECObjects exception");
60
- });
61
- it("loadSchema from file, bad schema name tag, throws", async () => {
62
- const schemaKey = new ecschema_metadata_1.SchemaKey("BadSchemaNameTag");
63
- try {
64
- await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Latest, context);
65
- }
66
- catch (e) {
67
- const error = e;
68
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
69
- return;
70
- }
71
- chai_1.assert.fail(0, 1, "Expected ECObjects exception");
72
- });
73
- it("loadSchema from file, bad schema version tag, throws", async () => {
74
- const schemaKey = new ecschema_metadata_1.SchemaKey("BadSchemaVersionTag");
75
- try {
76
- await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Latest, context);
77
- }
78
- catch (e) {
79
- const error = e;
80
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
81
- return;
82
- }
83
- chai_1.assert.fail(0, 1, "Expected ECObjects exception");
84
- });
85
- it("getSchema, full version, succeeds", async () => {
86
- const stub = await locater.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.Exact, context);
87
- chai_1.assert.isDefined(stub);
88
- const key = stub.schemaKey;
89
- chai_1.assert.strictEqual(key.name, "SchemaA");
90
- chai_1.assert.strictEqual(key.version.toString(), "01.01.01");
91
- });
92
- it("getSchema, reference does not exist, throws.", async () => {
93
- try {
94
- await locater.getSchema(new ecschema_metadata_1.SchemaKey("RefDoesNotExist", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.Exact, context);
95
- }
96
- catch (e) {
97
- const error = e;
98
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema);
99
- return;
100
- }
101
- chai_1.assert.fail();
102
- });
103
- it("getSchema, references set", async () => {
104
- const schemaA = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.Exact);
105
- const schemaB = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaB", 2, 2, 2), ecschema_metadata_1.SchemaMatchType.Exact);
106
- const schemaC = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaC", 3, 3, 3), ecschema_metadata_1.SchemaMatchType.Exact);
107
- const schemaD = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaD", 4, 4, 4), ecschema_metadata_1.SchemaMatchType.Exact);
108
- chai_1.assert.isDefined(schemaA);
109
- chai_1.assert.strictEqual(schemaA.references.length, 2);
110
- chai_1.assert.deepEqual(schemaA.references[0], schemaC);
111
- chai_1.assert.deepEqual(schemaA.references[1], schemaB);
112
- chai_1.assert.deepEqual(schemaA.references[0].references[0], schemaD);
113
- chai_1.assert.deepEqual(schemaA.references[1].references[0], schemaC);
114
- chai_1.assert.deepEqual(schemaA.references[1].references[1], schemaD);
115
- });
116
- it("getSchema, exact version, wrong minor, fails", async () => {
117
- chai_1.assert.isUndefined(await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 2), ecschema_metadata_1.SchemaMatchType.Exact));
118
- });
119
- it("getSchema, latest, succeeds", async () => {
120
- const stub = await locater.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 0), ecschema_metadata_1.SchemaMatchType.Latest, context);
121
- chai_1.assert.isDefined(stub);
122
- chai_1.assert.strictEqual(stub.schemaKey.name, "SchemaA");
123
- chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "02.00.02");
124
- });
125
- it("getSchema, latest write compatible, succeeds", async () => {
126
- const stub = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 0), ecschema_metadata_1.SchemaMatchType.LatestWriteCompatible);
127
- chai_1.assert.isDefined(stub);
128
- chai_1.assert.strictEqual(stub.schemaKey.name, "SchemaA");
129
- chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
130
- });
131
- it("getSchema, latest write compatible, write version wrong, fails", async () => {
132
- chai_1.assert.isUndefined(await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 2, 0), ecschema_metadata_1.SchemaMatchType.LatestWriteCompatible));
133
- });
134
- it("getSchema, latest read compatible, succeeds", async () => {
135
- const stub = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 0, 0), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible);
136
- chai_1.assert.isDefined(stub);
137
- chai_1.assert.strictEqual(stub.schemaKey.name, "SchemaA");
138
- chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
139
- });
140
- it("getSchema, latest read compatible, read version wrong, fails", async () => {
141
- chai_1.assert.isUndefined(await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 2, 1, 1), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible));
142
- });
143
- it("sync - should ignore commented out schema references", () => {
144
- const stub = context.getSchemaSync(new ecschema_metadata_1.SchemaKey("RefCommentedOut", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible);
145
- chai_1.assert.isDefined(stub);
146
- chai_1.assert.strictEqual(stub.schemaKey.name, "RefCommentedOut");
147
- chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
148
- });
149
- it("async - should ignore commented out schema references", async () => {
150
- const stub = await context.getSchema(new ecschema_metadata_1.SchemaKey("RefCommentedOut", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible);
151
- chai_1.assert.isDefined(stub);
152
- chai_1.assert.strictEqual(stub.schemaKey.name, "RefCommentedOut");
153
- chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
154
- });
155
- it("getSchemaKey, valid version and name, succeeds", () => {
156
- const schemaXml = `<ECSchema schemaName="SchemaA" version="1.1.1"> </ECSchema>`;
157
- const key = locater.getSchemaKey(schemaXml);
158
- chai_1.assert.deepEqual(key, new ecschema_metadata_1.SchemaKey("SchemaA", new ecschema_metadata_1.ECVersion(1, 1, 1)));
159
- });
160
- it("getSchemaKey, invalid xml, throws", () => {
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`);
163
- });
164
- it("getSchemaKey, invalid schemaName attribute, throws", () => {
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`);
167
- });
168
- it("getSchemaKey, invalid schemaName, throws", () => {
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`);
171
- });
172
- it("getSchemaKey, invalid version attribute, throws", () => {
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`);
175
- });
176
- it("getSchemaKey, invalid version, throws", () => {
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`);
179
- });
180
- });
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const chai_1 = require("chai");
8
+ const path = require("path");
9
+ const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
10
+ const SchemaXmlFileLocater_1 = require("../SchemaXmlFileLocater");
11
+ describe("SchemaXmlFileLocater tests:", () => {
12
+ let locater;
13
+ let context;
14
+ beforeEach(() => {
15
+ locater = new SchemaXmlFileLocater_1.SchemaXmlFileLocater();
16
+ locater.addSchemaSearchPath(path.join(__dirname, "assets"));
17
+ context = new ecschema_metadata_1.SchemaContext();
18
+ context.addLocater(locater);
19
+ });
20
+ it("locate valid schema with multiple references", async () => {
21
+ const schemaKey = new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1);
22
+ const schema = await context.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
23
+ chai_1.assert.isDefined(schema);
24
+ chai_1.assert.strictEqual(schema.schemaKey.name, "SchemaA");
25
+ chai_1.assert.strictEqual(schema.schemaKey.version.toString(), "01.01.01");
26
+ });
27
+ it("locate valid schema with multiple references synchronously", () => {
28
+ const schemaKey = new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1);
29
+ const schema = context.getSchemaSync(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
30
+ chai_1.assert.isDefined(schema);
31
+ chai_1.assert.strictEqual(schema.schemaKey.name, "SchemaA");
32
+ chai_1.assert.strictEqual(schema.schemaKey.version.toString(), "01.01.01");
33
+ });
34
+ it("getSchema called multiple times for same schema", async () => {
35
+ const schemaKey = new ecschema_metadata_1.SchemaKey("SchemaD", 4, 4, 4);
36
+ const locater1 = await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact, new ecschema_metadata_1.SchemaContext());
37
+ const locater2 = await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact, new ecschema_metadata_1.SchemaContext());
38
+ const context1 = await context.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
39
+ const context2 = await context.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact);
40
+ // locater should not cache, but context should cache
41
+ chai_1.assert.notEqual(locater1, locater2);
42
+ chai_1.assert.notEqual(locater1, context1);
43
+ chai_1.assert.strictEqual(context1, context2);
44
+ });
45
+ it("getSchema which does not exist, returns undefined", async () => {
46
+ const schemaKey = new ecschema_metadata_1.SchemaKey("DoesNotExist");
47
+ chai_1.assert.isUndefined(await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Exact, context));
48
+ });
49
+ it("loadSchema from file, bad schema tag, throws", async () => {
50
+ const schemaKey = new ecschema_metadata_1.SchemaKey("BadSchemaTag");
51
+ try {
52
+ await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Latest, context);
53
+ }
54
+ catch (e) {
55
+ const error = e;
56
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
57
+ return;
58
+ }
59
+ chai_1.assert.fail(0, 1, "Expected ECObjects exception");
60
+ });
61
+ it("loadSchema from file, bad schema name tag, throws", async () => {
62
+ const schemaKey = new ecschema_metadata_1.SchemaKey("BadSchemaNameTag");
63
+ try {
64
+ await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Latest, context);
65
+ }
66
+ catch (e) {
67
+ const error = e;
68
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
69
+ return;
70
+ }
71
+ chai_1.assert.fail(0, 1, "Expected ECObjects exception");
72
+ });
73
+ it("loadSchema from file, bad schema version tag, throws", async () => {
74
+ const schemaKey = new ecschema_metadata_1.SchemaKey("BadSchemaVersionTag");
75
+ try {
76
+ await locater.getSchema(schemaKey, ecschema_metadata_1.SchemaMatchType.Latest, context);
77
+ }
78
+ catch (e) {
79
+ const error = e;
80
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
81
+ return;
82
+ }
83
+ chai_1.assert.fail(0, 1, "Expected ECObjects exception");
84
+ });
85
+ it("getSchema, full version, succeeds", async () => {
86
+ const stub = await locater.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.Exact, context);
87
+ chai_1.assert.isDefined(stub);
88
+ const key = stub.schemaKey;
89
+ chai_1.assert.strictEqual(key.name, "SchemaA");
90
+ chai_1.assert.strictEqual(key.version.toString(), "01.01.01");
91
+ });
92
+ it("getSchema, reference does not exist, throws.", async () => {
93
+ try {
94
+ await locater.getSchema(new ecschema_metadata_1.SchemaKey("RefDoesNotExist", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.Exact, context);
95
+ }
96
+ catch (e) {
97
+ const error = e;
98
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema);
99
+ return;
100
+ }
101
+ chai_1.assert.fail();
102
+ });
103
+ it("getSchema, references set", async () => {
104
+ const schemaA = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.Exact);
105
+ const schemaB = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaB", 2, 2, 2), ecschema_metadata_1.SchemaMatchType.Exact);
106
+ const schemaC = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaC", 3, 3, 3), ecschema_metadata_1.SchemaMatchType.Exact);
107
+ const schemaD = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaD", 4, 4, 4), ecschema_metadata_1.SchemaMatchType.Exact);
108
+ chai_1.assert.isDefined(schemaA);
109
+ chai_1.assert.strictEqual(schemaA.references.length, 2);
110
+ chai_1.assert.deepEqual(schemaA.references[0], schemaC);
111
+ chai_1.assert.deepEqual(schemaA.references[1], schemaB);
112
+ chai_1.assert.deepEqual(schemaA.references[0].references[0], schemaD);
113
+ chai_1.assert.deepEqual(schemaA.references[1].references[0], schemaC);
114
+ chai_1.assert.deepEqual(schemaA.references[1].references[1], schemaD);
115
+ });
116
+ it("getSchema, exact version, wrong minor, fails", async () => {
117
+ chai_1.assert.isUndefined(await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 2), ecschema_metadata_1.SchemaMatchType.Exact));
118
+ });
119
+ it("getSchema, latest, succeeds", async () => {
120
+ const stub = await locater.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 0), ecschema_metadata_1.SchemaMatchType.Latest, context);
121
+ chai_1.assert.isDefined(stub);
122
+ chai_1.assert.strictEqual(stub.schemaKey.name, "SchemaA");
123
+ chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "02.00.02");
124
+ });
125
+ it("getSchema, latest write compatible, succeeds", async () => {
126
+ const stub = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 1, 0), ecschema_metadata_1.SchemaMatchType.LatestWriteCompatible);
127
+ chai_1.assert.isDefined(stub);
128
+ chai_1.assert.strictEqual(stub.schemaKey.name, "SchemaA");
129
+ chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
130
+ });
131
+ it("getSchema, latest write compatible, write version wrong, fails", async () => {
132
+ chai_1.assert.isUndefined(await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 2, 0), ecschema_metadata_1.SchemaMatchType.LatestWriteCompatible));
133
+ });
134
+ it("getSchema, latest read compatible, succeeds", async () => {
135
+ const stub = await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 1, 0, 0), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible);
136
+ chai_1.assert.isDefined(stub);
137
+ chai_1.assert.strictEqual(stub.schemaKey.name, "SchemaA");
138
+ chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
139
+ });
140
+ it("getSchema, latest read compatible, read version wrong, fails", async () => {
141
+ chai_1.assert.isUndefined(await context.getSchema(new ecschema_metadata_1.SchemaKey("SchemaA", 2, 1, 1), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible));
142
+ });
143
+ it("sync - should ignore commented out schema references", () => {
144
+ const stub = context.getSchemaSync(new ecschema_metadata_1.SchemaKey("RefCommentedOut", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible);
145
+ chai_1.assert.isDefined(stub);
146
+ chai_1.assert.strictEqual(stub.schemaKey.name, "RefCommentedOut");
147
+ chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
148
+ });
149
+ it("async - should ignore commented out schema references", async () => {
150
+ const stub = await context.getSchema(new ecschema_metadata_1.SchemaKey("RefCommentedOut", 1, 1, 1), ecschema_metadata_1.SchemaMatchType.LatestReadCompatible);
151
+ chai_1.assert.isDefined(stub);
152
+ chai_1.assert.strictEqual(stub.schemaKey.name, "RefCommentedOut");
153
+ chai_1.assert.strictEqual(stub.schemaKey.version.toString(), "01.01.01");
154
+ });
155
+ it("getSchemaKey, valid version and name, succeeds", () => {
156
+ const schemaXml = `<ECSchema schemaName="SchemaA" version="1.1.1"> </ECSchema>`;
157
+ const key = locater.getSchemaKey(schemaXml);
158
+ chai_1.assert.deepEqual(key, new ecschema_metadata_1.SchemaKey("SchemaA", new ecschema_metadata_1.ECVersion(1, 1, 1)));
159
+ });
160
+ it("getSchemaKey, invalid xml, throws", () => {
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`);
163
+ });
164
+ it("getSchemaKey, invalid schemaName attribute, throws", () => {
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`);
167
+ });
168
+ it("getSchemaKey, invalid schemaName, throws", () => {
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`);
171
+ });
172
+ it("getSchemaKey, invalid version attribute, throws", () => {
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`);
175
+ });
176
+ it("getSchemaKey, invalid version, throws", () => {
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`);
179
+ });
180
+ });
181
181
  //# 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":"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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 { ECObjectsError, ECObjectsStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\nimport { 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 ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.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 ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.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 ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.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 ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.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(ECObjectsError, `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(ECObjectsError, `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(ECObjectsError, `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(ECObjectsError, `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(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n});\n"]}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=StubSchemaXmlFileLocater.test.d.ts.map