@itwin/presentation-core-interop 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/lib/cjs/core-interop/QueryExecutor.d.ts.map +1 -1
- package/lib/cjs/core-interop/QueryExecutor.js +5 -1
- package/lib/cjs/core-interop/QueryExecutor.js.map +1 -1
- package/lib/esm/core-interop/QueryExecutor.d.ts.map +1 -1
- package/lib/esm/core-interop/QueryExecutor.js +5 -1
- package/lib/esm/core-interop/QueryExecutor.js.map +1 -1
- package/package.json +12 -12
- package/.mocharc.json +0 -8
- package/.nycrc +0 -14
- package/api/presentation-core-interop.api.md +0 -38
- package/api/presentation-core-interop.exports.csv +0 -7
- package/eslint.config.js +0 -14
- package/lib/cjs/test/Formatting.test.d.ts +0 -2
- package/lib/cjs/test/Formatting.test.d.ts.map +0 -1
- package/lib/cjs/test/Formatting.test.js +0 -282
- package/lib/cjs/test/Formatting.test.js.map +0 -1
- package/lib/cjs/test/Logging.test.d.ts +0 -2
- package/lib/cjs/test/Logging.test.d.ts.map +0 -1
- package/lib/cjs/test/Logging.test.js +0 -57
- package/lib/cjs/test/Logging.test.js.map +0 -1
- package/lib/cjs/test/Metadata.test.d.ts +0 -2
- package/lib/cjs/test/Metadata.test.d.ts.map +0 -1
- package/lib/cjs/test/Metadata.test.js +0 -684
- package/lib/cjs/test/Metadata.test.js.map +0 -1
- package/lib/cjs/test/QueryExecutor.test.d.ts +0 -2
- package/lib/cjs/test/QueryExecutor.test.d.ts.map +0 -1
- package/lib/cjs/test/QueryExecutor.test.js +0 -178
- package/lib/cjs/test/QueryExecutor.test.js.map +0 -1
- package/lib/cjs/test/Transactions.test.d.ts +0 -2
- package/lib/cjs/test/Transactions.test.d.ts.map +0 -1
- package/lib/cjs/test/Transactions.test.js +0 -73
- package/lib/cjs/test/Transactions.test.js.map +0 -1
- package/lib/cjs/test/index.d.ts +0 -2
- package/lib/cjs/test/index.d.ts.map +0 -1
- package/lib/cjs/test/index.js +0 -43
- package/lib/cjs/test/index.js.map +0 -1
- package/lib/esm/test/Formatting.test.d.ts +0 -2
- package/lib/esm/test/Formatting.test.d.ts.map +0 -1
- package/lib/esm/test/Formatting.test.js +0 -277
- package/lib/esm/test/Formatting.test.js.map +0 -1
- package/lib/esm/test/Logging.test.d.ts +0 -2
- package/lib/esm/test/Logging.test.d.ts.map +0 -1
- package/lib/esm/test/Logging.test.js +0 -52
- package/lib/esm/test/Logging.test.js.map +0 -1
- package/lib/esm/test/Metadata.test.d.ts +0 -2
- package/lib/esm/test/Metadata.test.d.ts.map +0 -1
- package/lib/esm/test/Metadata.test.js +0 -679
- package/lib/esm/test/Metadata.test.js.map +0 -1
- package/lib/esm/test/QueryExecutor.test.d.ts +0 -2
- package/lib/esm/test/QueryExecutor.test.d.ts.map +0 -1
- package/lib/esm/test/QueryExecutor.test.js +0 -173
- package/lib/esm/test/QueryExecutor.test.js.map +0 -1
- package/lib/esm/test/Transactions.test.d.ts +0 -2
- package/lib/esm/test/Transactions.test.d.ts.map +0 -1
- package/lib/esm/test/Transactions.test.js +0 -68
- package/lib/esm/test/Transactions.test.js.map +0 -1
- package/lib/esm/test/index.d.ts +0 -2
- package/lib/esm/test/index.d.ts.map +0 -1
- package/lib/esm/test/index.js +0 -15
- package/lib/esm/test/index.js.map +0 -1
- package/src/core-interop/Formatting.ts +0 -194
- package/src/core-interop/Logging.ts +0 -58
- package/src/core-interop/Metadata.ts +0 -62
- package/src/core-interop/MetadataInternal.ts +0 -413
- package/src/core-interop/QueryExecutor.ts +0 -122
- package/src/core-interop/Transactions.ts +0 -92
- package/src/presentation-core-interop.ts +0 -10
- package/src/test/Formatting.test.ts +0 -358
- package/src/test/Logging.test.ts +0 -59
- package/src/test/Metadata.test.ts +0 -786
- package/src/test/QueryExecutor.test.ts +0 -217
- package/src/test/Transactions.test.ts +0 -74
- package/src/test/index.ts +0 -17
- package/tsconfig.cjs.json +0 -7
- package/tsconfig.esm.json +0 -7
- package/tsconfig.json +0 -14
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Metadata.test.js","sourceRoot":"","sources":["../../../src/test/Metadata.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 { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { assert } from \"@itwin/core-bentley\";\nimport {\n ECClass as CoreClass,\n EnumerationArrayProperty as CoreEnumerationArrayProperty,\n EnumerationProperty as CoreEnumerationProperty,\n Enumerator as CoreEnumerator,\n NavigationProperty as CoreNavigationProperty,\n PrimitiveArrayProperty as CorePrimitiveArrayProperty,\n PrimitiveProperty as CorePrimitiveProperty,\n Schema as CoreSchema,\n StructArrayProperty as CoreStructArrayProperty,\n StructProperty as CoreStructProperty,\n PrimitiveType,\n RelationshipMultiplicity,\n SchemaContext,\n SchemaItemType,\n SchemaKey,\n StrengthDirection,\n} from \"@itwin/ecschema-metadata\";\nimport { EC } from \"@itwin/presentation-shared\";\nimport { createECSchemaProvider } from \"../core-interop/Metadata\";\nimport { createECClass, createECProperty, createECSchema } from \"../core-interop/MetadataInternal\";\n\ndescribe(\"createECSchemaProvider\", () => {\n describe(\"getSchema\", () => {\n it(\"returns schema from schema context\", async () => {\n const matchSchemaName = sinon.match((key: SchemaKey) => key.compareByName(\"x\"));\n const schemaContext = {\n getSchema: sinon\n .stub<[SchemaKey], CoreSchema>()\n .withArgs(matchSchemaName)\n .resolves({\n name: \"y\",\n } as unknown as CoreSchema),\n };\n\n const provider = createECSchemaProvider(schemaContext as unknown as SchemaContext);\n const schema = await provider.getSchema(\"x\");\n assert(schema !== undefined);\n\n expect(schemaContext.getSchema).to.be.calledOnceWith(matchSchemaName);\n expect(schema.name).to.eq(\"y\");\n expect(typeof schema.getClass === \"function\").to.be.true;\n });\n\n // a test for our workaround for https://github.com/iTwin/itwinjs-core/issues/6542\n it(\"handles duplicate schema in cache error\", async () => {\n const schemaContext = {\n getSchema: sinon.stub<[SchemaKey], CoreSchema>(),\n };\n schemaContext.getSchema.onFirstCall().resolves({ name: \"x\" });\n schemaContext.getSchema.onSecondCall().rejects(new Error(\"The schema, x.01.02.03, already exists within this cache\"));\n schemaContext.getSchema.onThirdCall().resolves({ name: \"x\" });\n\n const provider = createECSchemaProvider(schemaContext as unknown as SchemaContext);\n await Promise.all([provider.getSchema(\"x\"), provider.getSchema(\"x\")]);\n\n expect(schemaContext.getSchema).to.be.calledThrice;\n });\n\n it(`returns undefined on \"schema not found\" error`, async () => {\n const schemaContext = {\n getSchema: sinon.stub<[SchemaKey], CoreSchema>(),\n };\n schemaContext.getSchema.rejects(new Error(\"schema not found\"));\n\n const provider = createECSchemaProvider(schemaContext as unknown as SchemaContext);\n expect(await provider.getSchema(\"x\")).to.be.undefined;\n });\n\n it(\"re-throws SchemaContext errors\", async () => {\n const schemaContext = {\n getSchema: sinon.stub<[SchemaKey], CoreSchema>(),\n };\n schemaContext.getSchema.rejects(new Error(\"Unknown error\"));\n\n const provider = createECSchemaProvider(schemaContext as unknown as SchemaContext);\n await expect(provider.getSchema(\"x\")).to.eventually.be.rejected;\n expect(schemaContext.getSchema).to.be.calledOnce;\n });\n\n it(\"returns undefined from schema context\", async () => {\n const matchSchemaName = sinon.match((key: SchemaKey) => key.compareByName(\"x\"));\n const schemaContext = {\n getSchema: sinon.stub().resolves(undefined),\n };\n\n const provider = createECSchemaProvider(schemaContext);\n const schema = await provider.getSchema(\"x\");\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(schemaContext.getSchema).to.be.calledOnceWith(matchSchemaName);\n expect(schema).to.be.undefined;\n });\n });\n});\n\ndescribe(\"createECSchema\", () => {\n describe(\"getClass\", () => {\n it(\"returns class from core schema\", async () => {\n const coreSchema = {\n name: \"s\",\n getItem: sinon.stub().resolves({\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n schemaItemType: SchemaItemType.EntityClass,\n }),\n } as unknown as CoreSchema;\n\n const schema = createECSchema(coreSchema);\n const result = await schema.getClass(\"c\");\n assert(result !== undefined);\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(coreSchema.getItem).to.be.calledOnceWith(\"c\");\n expect(result.schema.name).to.eq(\"s\");\n expect(result.fullName).to.eq(\"s.c\");\n expect(result.name).to.eq(\"c\");\n expect(result.label).to.eq(\"C\");\n expect(typeof result.is === \"function\").to.be.true;\n });\n\n it(\"returns undefined from core schema\", async () => {\n const coreSchema = {\n name: \"s\",\n getItem: sinon.stub().resolves(undefined),\n } as unknown as CoreSchema;\n\n const schema = createECSchema(coreSchema);\n const result = await schema.getClass(\"c\");\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(coreSchema.getItem).to.be.calledOnceWith(\"c\");\n expect(result).to.be.undefined;\n });\n });\n});\n\ndescribe(\"createECClass\", () => {\n const schema: EC.Schema = {\n name: \"s\",\n async getClass() {\n return undefined;\n },\n };\n\n it(\"creates class using schema from core class\", async () => {\n const coreClass = {\n schemaItemType: SchemaItemType.EntityClass,\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n schema: { name: \"core-schema\" },\n } as unknown as CoreClass;\n const result = createECClass(coreClass);\n expect(result.schema.name).to.eq(\"core-schema\");\n });\n\n it(\"creates entity class from core class\", async () => {\n const coreClass = {\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n schemaItemType: SchemaItemType.EntityClass,\n } as unknown as CoreClass;\n const result = createECClass(coreClass, schema);\n expect(result.isEntityClass()).to.be.true;\n expect(result.isRelationshipClass()).to.be.false;\n expect(result.isStructClass()).to.be.false;\n expect(result.isMixin()).to.be.false;\n expect(result.schema.name).to.eq(\"s\");\n expect(result.fullName).to.eq(\"s.c\");\n expect(result.name).to.eq(\"c\");\n expect(result.label).to.eq(\"C\");\n expect(typeof result.is === \"function\").to.be.true;\n });\n\n it(\"creates relationship class from core class\", async () => {\n const coreClass = {\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n schemaItemType: SchemaItemType.RelationshipClass,\n } as unknown as CoreClass;\n const result = createECClass(coreClass, schema);\n expect(result.isEntityClass()).to.be.false;\n expect(result.isRelationshipClass()).to.be.true;\n expect(result.isStructClass()).to.be.false;\n expect(result.isMixin()).to.be.false;\n expect(result.schema.name).to.eq(\"s\");\n expect(result.fullName).to.eq(\"s.c\");\n expect(result.name).to.eq(\"c\");\n expect(result.label).to.eq(\"C\");\n expect(typeof result.is === \"function\").to.be.true;\n });\n\n it(\"creates struct class from core class\", async () => {\n const coreClass = {\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n schemaItemType: SchemaItemType.StructClass,\n } as unknown as CoreClass;\n const result = createECClass(coreClass, schema);\n expect(result.isEntityClass()).to.be.false;\n expect(result.isRelationshipClass()).to.be.false;\n expect(result.isStructClass()).to.be.true;\n expect(result.isMixin()).to.be.false;\n expect(result.schema.name).to.eq(\"s\");\n expect(result.fullName).to.eq(\"s.c\");\n expect(result.name).to.eq(\"c\");\n expect(result.label).to.eq(\"C\");\n expect(typeof result.is === \"function\").to.be.true;\n });\n\n it(\"creates mixin from core class\", async () => {\n const coreClass = {\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n schemaItemType: SchemaItemType.Mixin,\n } as unknown as CoreClass;\n const result = createECClass(coreClass, schema);\n expect(result.isEntityClass()).to.be.false;\n expect(result.isRelationshipClass()).to.be.false;\n expect(result.isStructClass()).to.be.false;\n expect(result.isMixin()).to.be.true;\n expect(result.schema.name).to.eq(\"s\");\n expect(result.fullName).to.eq(\"s.c\");\n expect(result.name).to.eq(\"c\");\n expect(result.label).to.eq(\"C\");\n expect(typeof result.is === \"function\").to.be.true;\n });\n\n it(\"throws when creating class from non-class core schema item\", async () => {\n const coreClass = {\n schemaItemType: SchemaItemType.Constant,\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n } as unknown as CoreClass;\n expect(() => createECClass(coreClass, schema)).to.throw();\n });\n\n describe(\"is\", () => {\n const coreClass = {\n schemaItemType: SchemaItemType.EntityClass,\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n is: sinon.stub().resolves(true),\n };\n\n beforeEach(() => {\n coreClass.is.resetHistory();\n });\n\n it(\"handles CoreClass override\", async () => {\n const class1 = createECClass(coreClass as unknown as CoreClass, schema);\n const class2 = createECClass(\n {\n schemaItemType: SchemaItemType.EntityClass,\n fullName: \"s.c2\",\n name: \"c2\",\n label: \"C2\",\n } as unknown as CoreClass,\n schema,\n );\n const result = await class1.is(class2);\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(coreClass.is).to.be.calledOnceWithExactly(\"c2\", \"s\");\n expect(result).to.be.true;\n });\n\n it(\"handles class and schema names override\", async () => {\n const class1 = createECClass(coreClass as unknown as CoreClass, schema);\n const result = await class1.is(\"a\", \"b\");\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(coreClass.is).to.be.calledOnceWithExactly(\"a\", \"b\");\n expect(result).to.be.true;\n });\n });\n\n describe(\"getProperties\", () => {\n it(\"returns properties from core class\", async () => {\n const coreClass = {\n schemaItemType: SchemaItemType.EntityClass,\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n getProperties: sinon.stub().resolves([\n {\n isArray: () => false,\n isStruct: () => false,\n isEnumeration: () => false,\n isNavigation: () => false,\n isPrimitive: () => true,\n },\n ]),\n } as unknown as CoreClass;\n const ecClass = createECClass(coreClass, schema);\n const properties = await ecClass.getProperties();\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(coreClass.getProperties).to.be.calledOnce;\n expect(properties).to.not.be.empty;\n });\n });\n\n describe(\"getProperty\", () => {\n it(\"returns property from core class\", async () => {\n const coreClass = {\n schemaItemType: SchemaItemType.EntityClass,\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n getProperty: sinon.stub().resolves({\n isArray: () => false,\n isStruct: () => false,\n isEnumeration: () => false,\n isNavigation: () => false,\n isPrimitive: () => true,\n }),\n } as unknown as CoreClass;\n const ecClass = createECClass(coreClass, schema);\n const prop = await ecClass.getProperty(\"p\");\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(coreClass.getProperty).to.be.calledOnceWith(\"p\", true);\n expect(prop).to.not.be.undefined;\n });\n\n it(\"returns undefined from core class\", async () => {\n const coreClass = {\n schemaItemType: SchemaItemType.EntityClass,\n fullName: \"s.c\",\n name: \"c\",\n label: \"C\",\n getProperty: sinon.stub().resolves(undefined),\n } as unknown as CoreClass;\n const ecClass = createECClass(coreClass, schema);\n const prop = await ecClass.getProperty(\"p\");\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(coreClass.getProperty).to.be.calledOnceWith(\"p\", true);\n expect(prop).to.be.undefined;\n });\n });\n\n describe(\"Relationship class\", () => {\n const coreRelationshipClass = {\n schemaItemType: SchemaItemType.RelationshipClass,\n fullName: \"Schema.TestRelationship\",\n name: \"TestRelationship\",\n label: \"Test relationship\",\n };\n\n describe(\"direction\", () => {\n it(\"returns forward direction from core relationship\", async () => {\n const rel = createECClass(\n { ...coreRelationshipClass, strengthDirection: StrengthDirection.Forward } as unknown as CoreClass,\n schema,\n ) as EC.RelationshipClass;\n expect(rel.direction).to.eq(\"Forward\");\n });\n\n it(\"returns backward direction from core relationship\", async () => {\n const rel = createECClass(\n { ...coreRelationshipClass, strengthDirection: StrengthDirection.Backward } as unknown as CoreClass,\n schema,\n ) as EC.RelationshipClass;\n expect(rel.direction).to.eq(\"Backward\");\n });\n });\n\n describe(\"source & target\", () => {\n it(\"returns source constraint\", () => {\n const rel = createECClass({ ...coreRelationshipClass, source: {} } as unknown as CoreClass, schema) as EC.RelationshipClass;\n expect(rel.source).to.not.be.undefined;\n });\n\n it(\"returns target constraint\", () => {\n const rel = createECClass({ ...coreRelationshipClass, target: {} } as unknown as CoreClass, schema) as EC.RelationshipClass;\n expect(rel.target).to.not.be.undefined;\n });\n\n describe(\"ECRelationshipConstraint implementation\", () => {\n it(\"returns undefined multiplicity from core constraint\", () => {\n const rel = createECClass({ ...coreRelationshipClass, source: { multiplicity: undefined } } as unknown as CoreClass, schema) as EC.RelationshipClass;\n expect(rel.source.multiplicity).to.be.undefined;\n });\n\n it(\"returns multiplicity from core constraint\", () => {\n const rel = createECClass(\n { ...coreRelationshipClass, source: { multiplicity: new RelationshipMultiplicity(123, 456) } } as unknown as CoreClass,\n schema,\n ) as EC.RelationshipClass;\n expect(rel.source.multiplicity).to.deep.eq({ lowerLimit: 123, upperLimit: 456 });\n });\n\n it(\"returns polymorphic flag from core constraint\", () => {\n [\n { in: undefined, expectation: false },\n { in: false, expectation: false },\n { in: true, expectation: true },\n ].forEach((testEntry) => {\n const rel = createECClass(\n { ...coreRelationshipClass, source: { polymorphic: testEntry.in } } as unknown as CoreClass,\n schema,\n ) as EC.RelationshipClass;\n expect(rel.source.polymorphic).to.eq(testEntry.expectation);\n });\n });\n\n it(\"returns abstract constraint from core constraint\", async () => {\n const coreAbstractConstraint = {\n schemaItemType: SchemaItemType.EntityClass,\n fullName: \"Schema.TestAbstractConstraint\",\n name: \"TestAbstractConstraint\",\n label: \"Test abstract constraint\",\n } as unknown as CoreClass;\n const rel = createECClass(\n { ...coreRelationshipClass, source: { abstractConstraint: Promise.resolve(coreAbstractConstraint) } } as unknown as CoreClass,\n schema,\n ) as EC.RelationshipClass;\n const constraint = (await rel.source.abstractConstraint)!;\n expect(constraint.isEntityClass()).to.be.true;\n expect(constraint.fullName).to.eq(coreAbstractConstraint.fullName);\n });\n });\n });\n });\n});\n\ndescribe(\"createECProperty\", () => {\n const propertyClass: EC.Class = {} as unknown as EC.Class;\n const propertyStub = {\n isArray: () => false,\n isEnumeration: () => false,\n isNavigation: () => false,\n isPrimitive: () => false,\n isStruct: () => false,\n fullName: \"\",\n name: \"\",\n };\n\n describe(\"Primitive property\", () => {\n it(\"creates property from core property\", async () => {\n const coreProperty = {\n ...propertyStub,\n isPrimitive: () => true,\n name: \"test-property\",\n label: \"Test property\",\n extendedTypeName: \"extended\",\n } as unknown as CorePrimitiveProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.PrimitiveProperty;\n expect(property.class).to.eq(propertyClass);\n expect(property.isArray()).to.be.false;\n expect(property.isEnumeration()).to.be.false;\n expect(property.isNavigation()).to.be.false;\n expect(property.isPrimitive()).to.be.true;\n expect(property.isStruct()).to.be.false;\n expect(property.name).to.eq(coreProperty.name);\n expect(property.label).to.eq(coreProperty.label);\n expect(property.extendedTypeName).to.eq(coreProperty.extendedTypeName);\n });\n\n it(\"maps primitive types\", async () => {\n const types: [PrimitiveType, EC.PrimitiveType][] = [\n [PrimitiveType.Binary, \"Binary\"],\n [PrimitiveType.Boolean, \"Boolean\"],\n [PrimitiveType.DateTime, \"DateTime\"],\n [PrimitiveType.Double, \"Double\"],\n [PrimitiveType.IGeometry, \"IGeometry\"],\n [PrimitiveType.Integer, \"Integer\"],\n [PrimitiveType.Long, \"Long\"],\n [PrimitiveType.Point2d, \"Point2d\"],\n [PrimitiveType.Point3d, \"Point3d\"],\n [PrimitiveType.String, \"String\"],\n ];\n types.forEach(([coreType, expectation]) => {\n const coreProperty = {\n ...propertyStub,\n isPrimitive: () => true,\n name: \"test-property\",\n primitiveType: coreType,\n } as unknown as CorePrimitiveProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.PrimitiveProperty;\n expect(property.primitiveType).to.eq(expectation);\n });\n\n const uninitializedTypes = [undefined, PrimitiveType.Uninitialized];\n uninitializedTypes.forEach((coreType) => {\n const uninitializedProperty = createECProperty(\n {\n ...propertyStub,\n isPrimitive: () => true,\n name: \"test-property\",\n primitiveType: coreType,\n } as unknown as CorePrimitiveProperty,\n propertyClass,\n ) as EC.PrimitiveProperty;\n expect(() => uninitializedProperty.primitiveType).to.throw();\n });\n });\n\n it(\"maps kind of quantity\", async () => {\n const coreProperty = {\n ...propertyStub,\n isPrimitive: () => true,\n name: \"test-property\",\n kindOfQuantity: Promise.resolve({\n fullName: \"SchemaName.TestKoq\",\n schema: {\n name: \"SchemaName\",\n },\n }),\n } as unknown as CorePrimitiveProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.PrimitiveProperty;\n const koq = (await property.kindOfQuantity)!;\n expect(koq.fullName).to.eq(\"SchemaName.TestKoq\");\n\n expect(await createECProperty({ ...coreProperty, kindOfQuantity: undefined } as CorePrimitiveProperty, propertyClass).kindOfQuantity).to.be.undefined;\n });\n });\n\n describe(\"Navigation property\", () => {\n it(\"creates property from core property\", async () => {\n const coreProperty = {\n ...propertyStub,\n isNavigation: () => true,\n name: \"test-property\",\n label: \"Test property\",\n } as unknown as CoreNavigationProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.NavigationProperty;\n expect(property.class).to.eq(propertyClass);\n expect(property.isArray()).to.be.false;\n expect(property.isEnumeration()).to.be.false;\n expect(property.isNavigation()).to.be.true;\n expect(property.isPrimitive()).to.be.false;\n expect(property.isStruct()).to.be.false;\n expect(property.name).to.eq(coreProperty.name);\n expect(property.label).to.eq(coreProperty.label);\n });\n\n it(\"maps direction\", async () => {\n const map = [\n [StrengthDirection.Backward, \"Backward\"],\n [StrengthDirection.Forward, \"Forward\"],\n ];\n map.forEach(([coreDirection, expectation]) => {\n const coreProperty = {\n ...propertyStub,\n isNavigation: () => true,\n name: \"test-property\",\n direction: coreDirection,\n } as unknown as CoreNavigationProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.NavigationProperty;\n expect(property.direction).to.eq(expectation);\n });\n });\n\n it(\"returns relationship class\", async () => {\n const coreProperty = {\n ...propertyStub,\n isNavigation: () => true,\n name: \"test-property\",\n relationshipClass: Promise.resolve({\n fullName: \"SchemaName.RelationshipClass\",\n schema: {\n name: \"SchemaName\",\n },\n }),\n } as unknown as CoreNavigationProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.NavigationProperty;\n const relationshipClass = await property.relationshipClass;\n expect(relationshipClass.fullName).to.eq(\"SchemaName.RelationshipClass\");\n });\n });\n\n describe(\"Enumeration property\", () => {\n it(\"creates property from core property\", async () => {\n const coreProperty = {\n ...propertyStub,\n isEnumeration: () => true,\n name: \"test-property\",\n label: \"Test property\",\n extendedTypeName: \"extended\",\n } as unknown as CoreEnumerationProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.EnumerationProperty;\n expect(property.class).to.eq(propertyClass);\n expect(property.isArray()).to.be.false;\n expect(property.isEnumeration()).to.be.true;\n expect(property.isNavigation()).to.be.false;\n expect(property.isPrimitive()).to.be.false;\n expect(property.isStruct()).to.be.false;\n expect(property.name).to.eq(coreProperty.name);\n expect(property.label).to.eq(coreProperty.label);\n expect(property.extendedTypeName).to.eq(coreProperty.extendedTypeName);\n });\n\n it(\"returns enumeration\", async () => {\n const coreProperty = {\n ...propertyStub,\n isEnumeration: () => true,\n name: \"test-property\",\n enumeration: Promise.resolve({\n schema: {\n name: \"SchemaName\",\n },\n }),\n } as unknown as CoreEnumerationProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.EnumerationProperty;\n expect(await property.enumeration).to.not.be.undefined;\n });\n\n describe(\"ECEnumeration implementation\", () => {\n const coreEnumeration = {\n schema: {\n name: \"SchemaName\",\n },\n isStrict: false,\n type: undefined,\n enumerators: new Array<CoreEnumerator<number>>(),\n };\n const coreEnumerationProperty = {\n ...propertyStub,\n isEnumeration: () => true,\n name: \"test-property\",\n enumeration: Promise.resolve(coreEnumeration),\n } as unknown as CoreEnumerationProperty;\n let property: EC.EnumerationProperty;\n\n beforeEach(async () => {\n property = createECProperty(coreEnumerationProperty, propertyClass) as EC.EnumerationProperty;\n });\n\n it(\"returns `isStrict` flag\", async () => {\n coreEnumeration.isStrict = true;\n const enumeration = (await property.enumeration)!;\n expect(enumeration.isStrict).to.be.true;\n });\n\n it(\"maps enumeration type\", async () => {\n const typesMap = [\n [PrimitiveType.String, \"String\"],\n [PrimitiveType.Integer, \"Number\"],\n [undefined, \"Number\"],\n ];\n const typeStub = sinon.stub(coreEnumeration, \"type\");\n for (const [coreType, expectation] of typesMap) {\n typeStub.reset();\n typeStub.get(() => coreType);\n const enumeration = (await property.enumeration)!;\n expect(enumeration.type).to.eq(expectation);\n }\n });\n\n it(\"returns enumerators\", async () => {\n coreEnumeration.enumerators = [\n { name: \"1\", value: 1, label: \"One\", description: \"Test one\" },\n { name: \"2\", value: 2 },\n ];\n const enumeration = (await property.enumeration)!;\n expect(enumeration.enumerators).to.deep.eq(coreEnumeration.enumerators);\n });\n });\n });\n\n describe(\"Struct property\", () => {\n it(\"creates property from core property\", async () => {\n const coreProperty = {\n ...propertyStub,\n isStruct: () => true,\n name: \"test-property\",\n label: \"Test property\",\n } as unknown as CoreStructProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.StructProperty;\n expect(property.class).to.eq(propertyClass);\n expect(property.isArray()).to.be.false;\n expect(property.isEnumeration()).to.be.false;\n expect(property.isNavigation()).to.be.false;\n expect(property.isPrimitive()).to.be.false;\n expect(property.isStruct()).to.be.true;\n expect(property.name).to.eq(coreProperty.name);\n expect(property.label).to.eq(coreProperty.label);\n });\n\n it(\"returns struct class\", async () => {\n const coreProperty = {\n ...propertyStub,\n isStruct: () => true,\n name: \"test-property\",\n structClass: {\n fullName: \"SchemaName.StructClass\",\n schema: {\n name: \"SchemaName\",\n },\n },\n } as unknown as CoreStructProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.StructProperty;\n expect(property.structClass.fullName).to.eq(\"SchemaName.StructClass\");\n });\n });\n\n describe(\"Array property\", () => {\n it(\"creates primitive array property from core property\", async () => {\n const coreProperty = {\n ...propertyStub,\n isArray: () => true,\n isPrimitive: () => true,\n name: \"test-property\",\n label: \"Test property\",\n minOccurs: 123,\n maxOccurs: 456,\n } as unknown as CorePrimitiveArrayProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.PrimitiveArrayProperty;\n expect(property.class).to.eq(propertyClass);\n expect(property.isArray()).to.be.true;\n expect(property.isEnumeration()).to.be.false;\n expect(property.isNavigation()).to.be.false;\n expect(property.isPrimitive()).to.be.true;\n expect(property.isStruct()).to.be.false;\n expect(property.name).to.eq(coreProperty.name);\n expect(property.label).to.eq(coreProperty.label);\n expect(property.minOccurs).to.eq(123);\n expect(property.maxOccurs).to.eq(456);\n });\n\n it(\"creates enumeration array property from core property\", async () => {\n const coreProperty = {\n ...propertyStub,\n isArray: () => true,\n isEnumeration: () => true,\n name: \"test-property\",\n label: \"Test property\",\n minOccurs: 123,\n maxOccurs: 456,\n } as unknown as CoreEnumerationArrayProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.EnumerationArrayProperty;\n expect(property.class).to.eq(propertyClass);\n expect(property.isArray()).to.be.true;\n expect(property.isEnumeration()).to.be.true;\n expect(property.isNavigation()).to.be.false;\n expect(property.isPrimitive()).to.be.false;\n expect(property.isStruct()).to.be.false;\n expect(property.name).to.eq(coreProperty.name);\n expect(property.label).to.eq(coreProperty.label);\n expect(property.minOccurs).to.eq(123);\n expect(property.maxOccurs).to.eq(456);\n });\n\n it(\"creates struct array property from core property\", async () => {\n const coreProperty = {\n ...propertyStub,\n isArray: () => true,\n isStruct: () => true,\n name: \"test-property\",\n label: \"Test property\",\n minOccurs: 123,\n maxOccurs: 456,\n } as unknown as CoreStructArrayProperty;\n const property = createECProperty(coreProperty, propertyClass) as EC.StructArrayProperty;\n expect(property.class).to.eq(propertyClass);\n expect(property.isArray()).to.be.true;\n expect(property.isEnumeration()).to.be.false;\n expect(property.isNavigation()).to.be.false;\n expect(property.isPrimitive()).to.be.false;\n expect(property.isStruct()).to.be.true;\n expect(property.name).to.eq(coreProperty.name);\n expect(property.label).to.eq(coreProperty.label);\n expect(property.minOccurs).to.eq(123);\n expect(property.maxOccurs).to.eq(456);\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryExecutor.test.d.ts","sourceRoot":"","sources":["../../../src/test/QueryExecutor.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { expect } from "chai";
|
|
6
|
-
import sinon from "sinon";
|
|
7
|
-
import { QueryBinder, QueryRowFormat } from "@itwin/core-common";
|
|
8
|
-
import { Point2d, Point3d } from "@itwin/core-geometry";
|
|
9
|
-
import { createECSqlQueryExecutor } from "../core-interop/QueryExecutor";
|
|
10
|
-
describe("createECSqlQueryExecutor", () => {
|
|
11
|
-
describe("createQueryReader", () => {
|
|
12
|
-
it("calls IModel's `createQueryReader` with default params", async () => {
|
|
13
|
-
const imodel = {
|
|
14
|
-
createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([{}, {}])),
|
|
15
|
-
};
|
|
16
|
-
const executor = createECSqlQueryExecutor(imodel);
|
|
17
|
-
const reader = executor.createQueryReader({ ecsql: "ecsql" });
|
|
18
|
-
for await (const _ of reader) {
|
|
19
|
-
}
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
21
|
-
expect(imodel.createQueryReader).to.be.calledOnceWithExactly("ecsql", sinon.match((binder) => Object.keys(binder.serialize()).length === 0), sinon.match((options) => Object.keys(options).length === 0));
|
|
22
|
-
});
|
|
23
|
-
it("calls IModel's `createQueryReader` with CTEs", async () => {
|
|
24
|
-
const imodel = {
|
|
25
|
-
createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([{}, {}])),
|
|
26
|
-
};
|
|
27
|
-
const executor = createECSqlQueryExecutor(imodel);
|
|
28
|
-
const reader = executor.createQueryReader({ ctes: ["cte1", "cte2"], ecsql: "ecsql" });
|
|
29
|
-
for await (const _ of reader) {
|
|
30
|
-
}
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
32
|
-
expect(imodel.createQueryReader).to.be.calledOnceWith("WITH RECURSIVE cte1, cte2 ecsql");
|
|
33
|
-
});
|
|
34
|
-
it("calls IModel's `createQueryReader` with `ECSqlPropertyNames` row format", async () => {
|
|
35
|
-
const imodel = {
|
|
36
|
-
createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([])),
|
|
37
|
-
};
|
|
38
|
-
const executor = createECSqlQueryExecutor(imodel);
|
|
39
|
-
const reader = executor.createQueryReader({ ecsql: "ecsql" }, { rowFormat: "ECSqlPropertyNames" });
|
|
40
|
-
for await (const _ of reader) {
|
|
41
|
-
}
|
|
42
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
43
|
-
expect(imodel.createQueryReader).to.be.calledOnceWithExactly("ecsql", sinon.match((binder) => Object.keys(binder.serialize()).length === 0), sinon.match((options) => options.rowFormat === QueryRowFormat.UseECSqlPropertyNames));
|
|
44
|
-
});
|
|
45
|
-
it("calls IModel's `createQueryReader` with `Indexes` row format", async () => {
|
|
46
|
-
const imodel = {
|
|
47
|
-
createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([])),
|
|
48
|
-
};
|
|
49
|
-
const executor = createECSqlQueryExecutor(imodel);
|
|
50
|
-
const reader = executor.createQueryReader({ ecsql: "ecsql" }, { rowFormat: "Indexes" });
|
|
51
|
-
for await (const _ of reader) {
|
|
52
|
-
}
|
|
53
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
54
|
-
expect(imodel.createQueryReader).to.be.calledOnceWithExactly("ecsql", sinon.match((binder) => Object.keys(binder.serialize()).length === 0), sinon.match((options) => options.rowFormat === QueryRowFormat.UseECSqlPropertyIndexes));
|
|
55
|
-
});
|
|
56
|
-
it("calls IModel's `createQueryReader` with different bindings", async () => {
|
|
57
|
-
const imodel = {
|
|
58
|
-
createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([])),
|
|
59
|
-
};
|
|
60
|
-
const bindings = [
|
|
61
|
-
{
|
|
62
|
-
type: "boolean",
|
|
63
|
-
value: true,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: "double",
|
|
67
|
-
value: 1.23,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
type: "id",
|
|
71
|
-
value: "0x123",
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
type: "idset",
|
|
75
|
-
value: ["0x123", "0x456"],
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
type: "int",
|
|
79
|
-
value: 123,
|
|
80
|
-
},
|
|
81
|
-
{ type: "long", value: 456 },
|
|
82
|
-
{
|
|
83
|
-
type: "point2d",
|
|
84
|
-
value: { x: 1.23, y: 4.56 },
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
type: "point3d",
|
|
88
|
-
value: { x: 1.23, y: 4.56, z: 7.89 },
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
type: "string",
|
|
92
|
-
value: "xxx",
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
type: "string",
|
|
96
|
-
value: undefined,
|
|
97
|
-
},
|
|
98
|
-
];
|
|
99
|
-
const expectedBinder = new QueryBinder();
|
|
100
|
-
expectedBinder.bindBoolean(1, true);
|
|
101
|
-
expectedBinder.bindDouble(2, 1.23);
|
|
102
|
-
expectedBinder.bindId(3, "0x123");
|
|
103
|
-
expectedBinder.bindIdSet(4, ["0x123", "0x456"]);
|
|
104
|
-
expectedBinder.bindInt(5, 123);
|
|
105
|
-
expectedBinder.bindLong(6, 456);
|
|
106
|
-
expectedBinder.bindPoint2d(7, Point2d.create(1.23, 4.56));
|
|
107
|
-
expectedBinder.bindPoint3d(8, Point3d.create(1.23, 4.56, 7.89));
|
|
108
|
-
expectedBinder.bindString(9, "xxx");
|
|
109
|
-
expectedBinder.bindNull(10);
|
|
110
|
-
const executor = createECSqlQueryExecutor(imodel);
|
|
111
|
-
const reader = executor.createQueryReader({ ecsql: "ecsql", bindings }, undefined);
|
|
112
|
-
for await (const _ of reader) {
|
|
113
|
-
}
|
|
114
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
115
|
-
expect(imodel.createQueryReader).to.be.calledOnceWithExactly("ecsql", sinon.match((binder) => JSON.stringify(expectedBinder.serialize()) === JSON.stringify(binder.serialize())), sinon.match((options) => Object.keys(options).length === 0));
|
|
116
|
-
});
|
|
117
|
-
it("creates iterable reader for rows as objects", async () => {
|
|
118
|
-
const rows = [{ x: 1 }, { y: 2 }];
|
|
119
|
-
const imodel = {
|
|
120
|
-
createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub(rows)),
|
|
121
|
-
};
|
|
122
|
-
const executor = createECSqlQueryExecutor(imodel);
|
|
123
|
-
const reader = executor.createQueryReader({ ecsql: "ecsql" }, { rowFormat: "ECSqlPropertyNames" });
|
|
124
|
-
const resultRows = new Array();
|
|
125
|
-
for await (const row of reader) {
|
|
126
|
-
resultRows.push(row);
|
|
127
|
-
}
|
|
128
|
-
expect(resultRows).to.deep.eq(rows);
|
|
129
|
-
});
|
|
130
|
-
it("creates iterable reader for rows as arrays", async () => {
|
|
131
|
-
const rows = [
|
|
132
|
-
[1, 2],
|
|
133
|
-
[3, 4],
|
|
134
|
-
];
|
|
135
|
-
const imodel = {
|
|
136
|
-
createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub(rows)),
|
|
137
|
-
};
|
|
138
|
-
const executor = createECSqlQueryExecutor(imodel);
|
|
139
|
-
const reader = executor.createQueryReader({ ecsql: "ecsql" }, { rowFormat: "Indexes" });
|
|
140
|
-
const resultRows = new Array();
|
|
141
|
-
for await (const row of reader) {
|
|
142
|
-
resultRows.push(row);
|
|
143
|
-
}
|
|
144
|
-
expect(resultRows).to.deep.eq(rows);
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
function createCoreECSqlReaderStub(rows) {
|
|
149
|
-
let curr = -1;
|
|
150
|
-
const reader = {
|
|
151
|
-
next: sinon.fake(async () => {
|
|
152
|
-
++curr;
|
|
153
|
-
if (curr < rows.length) {
|
|
154
|
-
return { done: false, value: createQueryRowProxy(rows[curr]) };
|
|
155
|
-
}
|
|
156
|
-
return { done: true, value: undefined };
|
|
157
|
-
}),
|
|
158
|
-
};
|
|
159
|
-
return {
|
|
160
|
-
...reader,
|
|
161
|
-
async *[Symbol.asyncIterator]() {
|
|
162
|
-
return reader;
|
|
163
|
-
},
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
function createQueryRowProxy(data) {
|
|
167
|
-
return {
|
|
168
|
-
...data,
|
|
169
|
-
toArray: () => data,
|
|
170
|
-
toRow: () => data,
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
//# sourceMappingURL=QueryExecutor.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryExecutor.test.js","sourceRoot":"","sources":["../../../src/test/QueryExecutor.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 { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { QueryBinder, QueryOptions, QueryRowFormat } from \"@itwin/core-common\";\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\nimport { ECSqlBinding } from \"@itwin/presentation-shared\";\nimport { createECSqlQueryExecutor } from \"../core-interop/QueryExecutor\";\n\ndescribe(\"createECSqlQueryExecutor\", () => {\n describe(\"createQueryReader\", () => {\n it(\"calls IModel's `createQueryReader` with default params\", async () => {\n const imodel = {\n createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([{}, {}])),\n };\n\n const executor = createECSqlQueryExecutor(imodel);\n const reader = executor.createQueryReader({ ecsql: \"ecsql\" });\n for await (const _ of reader) {\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(imodel.createQueryReader).to.be.calledOnceWithExactly(\n \"ecsql\",\n sinon.match((binder: QueryBinder) => Object.keys(binder.serialize()).length === 0),\n sinon.match((options: QueryOptions) => Object.keys(options).length === 0),\n );\n });\n\n it(\"calls IModel's `createQueryReader` with CTEs\", async () => {\n const imodel = {\n createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([{}, {}])),\n };\n\n const executor = createECSqlQueryExecutor(imodel);\n const reader = executor.createQueryReader({ ctes: [\"cte1\", \"cte2\"], ecsql: \"ecsql\" });\n for await (const _ of reader) {\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(imodel.createQueryReader).to.be.calledOnceWith(\"WITH RECURSIVE cte1, cte2 ecsql\");\n });\n\n it(\"calls IModel's `createQueryReader` with `ECSqlPropertyNames` row format\", async () => {\n const imodel = {\n createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([])),\n };\n\n const executor = createECSqlQueryExecutor(imodel);\n const reader = executor.createQueryReader({ ecsql: \"ecsql\" }, { rowFormat: \"ECSqlPropertyNames\" });\n for await (const _ of reader) {\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(imodel.createQueryReader).to.be.calledOnceWithExactly(\n \"ecsql\",\n sinon.match((binder: QueryBinder) => Object.keys(binder.serialize()).length === 0),\n sinon.match((options: QueryOptions) => options.rowFormat === QueryRowFormat.UseECSqlPropertyNames),\n );\n });\n\n it(\"calls IModel's `createQueryReader` with `Indexes` row format\", async () => {\n const imodel = {\n createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([])),\n };\n\n const executor = createECSqlQueryExecutor(imodel);\n const reader = executor.createQueryReader({ ecsql: \"ecsql\" }, { rowFormat: \"Indexes\" });\n for await (const _ of reader) {\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(imodel.createQueryReader).to.be.calledOnceWithExactly(\n \"ecsql\",\n sinon.match((binder: QueryBinder) => Object.keys(binder.serialize()).length === 0),\n sinon.match((options: QueryOptions) => options.rowFormat === QueryRowFormat.UseECSqlPropertyIndexes),\n );\n });\n\n it(\"calls IModel's `createQueryReader` with different bindings\", async () => {\n const imodel = {\n createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub([])),\n };\n\n const bindings: ECSqlBinding[] = [\n {\n type: \"boolean\",\n value: true,\n },\n {\n type: \"double\",\n value: 1.23,\n },\n {\n type: \"id\",\n value: \"0x123\",\n },\n {\n type: \"idset\",\n value: [\"0x123\", \"0x456\"],\n },\n {\n type: \"int\",\n value: 123,\n },\n { type: \"long\", value: 456 },\n {\n type: \"point2d\",\n value: { x: 1.23, y: 4.56 },\n },\n {\n type: \"point3d\",\n value: { x: 1.23, y: 4.56, z: 7.89 },\n },\n {\n type: \"string\",\n value: \"xxx\",\n },\n {\n type: \"string\",\n value: undefined,\n },\n ];\n\n const expectedBinder = new QueryBinder();\n expectedBinder.bindBoolean(1, true);\n expectedBinder.bindDouble(2, 1.23);\n expectedBinder.bindId(3, \"0x123\");\n expectedBinder.bindIdSet(4, [\"0x123\", \"0x456\"]);\n expectedBinder.bindInt(5, 123);\n expectedBinder.bindLong(6, 456);\n expectedBinder.bindPoint2d(7, Point2d.create(1.23, 4.56));\n expectedBinder.bindPoint3d(8, Point3d.create(1.23, 4.56, 7.89));\n expectedBinder.bindString(9, \"xxx\");\n expectedBinder.bindNull(10);\n\n const executor = createECSqlQueryExecutor(imodel);\n const reader = executor.createQueryReader({ ecsql: \"ecsql\", bindings }, undefined);\n for await (const _ of reader) {\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n expect(imodel.createQueryReader).to.be.calledOnceWithExactly(\n \"ecsql\",\n sinon.match((binder: QueryBinder) => JSON.stringify(expectedBinder.serialize()) === JSON.stringify(binder.serialize())),\n sinon.match((options: QueryOptions) => Object.keys(options).length === 0),\n );\n });\n\n it(\"creates iterable reader for rows as objects\", async () => {\n const rows = [{ x: 1 }, { y: 2 }];\n const imodel = {\n createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub(rows)),\n };\n\n const executor = createECSqlQueryExecutor(imodel);\n const reader = executor.createQueryReader({ ecsql: \"ecsql\" }, { rowFormat: \"ECSqlPropertyNames\" });\n\n const resultRows = new Array<any>();\n for await (const row of reader) {\n resultRows.push(row);\n }\n\n expect(resultRows).to.deep.eq(rows);\n });\n\n it(\"creates iterable reader for rows as arrays\", async () => {\n const rows = [\n [1, 2],\n [3, 4],\n ];\n const imodel = {\n createQueryReader: sinon.stub().returns(createCoreECSqlReaderStub(rows)),\n };\n\n const executor = createECSqlQueryExecutor(imodel);\n const reader = executor.createQueryReader({ ecsql: \"ecsql\" }, { rowFormat: \"Indexes\" });\n\n const resultRows = new Array<any>();\n for await (const row of reader) {\n resultRows.push(row);\n }\n\n expect(resultRows).to.deep.eq(rows);\n });\n });\n});\n\nfunction createCoreECSqlReaderStub(rows: object[]) {\n let curr = -1;\n const reader = {\n next: sinon.fake(async () => {\n ++curr;\n if (curr < rows.length) {\n return { done: false, value: createQueryRowProxy(rows[curr]) };\n }\n return { done: true, value: undefined };\n }),\n };\n return {\n ...reader,\n async *[Symbol.asyncIterator]() {\n return reader;\n },\n };\n}\n\nfunction createQueryRowProxy(data: object) {\n return {\n ...data,\n toArray: () => data,\n toRow: () => data,\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Transactions.test.d.ts","sourceRoot":"","sources":["../../../src/test/Transactions.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { expect } from "chai";
|
|
6
|
-
import sinon from "sinon";
|
|
7
|
-
import { registerTxnListeners } from "../core-interop/Transactions";
|
|
8
|
-
describe("registerTxnListeners", () => {
|
|
9
|
-
it("calls provided callback on `onAppliedChanges` event", async () => {
|
|
10
|
-
const txns = createCoreTxnManager();
|
|
11
|
-
const callback = sinon.stub();
|
|
12
|
-
registerTxnListeners(txns, callback);
|
|
13
|
-
expect(txns.onChangesApplied.addListener).to.be.calledOnce;
|
|
14
|
-
txns.onChangesApplied.addListener.firstCall.callArg(0);
|
|
15
|
-
expect(callback).to.be.calledOnce;
|
|
16
|
-
});
|
|
17
|
-
it("calls provided callback on `onCommit` and `onCommitted` event", async () => {
|
|
18
|
-
const txns = createCoreTxnManager();
|
|
19
|
-
const callback = sinon.stub();
|
|
20
|
-
registerTxnListeners(txns, callback);
|
|
21
|
-
expect(txns.onCommit.addListener).to.be.calledOnce;
|
|
22
|
-
expect(txns.onCommitted.addListener).to.be.calledOnce;
|
|
23
|
-
txns.onCommit.addListener.firstCall.callArg(0);
|
|
24
|
-
txns.onCommitted.addListener.firstCall.callArg(0);
|
|
25
|
-
expect(callback).to.be.calledOnce;
|
|
26
|
-
});
|
|
27
|
-
it("doesn't call provided callback on `onCommitted` event if there was no `onCommit` event", async () => {
|
|
28
|
-
const txns = createCoreTxnManager();
|
|
29
|
-
const callback = sinon.stub();
|
|
30
|
-
registerTxnListeners(txns, callback);
|
|
31
|
-
expect(txns.onCommit.addListener).to.be.calledOnce;
|
|
32
|
-
expect(txns.onCommitted.addListener).to.be.calledOnce;
|
|
33
|
-
txns.onCommitted.addListener.firstCall.callArg(0);
|
|
34
|
-
expect(callback).to.not.be.called;
|
|
35
|
-
});
|
|
36
|
-
it("unregisters from events when returned function is called", async () => {
|
|
37
|
-
const txns = createCoreTxnManager();
|
|
38
|
-
const unregister = registerTxnListeners(txns, sinon.stub());
|
|
39
|
-
expect(txns.onCommit.hasListeners()).to.be.true;
|
|
40
|
-
expect(txns.onCommitted.hasListeners()).to.be.true;
|
|
41
|
-
expect(txns.onChangesApplied.hasListeners()).to.be.true;
|
|
42
|
-
unregister();
|
|
43
|
-
expect(txns.onCommit.hasListeners()).to.be.false;
|
|
44
|
-
expect(txns.onCommitted.hasListeners()).to.be.false;
|
|
45
|
-
expect(txns.onChangesApplied.hasListeners()).to.be.false;
|
|
46
|
-
});
|
|
47
|
-
function createCoreTxnManager() {
|
|
48
|
-
return {
|
|
49
|
-
onCommit: createEventStub(),
|
|
50
|
-
onCommitted: createEventStub(),
|
|
51
|
-
onChangesApplied: createEventStub(),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
function createEventStub() {
|
|
55
|
-
let hasListeners = false;
|
|
56
|
-
return {
|
|
57
|
-
hasListeners: () => hasListeners,
|
|
58
|
-
addListener: sinon.fake(() => {
|
|
59
|
-
hasListeners = true;
|
|
60
|
-
return () => {
|
|
61
|
-
hasListeners = false;
|
|
62
|
-
};
|
|
63
|
-
}),
|
|
64
|
-
removeListener: sinon.stub(),
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
//# sourceMappingURL=Transactions.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Transactions.test.js","sourceRoot":"","sources":["../../../src/test/Transactions.test.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACtG,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxD,UAAU,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,SAAS,oBAAoB;QAC3B,OAAO;YACL,QAAQ,EAAE,eAAe,EAAE;YAC3B,WAAW,EAAE,eAAe,EAAE;YAC9B,gBAAgB,EAAE,eAAe,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,SAAS,eAAe;QACtB,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,OAAO;YACL,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY;YAChC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC3B,YAAY,GAAG,IAAI,CAAC;gBACpB,OAAO,GAAG,EAAE;oBACV,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC,CAAC;YACJ,CAAC,CAAC;YACF,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;AACH,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 { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { registerTxnListeners } from \"../core-interop/Transactions\";\n\ndescribe(\"registerTxnListeners\", () => {\n it(\"calls provided callback on `onAppliedChanges` event\", async () => {\n const txns = createCoreTxnManager();\n const callback = sinon.stub();\n registerTxnListeners(txns, callback);\n expect(txns.onChangesApplied.addListener).to.be.calledOnce;\n txns.onChangesApplied.addListener.firstCall.callArg(0);\n expect(callback).to.be.calledOnce;\n });\n\n it(\"calls provided callback on `onCommit` and `onCommitted` event\", async () => {\n const txns = createCoreTxnManager();\n const callback = sinon.stub();\n registerTxnListeners(txns, callback);\n expect(txns.onCommit.addListener).to.be.calledOnce;\n expect(txns.onCommitted.addListener).to.be.calledOnce;\n txns.onCommit.addListener.firstCall.callArg(0);\n txns.onCommitted.addListener.firstCall.callArg(0);\n expect(callback).to.be.calledOnce;\n });\n\n it(\"doesn't call provided callback on `onCommitted` event if there was no `onCommit` event\", async () => {\n const txns = createCoreTxnManager();\n const callback = sinon.stub();\n registerTxnListeners(txns, callback);\n expect(txns.onCommit.addListener).to.be.calledOnce;\n expect(txns.onCommitted.addListener).to.be.calledOnce;\n txns.onCommitted.addListener.firstCall.callArg(0);\n expect(callback).to.not.be.called;\n });\n\n it(\"unregisters from events when returned function is called\", async () => {\n const txns = createCoreTxnManager();\n const unregister = registerTxnListeners(txns, sinon.stub());\n expect(txns.onCommit.hasListeners()).to.be.true;\n expect(txns.onCommitted.hasListeners()).to.be.true;\n expect(txns.onChangesApplied.hasListeners()).to.be.true;\n unregister();\n expect(txns.onCommit.hasListeners()).to.be.false;\n expect(txns.onCommitted.hasListeners()).to.be.false;\n expect(txns.onChangesApplied.hasListeners()).to.be.false;\n });\n\n function createCoreTxnManager() {\n return {\n onCommit: createEventStub(),\n onCommitted: createEventStub(),\n onChangesApplied: createEventStub(),\n };\n }\n\n function createEventStub() {\n let hasListeners = false;\n return {\n hasListeners: () => hasListeners,\n addListener: sinon.fake(() => {\n hasListeners = true;\n return () => {\n hasListeners = false;\n };\n }),\n removeListener: sinon.stub(),\n };\n }\n});\n"]}
|
package/lib/esm/test/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":""}
|
package/lib/esm/test/index.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import * as chai from "chai";
|
|
6
|
-
import chaiAsPromised from "chai-as-promised";
|
|
7
|
-
import sinon from "sinon";
|
|
8
|
-
import sinonChai from "sinon-chai";
|
|
9
|
-
// setup chai
|
|
10
|
-
chai.use(chaiAsPromised);
|
|
11
|
-
chai.use(sinonChai);
|
|
12
|
-
beforeEach(function () {
|
|
13
|
-
sinon.restore();
|
|
14
|
-
});
|
|
15
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,aAAa;AACb,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAEpB,UAAU,CAAC;IACT,KAAK,CAAC,OAAO,EAAE,CAAC;AAClB,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 * as chai from \"chai\";\nimport chaiAsPromised from \"chai-as-promised\";\nimport sinon from \"sinon\";\nimport sinonChai from \"sinon-chai\";\n\n// setup chai\nchai.use(chaiAsPromised);\nchai.use(sinonChai);\n\nbeforeEach(function () {\n sinon.restore();\n});\n"]}
|