softkave-node-utils 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/build/src/contexts/SessionContext.d.ts +15 -0
- package/build/src/contexts/SessionContext.js +70 -0
- package/build/src/contexts/SessionContext.js.map +1 -0
- package/build/src/contexts/asyncLocalStorage.d.ts +27 -0
- package/build/src/contexts/asyncLocalStorage.js +115 -0
- package/build/src/contexts/asyncLocalStorage.js.map +1 -0
- package/build/src/contexts/config.d.ts +49 -0
- package/build/src/contexts/config.js +25 -0
- package/build/src/contexts/config.js.map +1 -0
- package/build/src/contexts/data/BaseMongoDataProvider.d.ts +21 -0
- package/build/src/contexts/data/BaseMongoDataProvider.js +157 -0
- package/build/src/contexts/data/BaseMongoDataProvider.js.map +1 -0
- package/build/src/contexts/data/MongoDataProviderUtils.d.ts +6 -0
- package/build/src/contexts/data/MongoDataProviderUtils.js +35 -0
- package/build/src/contexts/data/MongoDataProviderUtils.js.map +1 -0
- package/build/src/contexts/data/dataQueryToMongoQuery.d.ts +3 -0
- package/build/src/contexts/data/dataQueryToMongoQuery.js +85 -0
- package/build/src/contexts/data/dataQueryToMongoQuery.js.map +1 -0
- package/build/src/contexts/data/types.d.ts +114 -0
- package/build/src/contexts/data/types.js +15 -0
- package/build/src/contexts/data/types.js.map +1 -0
- package/build/src/contexts/data/utils.d.ts +2 -0
- package/build/src/contexts/data/utils.js +24 -0
- package/build/src/contexts/data/utils.js.map +1 -0
- package/build/src/contexts/email/SESEmailProviderContext.d.ts +9 -0
- package/build/src/contexts/email/SESEmailProviderContext.js +49 -0
- package/build/src/contexts/email/SESEmailProviderContext.js.map +1 -0
- package/build/src/contexts/email/types.d.ts +13 -0
- package/build/src/contexts/email/types.js +3 -0
- package/build/src/contexts/email/types.js.map +1 -0
- package/build/src/contexts/encryption/AWSSecretsManagerProvider.d.ts +12 -0
- package/build/src/contexts/encryption/AWSSecretsManagerProvider.js +51 -0
- package/build/src/contexts/encryption/AWSSecretsManagerProvider.js.map +1 -0
- package/build/src/contexts/encryption/MemorySecretsManagerProvider.d.ts +12 -0
- package/build/src/contexts/encryption/MemorySecretsManagerProvider.js +35 -0
- package/build/src/contexts/encryption/MemorySecretsManagerProvider.js.map +1 -0
- package/build/src/contexts/encryption/types.d.ts +29 -0
- package/build/src/contexts/encryption/types.js +3 -0
- package/build/src/contexts/encryption/types.js.map +1 -0
- package/build/src/contexts/globalUtils.d.ts +2 -0
- package/build/src/contexts/globalUtils.js +17 -0
- package/build/src/contexts/globalUtils.js.map +1 -0
- package/build/src/contexts/injection/injectables.d.ts +56 -0
- package/build/src/contexts/injection/injectables.js +26 -0
- package/build/src/contexts/injection/injectables.js.map +1 -0
- package/build/src/contexts/injection/keys.d.ts +22 -0
- package/build/src/contexts/injection/keys.js +33 -0
- package/build/src/contexts/injection/keys.js.map +1 -0
- package/build/src/contexts/injection/register.d.ts +33 -0
- package/build/src/contexts/injection/register.js +107 -0
- package/build/src/contexts/injection/register.js.map +1 -0
- package/build/src/contexts/logger/noop.d.ts +5 -0
- package/build/src/contexts/logger/noop.js +12 -0
- package/build/src/contexts/logger/noop.js.map +1 -0
- package/build/src/contexts/logger/types.d.ts +11 -0
- package/build/src/contexts/logger/types.js +8 -0
- package/build/src/contexts/logger/types.js.map +1 -0
- package/build/src/contexts/logger/utils.d.ts +2 -0
- package/build/src/contexts/logger/utils.js +15 -0
- package/build/src/contexts/logger/utils.js.map +1 -0
- package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.d.ts +28 -0
- package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js +115 -0
- package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js.map +1 -0
- package/build/src/contexts/semantic/types.d.ts +48 -0
- package/build/src/contexts/semantic/types.js +3 -0
- package/build/src/contexts/semantic/types.js.map +1 -0
- package/build/src/contexts/semantic/utils.d.ts +16 -0
- package/build/src/contexts/semantic/utils.js +68 -0
- package/build/src/contexts/semantic/utils.js.map +1 -0
- package/build/src/contexts/types.d.ts +6 -0
- package/build/src/contexts/types.js +3 -0
- package/build/src/contexts/types.js.map +1 -0
- package/build/src/definitions/agent.d.ts +10 -0
- package/build/src/definitions/agent.js +3 -0
- package/build/src/definitions/agent.js.map +1 -0
- package/build/src/definitions/resource.d.ts +17 -0
- package/build/src/definitions/resource.js +3 -0
- package/build/src/definitions/resource.js.map +1 -0
- package/build/src/definitions/resourceTypes.d.ts +10 -0
- package/build/src/definitions/resourceTypes.js +19 -0
- package/build/src/definitions/resourceTypes.js.map +1 -0
- package/build/src/definitions/token.d.ts +17 -0
- package/build/src/definitions/token.js +10 -0
- package/build/src/definitions/token.js.map +1 -0
- package/build/src/endpoints/RequestData.d.ts +20 -0
- package/build/src/endpoints/RequestData.js +52 -0
- package/build/src/endpoints/RequestData.js.map +1 -0
- package/build/src/endpoints/constants.d.ts +20 -0
- package/build/src/endpoints/constants.js +24 -0
- package/build/src/endpoints/constants.js.map +1 -0
- package/build/src/endpoints/endpoints.d.ts +7 -0
- package/build/src/endpoints/endpoints.js +33 -0
- package/build/src/endpoints/endpoints.js.map +1 -0
- package/build/src/endpoints/endpoints.mddoc.d.ts +62 -0
- package/build/src/endpoints/endpoints.mddoc.js +437 -0
- package/build/src/endpoints/endpoints.mddoc.js.map +1 -0
- package/build/src/endpoints/extractors.d.ts +9 -0
- package/build/src/endpoints/extractors.js +24 -0
- package/build/src/endpoints/extractors.js.map +1 -0
- package/build/src/endpoints/jobs/types.d.ts +6 -0
- package/build/src/endpoints/jobs/types.js +3 -0
- package/build/src/endpoints/jobs/types.js.map +1 -0
- package/build/src/endpoints/pagination.d.ts +3 -0
- package/build/src/endpoints/pagination.js +27 -0
- package/build/src/endpoints/pagination.js.map +1 -0
- package/build/src/endpoints/types.d.ts +68 -0
- package/build/src/endpoints/types.js +13 -0
- package/build/src/endpoints/types.js.map +1 -0
- package/build/src/endpoints/utils.d.ts +23 -0
- package/build/src/endpoints/utils.js +131 -0
- package/build/src/endpoints/utils.js.map +1 -0
- package/build/src/endpoints/validation.d.ts +47 -0
- package/build/src/endpoints/validation.js +73 -0
- package/build/src/endpoints/validation.js.map +1 -0
- package/build/src/errors/OperationError.d.ts +20 -0
- package/build/src/errors/OperationError.js +38 -0
- package/build/src/errors/OperationError.js.map +1 -0
- package/build/src/errors/commonErrors.d.ts +24 -0
- package/build/src/errors/commonErrors.js +72 -0
- package/build/src/errors/commonErrors.js.map +1 -0
- package/build/src/errors/endpointErrors.d.ts +31 -0
- package/build/src/errors/endpointErrors.js +83 -0
- package/build/src/errors/endpointErrors.js.map +1 -0
- package/build/src/errors/messages.d.ts +11 -0
- package/build/src/errors/messages.js +27 -0
- package/build/src/errors/messages.js.map +1 -0
- package/build/src/errors/reusableErrors.d.ts +12 -0
- package/build/src/errors/reusableErrors.js +25 -0
- package/build/src/errors/reusableErrors.js.map +1 -0
- package/build/src/errors/sessionErrors.d.ts +18 -0
- package/build/src/errors/sessionErrors.js +60 -0
- package/build/src/errors/sessionErrors.js.map +1 -0
- package/build/src/index.d.ts +0 -0
- package/build/src/index.js +2 -0
- package/build/src/index.js.map +1 -0
- package/build/src/mddoc/jsSdkCodeGen.d.ts +7 -0
- package/build/src/mddoc/jsSdkCodeGen.js +546 -0
- package/build/src/mddoc/jsSdkCodeGen.js.map +1 -0
- package/build/src/mddoc/mddoc.d.ts +206 -0
- package/build/src/mddoc/mddoc.js +142 -0
- package/build/src/mddoc/mddoc.js.map +1 -0
- package/build/src/mddoc/restApiEndpointsInfoGen.d.ts +10 -0
- package/build/src/mddoc/restApiEndpointsInfoGen.js +92 -0
- package/build/src/mddoc/restApiEndpointsInfoGen.js.map +1 -0
- package/build/src/mddoc/restApiTableOfContentGen.d.ts +2 -0
- package/build/src/mddoc/restApiTableOfContentGen.js +51 -0
- package/build/src/mddoc/restApiTableOfContentGen.js.map +1 -0
- package/build/src/mongodb/connection.d.ts +26 -0
- package/build/src/mongodb/connection.js +50 -0
- package/build/src/mongodb/connection.js.map +1 -0
- package/build/src/mongodb/constants.d.ts +4 -0
- package/build/src/mongodb/constants.js +7 -0
- package/build/src/mongodb/constants.js.map +1 -0
- package/build/src/mongodb/utils.d.ts +20 -0
- package/build/src/mongodb/utils.js +26 -0
- package/build/src/mongodb/utils.js.map +1 -0
- package/build/src/testUtils/context/email/MockTestEmailProviderContext.d.ts +6 -0
- package/build/src/testUtils/context/email/MockTestEmailProviderContext.js +10 -0
- package/build/src/testUtils/context/email/MockTestEmailProviderContext.js.map +1 -0
- package/build/src/testUtils/context/email/NoopEmailProviderContext.d.ts +6 -0
- package/build/src/testUtils/context/email/NoopEmailProviderContext.js +11 -0
- package/build/src/testUtils/context/email/NoopEmailProviderContext.js.map +1 -0
- package/build/src/testUtils/context/email/TestSESEmailProviderContext.d.ts +8 -0
- package/build/src/testUtils/context/email/TestSESEmailProviderContext.js +14 -0
- package/build/src/testUtils/context/email/TestSESEmailProviderContext.js.map +1 -0
- package/build/src/testUtils/context/types.d.ts +9 -0
- package/build/src/testUtils/context/types.js +3 -0
- package/build/src/testUtils/context/types.js.map +1 -0
- package/build/src/testUtils/generate/utils.d.ts +37 -0
- package/build/src/testUtils/generate/utils.js +79 -0
- package/build/src/testUtils/generate/utils.js.map +1 -0
- package/build/src/testUtils/helpers/assertion.d.ts +25 -0
- package/build/src/testUtils/helpers/assertion.js +63 -0
- package/build/src/testUtils/helpers/assertion.js.map +1 -0
- package/build/src/testUtils/helpers/binary.d.ts +4 -0
- package/build/src/testUtils/helpers/binary.js +19 -0
- package/build/src/testUtils/helpers/binary.js.map +1 -0
- package/build/src/testUtils/helpers/error.d.ts +3 -0
- package/build/src/testUtils/helpers/error.js +43 -0
- package/build/src/testUtils/helpers/error.js.map +1 -0
- package/build/src/testUtils/helpers/mock.d.ts +2 -0
- package/build/src/testUtils/helpers/mock.js +15 -0
- package/build/src/testUtils/helpers/mock.js.map +1 -0
- package/build/src/testUtils/helpers/mongodb.d.ts +3 -0
- package/build/src/testUtils/helpers/mongodb.js +17 -0
- package/build/src/testUtils/helpers/mongodb.js.map +1 -0
- package/build/src/testUtils/helpers/testFns.d.ts +30 -0
- package/build/src/testUtils/helpers/testFns.js +96 -0
- package/build/src/testUtils/helpers/testFns.js.map +1 -0
- package/build/src/testUtils/testUtils.d.ts +13 -0
- package/build/src/testUtils/testUtils.js +50 -0
- package/build/src/testUtils/testUtils.js.map +1 -0
- package/build/src/utils/assertion.d.ts +2 -0
- package/build/src/utils/assertion.js +31 -0
- package/build/src/utils/assertion.js.map +1 -0
- package/build/src/utils/aws.d.ts +5 -0
- package/build/src/utils/aws.js +3 -0
- package/build/src/utils/aws.js.map +1 -0
- package/build/src/utils/streamToBuffer.d.ts +4 -0
- package/build/src/utils/streamToBuffer.js +19 -0
- package/build/src/utils/streamToBuffer.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/mongodb/constants.ts"],"names":[],"mappings":";;AAAA,MAAM,eAAe,GAAG;IACtB,uBAAuB,EAAE,KAAK;CAC/B,CAAC;AAEF,kBAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SchemaDefinitionProperty } from 'mongoose';
|
|
2
|
+
import { Agent } from '../definitions/agent';
|
|
3
|
+
export declare function ensureMongoTypeFields<T extends object>(schema: {
|
|
4
|
+
[path in keyof Required<T>]: SchemaDefinitionProperty<T[path]>;
|
|
5
|
+
}): { [path in keyof Required<T>]: SchemaDefinitionProperty<T[path]>; };
|
|
6
|
+
export declare const agentSchema: {
|
|
7
|
+
agentId: SchemaDefinitionProperty<string>;
|
|
8
|
+
agentType: SchemaDefinitionProperty<string>;
|
|
9
|
+
agentTokenId: SchemaDefinitionProperty<string>;
|
|
10
|
+
};
|
|
11
|
+
export declare const resourceSchema: {
|
|
12
|
+
resourceId: SchemaDefinitionProperty<string>;
|
|
13
|
+
createdAt: SchemaDefinitionProperty<number>;
|
|
14
|
+
lastUpdatedAt: SchemaDefinitionProperty<number>;
|
|
15
|
+
lastUpdatedBy: SchemaDefinitionProperty<Agent | undefined>;
|
|
16
|
+
createdBy: SchemaDefinitionProperty<Agent | undefined>;
|
|
17
|
+
deletedBy: SchemaDefinitionProperty<Agent | undefined>;
|
|
18
|
+
isDeleted: SchemaDefinitionProperty<boolean>;
|
|
19
|
+
deletedAt: SchemaDefinitionProperty<number | undefined>;
|
|
20
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resourceSchema = exports.agentSchema = exports.ensureMongoTypeFields = void 0;
|
|
4
|
+
// ensures all the fields defined in the type are added to the schema
|
|
5
|
+
// TODO: do deep check to make sure that internal schemas are checked too
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
7
|
+
function ensureMongoTypeFields(schema) {
|
|
8
|
+
return schema;
|
|
9
|
+
}
|
|
10
|
+
exports.ensureMongoTypeFields = ensureMongoTypeFields;
|
|
11
|
+
exports.agentSchema = ensureMongoTypeFields({
|
|
12
|
+
agentId: { type: String },
|
|
13
|
+
agentType: { type: String },
|
|
14
|
+
agentTokenId: { type: String },
|
|
15
|
+
});
|
|
16
|
+
exports.resourceSchema = ensureMongoTypeFields({
|
|
17
|
+
resourceId: { type: String, unique: true, index: true },
|
|
18
|
+
createdAt: { type: Number, default: () => Date.now() },
|
|
19
|
+
lastUpdatedAt: { type: Number, default: () => Date.now() },
|
|
20
|
+
createdBy: { type: exports.agentSchema },
|
|
21
|
+
lastUpdatedBy: { type: exports.agentSchema },
|
|
22
|
+
isDeleted: { type: Boolean, index: true },
|
|
23
|
+
deletedBy: { type: exports.agentSchema },
|
|
24
|
+
deletedAt: { type: Number },
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/mongodb/utils.ts"],"names":[],"mappings":";;;AAIA,qEAAqE;AACrE,yEAAyE;AACzE,wDAAwD;AACxD,SAAgB,qBAAqB,CAAmB,MAEvD;IACC,OAAO,MAAM,CAAC;AAChB,CAAC;AAJD,sDAIC;AAEY,QAAA,WAAW,GAAG,qBAAqB,CAAQ;IACtD,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;IACvB,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;IACzB,YAAY,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;CAC7B,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,qBAAqB,CAAW;IAC5D,UAAU,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;IACrD,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC;IACpD,aAAa,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC;IACxD,SAAS,EAAE,EAAC,IAAI,EAAE,mBAAW,EAAC;IAC9B,aAAa,EAAE,EAAC,IAAI,EAAE,mBAAW,EAAC;IAClC,SAAS,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC;IACvC,SAAS,EAAE,EAAC,IAAI,EAAE,mBAAW,EAAC;IAC9B,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;CAC1B,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class MockTestEmailProviderContext {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.sendEmail = jest.fn().mockName('sendEmail');
|
|
6
|
+
this.dispose = jest.fn().mockName('close');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.default = MockTestEmailProviderContext;
|
|
10
|
+
//# sourceMappingURL=MockTestEmailProviderContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockTestEmailProviderContext.js","sourceRoot":"","sources":["../../../../../src/testUtils/context/email/MockTestEmailProviderContext.ts"],"names":[],"mappings":";;AAEA,MAAqB,4BAA4B;IAAjD;QAGE,cAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC5C,YAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CAAA;AALD,+CAKC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const softkave_js_utils_1 = require("softkave-js-utils");
|
|
4
|
+
class NoopEmailProviderContext {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.sendEmail = softkave_js_utils_1.noopAsync;
|
|
7
|
+
this.dispose = softkave_js_utils_1.noopAsync;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.default = NoopEmailProviderContext;
|
|
11
|
+
//# sourceMappingURL=NoopEmailProviderContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoopEmailProviderContext.js","sourceRoot":"","sources":["../../../../../src/testUtils/context/email/NoopEmailProviderContext.ts"],"names":[],"mappings":";;AAAA,yDAA4C;AAG5C,MAAqB,wBAAwB;IAA7C;QACE,cAAS,GAAG,6BAAS,CAAC;QACtB,YAAO,GAAG,6BAAS,CAAC;IACtB,CAAC;CAAA;AAHD,2CAGC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AWSConfig } from '../../../utils/aws';
|
|
2
|
+
import { ITestEmailProviderContext } from '../types';
|
|
3
|
+
export default class TestSESEmailProviderContext implements ITestEmailProviderContext {
|
|
4
|
+
private client;
|
|
5
|
+
sendEmail: ITestEmailProviderContext['sendEmail'];
|
|
6
|
+
dispose: ITestEmailProviderContext['dispose'];
|
|
7
|
+
constructor(params: AWSConfig);
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const SESEmailProviderContext_1 = require("../../../contexts/email/SESEmailProviderContext");
|
|
4
|
+
const mock_1 = require("../../helpers/mock");
|
|
5
|
+
class TestSESEmailProviderContext {
|
|
6
|
+
constructor(params) {
|
|
7
|
+
this.client = new SESEmailProviderContext_1.SESEmailProviderContext(params);
|
|
8
|
+
this.sendEmail = jest.fn(this.client.sendEmail).mockName('sendEmail');
|
|
9
|
+
this.dispose = jest.fn(this.client.dispose).mockName('close');
|
|
10
|
+
(0, mock_1.mockWith)(this.client, this);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.default = TestSESEmailProviderContext;
|
|
14
|
+
//# sourceMappingURL=TestSESEmailProviderContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestSESEmailProviderContext.js","sourceRoot":"","sources":["../../../../../src/testUtils/context/email/TestSESEmailProviderContext.ts"],"names":[],"mappings":";;AAAA,6FAAwF;AAExF,6CAA4C;AAG5C,MAAqB,2BAA2B;IAQ9C,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,iDAAuB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAA,eAAQ,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF;AAfD,8CAeC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="jest" />
|
|
2
|
+
import { AnyFn } from 'softkave-js-utils';
|
|
3
|
+
import { IEmailProviderContext } from '../../contexts/email/types';
|
|
4
|
+
export type LayerJestMock<T extends {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}> = {
|
|
7
|
+
[K in keyof T]: T[K] extends AnyFn ? jest.Mock<ReturnType<T[K]>, Parameters<T[K]>> : T[K];
|
|
8
|
+
};
|
|
9
|
+
export type ITestEmailProviderContext = LayerJestMock<IEmailProviderContext>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/testUtils/context/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AnyFn, AnyObject, OrPromise } from 'softkave-js-utils';
|
|
2
|
+
export type GeneratePartialTestDataFn<T> = (index: number, indexItem: T, cache: Record<string, unknown>) => Partial<T>;
|
|
3
|
+
export declare const defaultGeneratePartialTestDataFn: GeneratePartialTestDataFn<unknown>;
|
|
4
|
+
export declare function generateTestList<T, TCache extends Record<string, unknown> = Record<string, unknown>>(generareFullDataFn: (index: number, cache: Record<string, unknown>) => T, count?: number, generatePartialDataFn?: GeneratePartialTestDataFn<T>, cache?: TCache): T[];
|
|
5
|
+
export type GenerateTestFieldsDef<T extends AnyObject, TOtherArgs extends unknown[] = unknown[]> = {
|
|
6
|
+
[K in keyof T]: AnyFn<[K, ...TOtherArgs], OrPromise<T[K]>>;
|
|
7
|
+
};
|
|
8
|
+
export declare function generateTestFields<T extends AnyObject>(def: GenerateTestFieldsDef<T>, ...otherArgs: unknown[]): Promise<Partial<T>>;
|
|
9
|
+
export declare enum TestFieldsPresetCombinations {
|
|
10
|
+
/** Generates a total of N combinations where N is the number of keys present
|
|
11
|
+
* in the object, and for each entry, there'd be only one field generated. E.g
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const def = {one: () => 1, two: () => 2};
|
|
14
|
+
* const testFields = [
|
|
15
|
+
* {one: 1},
|
|
16
|
+
* {two: 2}
|
|
17
|
+
* ];
|
|
18
|
+
* ``` */
|
|
19
|
+
oneOfEach = "oneOfEach",
|
|
20
|
+
/** Generates a total of N combinations where N is the number of keys present
|
|
21
|
+
* in the object, and for each entry, there'd be the key and other keys that came before. E.g
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const def = {one: () => 1, two: () => 2, three: () => 3};
|
|
24
|
+
* const testFields = [
|
|
25
|
+
* {one: 1},
|
|
26
|
+
* {one: 1, two: 2},
|
|
27
|
+
* {one: 1, two: 2, three: 3},
|
|
28
|
+
* ];
|
|
29
|
+
* ``` */
|
|
30
|
+
incrementallyAdd = "incrementallyAdd"
|
|
31
|
+
}
|
|
32
|
+
export declare function generateTestFieldsCombinations<T extends AnyObject>(def: GenerateTestFieldsDef<T>, factor: TestFieldsPresetCombinations, ...otherArgs: unknown[]): Promise<Array<Partial<T>>>;
|
|
33
|
+
export interface MatchGenerate<TData, TContexts extends unknown[] = unknown[]> {
|
|
34
|
+
matcher: AnyFn<TContexts, OrPromise<boolean>>;
|
|
35
|
+
generator: AnyFn<TContexts, OrPromise<TData>>;
|
|
36
|
+
}
|
|
37
|
+
export declare function matchGenerators<TData, TContexts extends unknown[]>(generators: Array<MatchGenerate<TData, TContexts>>, ...args: TContexts): Promise<TData | undefined>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.matchGenerators = exports.generateTestFieldsCombinations = exports.TestFieldsPresetCombinations = exports.generateTestFields = exports.generateTestList = exports.defaultGeneratePartialTestDataFn = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const softkave_js_utils_1 = require("softkave-js-utils");
|
|
6
|
+
const defaultGeneratePartialTestDataFn = () => ({});
|
|
7
|
+
exports.defaultGeneratePartialTestDataFn = defaultGeneratePartialTestDataFn;
|
|
8
|
+
function generateTestList(generareFullDataFn, count = 20, generatePartialDataFn = () => ({}), cache = {}) {
|
|
9
|
+
const data = [];
|
|
10
|
+
for (let i = 0; i < count; i++) {
|
|
11
|
+
const f = generareFullDataFn(i, cache);
|
|
12
|
+
const item = (0, softkave_js_utils_1.mergeObjects)(f, generatePartialDataFn(i, f, cache), {
|
|
13
|
+
arrayUpdateStrategy: 'replace',
|
|
14
|
+
});
|
|
15
|
+
data.push(item);
|
|
16
|
+
}
|
|
17
|
+
return data;
|
|
18
|
+
}
|
|
19
|
+
exports.generateTestList = generateTestList;
|
|
20
|
+
async function generateTestFields(def, ...otherArgs) {
|
|
21
|
+
const acc = {};
|
|
22
|
+
await Promise.all(Object.entries(def).map(async ([key, genFn]) => {
|
|
23
|
+
acc[key] = await genFn(key, ...otherArgs);
|
|
24
|
+
return acc;
|
|
25
|
+
}));
|
|
26
|
+
return acc;
|
|
27
|
+
}
|
|
28
|
+
exports.generateTestFields = generateTestFields;
|
|
29
|
+
var TestFieldsPresetCombinations;
|
|
30
|
+
(function (TestFieldsPresetCombinations) {
|
|
31
|
+
/** Generates a total of N combinations where N is the number of keys present
|
|
32
|
+
* in the object, and for each entry, there'd be only one field generated. E.g
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const def = {one: () => 1, two: () => 2};
|
|
35
|
+
* const testFields = [
|
|
36
|
+
* {one: 1},
|
|
37
|
+
* {two: 2}
|
|
38
|
+
* ];
|
|
39
|
+
* ``` */
|
|
40
|
+
TestFieldsPresetCombinations["oneOfEach"] = "oneOfEach";
|
|
41
|
+
/** Generates a total of N combinations where N is the number of keys present
|
|
42
|
+
* in the object, and for each entry, there'd be the key and other keys that came before. E.g
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const def = {one: () => 1, two: () => 2, three: () => 3};
|
|
45
|
+
* const testFields = [
|
|
46
|
+
* {one: 1},
|
|
47
|
+
* {one: 1, two: 2},
|
|
48
|
+
* {one: 1, two: 2, three: 3},
|
|
49
|
+
* ];
|
|
50
|
+
* ``` */
|
|
51
|
+
TestFieldsPresetCombinations["incrementallyAdd"] = "incrementallyAdd";
|
|
52
|
+
})(TestFieldsPresetCombinations || (exports.TestFieldsPresetCombinations = TestFieldsPresetCombinations = {}));
|
|
53
|
+
async function generateTestFieldsCombinations(def, factor, ...otherArgs) {
|
|
54
|
+
if (factor === TestFieldsPresetCombinations.incrementallyAdd) {
|
|
55
|
+
return await Promise.all(Object.keys(def).map((unused, index, keys) => {
|
|
56
|
+
const subDef = (0, lodash_1.pick)(def, keys.slice(0, index + 1));
|
|
57
|
+
return generateTestFields(subDef, ...otherArgs);
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
else if (factor === TestFieldsPresetCombinations.oneOfEach) {
|
|
61
|
+
return await Promise.all(Object.keys(def).map(key => {
|
|
62
|
+
const subDef = (0, lodash_1.pick)(def, [key]);
|
|
63
|
+
return generateTestFields(subDef, ...otherArgs);
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
exports.generateTestFieldsCombinations = generateTestFieldsCombinations;
|
|
69
|
+
async function matchGenerators(generators, ...args) {
|
|
70
|
+
for (const { generator, matcher } of generators) {
|
|
71
|
+
const matches = await matcher(...args);
|
|
72
|
+
if (matches) {
|
|
73
|
+
return generator(...args);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
exports.matchGenerators = matchGenerators;
|
|
79
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/testUtils/generate/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare function expectContainsEveryItemInForAnyType<T2, T1>(received: T1[], expected: T2[], receivedIndexer: (item: T1) => string, expectedIndexer: (item: T2) => string): void;
|
|
2
|
+
/**
|
|
3
|
+
* Checks that `received` contains every item in `expected` using the `indexer`
|
|
4
|
+
* provided. The `indexer` should return a unique string for each unique item in
|
|
5
|
+
* the list. Also, the same unique string should be returned for the same item
|
|
6
|
+
* no matter how many times `indexer` is called.
|
|
7
|
+
*/
|
|
8
|
+
export declare function expectContainsEveryItemIn<T2, T1 extends T2>(received: T1[], expected: T2[], indexer: (item: T2) => string): void;
|
|
9
|
+
export declare function expectContainsNoneInForAnyType<T2, T1>(received: T1[], expected: T2[], receivedIndexer: (item: T1) => string, expectedIndexer: (item: T2) => string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Checks that `received` contains none of the items in `expected` using the `indexer`
|
|
12
|
+
* provided. The `indexer` should return a unique string for each unique item in
|
|
13
|
+
* the list. Also, the same unique string should be returned for the same item
|
|
14
|
+
* no matter how many times `indexer` is called.
|
|
15
|
+
*/
|
|
16
|
+
export declare function expectContainsNoneIn<T2, T1 extends T2>(received: T1[], expected: T2[], indexer: (item: T2) => string): void;
|
|
17
|
+
export declare function expectContainsExactlyForAnyType<T2, T1>(received: T1[], expected: T2[], receivedIndexer: (item: T1) => string, expectedIndexer: (item: T2) => string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Checks that `received` and `expected` contains the same items using the
|
|
20
|
+
* `indexer` provided. The `indexer` should return a unique string for each
|
|
21
|
+
* unique item in the list. Also, the same unique string should be returned for
|
|
22
|
+
* the same item no matter how many times `indexer` is called.
|
|
23
|
+
*/
|
|
24
|
+
export declare function expectContainsExactly<T2, T1 extends T2>(received: T1[], expected: T2[], indexer: (item: T2) => string): void;
|
|
25
|
+
export declare function expectListSubsetMatch(list01: unknown[], list02: unknown[]): void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expectListSubsetMatch = exports.expectContainsExactly = exports.expectContainsExactlyForAnyType = exports.expectContainsNoneIn = exports.expectContainsNoneInForAnyType = exports.expectContainsEveryItemIn = exports.expectContainsEveryItemInForAnyType = void 0;
|
|
4
|
+
const softkave_js_utils_1 = require("softkave-js-utils");
|
|
5
|
+
function expectContainsEveryItemInForAnyType(received, expected, receivedIndexer, expectedIndexer) {
|
|
6
|
+
const receivedMap = (0, softkave_js_utils_1.indexArray)(received, { indexer: receivedIndexer });
|
|
7
|
+
expected.forEach(item1 => {
|
|
8
|
+
const k = expectedIndexer(item1);
|
|
9
|
+
const item2 = receivedMap[k];
|
|
10
|
+
expect(item2).toBeTruthy();
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
exports.expectContainsEveryItemInForAnyType = expectContainsEveryItemInForAnyType;
|
|
14
|
+
/**
|
|
15
|
+
* Checks that `received` contains every item in `expected` using the `indexer`
|
|
16
|
+
* provided. The `indexer` should return a unique string for each unique item in
|
|
17
|
+
* the list. Also, the same unique string should be returned for the same item
|
|
18
|
+
* no matter how many times `indexer` is called.
|
|
19
|
+
*/
|
|
20
|
+
function expectContainsEveryItemIn(received, expected, indexer) {
|
|
21
|
+
expectContainsEveryItemInForAnyType(received, expected, indexer, indexer);
|
|
22
|
+
}
|
|
23
|
+
exports.expectContainsEveryItemIn = expectContainsEveryItemIn;
|
|
24
|
+
function expectContainsNoneInForAnyType(received, expected, receivedIndexer, expectedIndexer) {
|
|
25
|
+
const receivedMap = (0, softkave_js_utils_1.indexArray)(received, { indexer: receivedIndexer });
|
|
26
|
+
expected.forEach(item1 => {
|
|
27
|
+
const k = expectedIndexer(item1);
|
|
28
|
+
const item2 = receivedMap[k];
|
|
29
|
+
expect(item2).toBeFalsy();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
exports.expectContainsNoneInForAnyType = expectContainsNoneInForAnyType;
|
|
33
|
+
/**
|
|
34
|
+
* Checks that `received` contains none of the items in `expected` using the `indexer`
|
|
35
|
+
* provided. The `indexer` should return a unique string for each unique item in
|
|
36
|
+
* the list. Also, the same unique string should be returned for the same item
|
|
37
|
+
* no matter how many times `indexer` is called.
|
|
38
|
+
*/
|
|
39
|
+
function expectContainsNoneIn(received, expected, indexer) {
|
|
40
|
+
expectContainsNoneInForAnyType(received, expected, indexer, indexer);
|
|
41
|
+
}
|
|
42
|
+
exports.expectContainsNoneIn = expectContainsNoneIn;
|
|
43
|
+
function expectContainsExactlyForAnyType(received, expected, receivedIndexer, expectedIndexer) {
|
|
44
|
+
expect(received.length).toEqual(expected.length);
|
|
45
|
+
expectContainsEveryItemInForAnyType(received, expected, receivedIndexer, expectedIndexer);
|
|
46
|
+
}
|
|
47
|
+
exports.expectContainsExactlyForAnyType = expectContainsExactlyForAnyType;
|
|
48
|
+
/**
|
|
49
|
+
* Checks that `received` and `expected` contains the same items using the
|
|
50
|
+
* `indexer` provided. The `indexer` should return a unique string for each
|
|
51
|
+
* unique item in the list. Also, the same unique string should be returned for
|
|
52
|
+
* the same item no matter how many times `indexer` is called.
|
|
53
|
+
*/
|
|
54
|
+
function expectContainsExactly(received, expected, indexer) {
|
|
55
|
+
expectContainsExactlyForAnyType(received, expected, indexer, indexer);
|
|
56
|
+
}
|
|
57
|
+
exports.expectContainsExactly = expectContainsExactly;
|
|
58
|
+
function expectListSubsetMatch(list01, list02) {
|
|
59
|
+
const subsetLength = Math.min(list01.length, list02.length);
|
|
60
|
+
return expect(list01.slice(0, subsetLength)).toEqual(list02.slice(0, subsetLength));
|
|
61
|
+
}
|
|
62
|
+
exports.expectListSubsetMatch = expectListSubsetMatch;
|
|
63
|
+
//# sourceMappingURL=assertion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/assertion.ts"],"names":[],"mappings":";;;AAAA,yDAA6C;AAE7C,SAAgB,mCAAmC,CACjD,QAAc,EACd,QAAc,EACd,eAAqC,EACrC,eAAqC;IAErC,MAAM,WAAW,GAAG,IAAA,8BAAU,EAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvB,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,kFAYC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CACvC,QAAc,EACd,QAAc,EACd,OAA6B;IAE7B,mCAAmC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAND,8DAMC;AAED,SAAgB,8BAA8B,CAC5C,QAAc,EACd,QAAc,EACd,eAAqC,EACrC,eAAqC;IAErC,MAAM,WAAW,GAAG,IAAA,8BAAU,EAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvB,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,wEAYC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAClC,QAAc,EACd,QAAc,EACd,OAA6B;IAE7B,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAND,oDAMC;AAED,SAAgB,+BAA+B,CAC7C,QAAc,EACd,QAAc,EACd,eAAqC,EACrC,eAAqC;IAErC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,mCAAmC,CACjC,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,eAAe,CAChB,CAAC;AACJ,CAAC;AAbD,0EAaC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CACnC,QAAc,EACd,QAAc,EACd,OAA6B;IAE7B,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAND,sDAMC;AAED,SAAgB,qBAAqB,CAAC,MAAiB,EAAE,MAAiB;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAClD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAC9B,CAAC;AACJ,CAAC;AALD,sDAKC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.expectBinaryEqual = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const streamToBuffer_1 = require("../../utils/streamToBuffer");
|
|
9
|
+
async function expectBinaryEqual(body, expectedBody) {
|
|
10
|
+
const [bodyBuffer, expectedBuffer] = await Promise.all([
|
|
11
|
+
Buffer.isBuffer(body) ? body : (0, streamToBuffer_1.streamToBuffer)(body),
|
|
12
|
+
Buffer.isBuffer(expectedBody) ? expectedBody : (0, streamToBuffer_1.streamToBuffer)(expectedBody),
|
|
13
|
+
]);
|
|
14
|
+
(0, assert_1.default)(bodyBuffer);
|
|
15
|
+
(0, assert_1.default)(expectedBuffer);
|
|
16
|
+
expect(expectedBuffer.equals(bodyBuffer)).toBe(true);
|
|
17
|
+
}
|
|
18
|
+
exports.expectBinaryEqual = expectBinaryEqual;
|
|
19
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/binary.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,+DAA0D;AAEnD,KAAK,UAAU,iBAAiB,CACrC,IAAuB,EACvB,YAA+B;IAE/B,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,+BAAc,EAAC,IAAI,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,+BAAc,EAAC,YAAY,CAAC;KAC5E,CAAC,CAAC;IAEH,IAAA,gBAAM,EAAC,UAAU,CAAC,CAAC;IACnB,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC;IACvB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAZD,8CAYC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AnyFn } from 'softkave-js-utils';
|
|
2
|
+
export declare function assertErrorHasName(error: unknown, expectedErrorNames: string[]): void;
|
|
3
|
+
export declare function expectErrorThrown(fn: AnyFn, expected?: string[] | AnyFn<[unknown], boolean | string | void>, finallyFn?: AnyFn): Promise<void>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expectErrorThrown = exports.assertErrorHasName = void 0;
|
|
4
|
+
const assert = require("assert");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const util_1 = require("util");
|
|
7
|
+
function assertErrorHasName(error, expectedErrorNames) {
|
|
8
|
+
const errorList = (0, lodash_1.isArray)(error) ? error : [error];
|
|
9
|
+
const matchedTypes = expectedErrorNames.map(name => errorList.find(item => (item === null || item === void 0 ? void 0 : item.name) === name));
|
|
10
|
+
const missingTypes = [];
|
|
11
|
+
expectedErrorNames.forEach((name, i) => {
|
|
12
|
+
if (!matchedTypes[i]) {
|
|
13
|
+
missingTypes.push(name);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
const missingError = new Error(`${missingTypes.join(', ')} not found in \n${(0, util_1.format)(error)}`);
|
|
17
|
+
assert(missingTypes.length === 0, missingError);
|
|
18
|
+
}
|
|
19
|
+
exports.assertErrorHasName = assertErrorHasName;
|
|
20
|
+
async function expectErrorThrown(fn, expected, finallyFn) {
|
|
21
|
+
try {
|
|
22
|
+
await fn();
|
|
23
|
+
assert.fail('Error not thrown');
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if ((0, lodash_1.isFunction)(expected)) {
|
|
27
|
+
const assertionResult = expected(error);
|
|
28
|
+
if (!(0, lodash_1.isUndefined)(assertionResult)) {
|
|
29
|
+
assert(assertionResult === true, (0, lodash_1.isString)(assertionResult) ? assertionResult : 'Expectation not met');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (expected) {
|
|
33
|
+
assertErrorHasName(error, expected);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
if (finallyFn) {
|
|
38
|
+
finallyFn();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.expectErrorThrown = expectErrorThrown;
|
|
43
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/error.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAClC,mCAAkE;AAElE,+BAA4B;AAE5B,SAAgB,kBAAkB,CAChC,KAAc,EACd,kBAA4B;IAE5B,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACjD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,IAAI,CAAC,CAC5C,CAAC;IACF,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,KAAK,CAC5B,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAA,aAAM,EAAC,KAAK,CAAC,EAAE,CAC7D,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AApBD,gDAoBC;AAEM,KAAK,UAAU,iBAAiB,CACrC,EAAS,EACT,QAA+D,EAC/D,SAAiB;IAEjB,IAAI;QACF,MAAM,EAAE,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACjC;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,IAAA,mBAAU,EAAC,QAAQ,CAAC,EAAE;YACxB,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAExC,IAAI,CAAC,IAAA,oBAAW,EAAC,eAAe,CAAC,EAAE;gBACjC,MAAM,CACJ,eAAe,KAAK,IAAI,EACxB,IAAA,iBAAQ,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB,CACpE,CAAC;aACH;SACF;aAAM,IAAI,QAAQ,EAAE;YACnB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACrC;KACF;YAAS;QACR,IAAI,SAAS,EAAE;YACb,SAAS,EAAE,CAAC;SACb;KACF;AACH,CAAC;AA1BD,8CA0BC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockWith = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
function mockWith(source, dest) {
|
|
6
|
+
for (const key in source) {
|
|
7
|
+
let value = source[key];
|
|
8
|
+
if ((0, lodash_1.isFunction)(value)) {
|
|
9
|
+
value = jest.fn(value).mockName(key);
|
|
10
|
+
}
|
|
11
|
+
dest[key] = value;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.mockWith = mockWith;
|
|
15
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/mock.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAGlC,SAAgB,QAAQ,CAAC,MAAiB,EAAE,IAAe;IACzD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAExB,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,EAAE;YACrB,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACtC;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACnB;AACH,CAAC;AAVD,4BAUC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.genDbName = exports.dropMongoDBAndEndConnection = void 0;
|
|
4
|
+
const faker_1 = require("@faker-js/faker");
|
|
5
|
+
async function dropMongoDBAndEndConnection(connection) {
|
|
6
|
+
if (!connection) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
await connection.dropDatabase();
|
|
10
|
+
await connection.close();
|
|
11
|
+
}
|
|
12
|
+
exports.dropMongoDBAndEndConnection = dropMongoDBAndEndConnection;
|
|
13
|
+
function genDbName() {
|
|
14
|
+
return faker_1.faker.lorem.words(5).replace(/ /g, '_');
|
|
15
|
+
}
|
|
16
|
+
exports.genDbName = genDbName;
|
|
17
|
+
//# sourceMappingURL=mongodb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../../../src/testUtils/helpers/mongodb.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAG/B,KAAK,UAAU,2BAA2B,CAC/C,UAA8B;IAE9B,IAAI,CAAC,UAAU,EAAE;QACf,OAAO;KACR;IAED,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;IAChC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AATD,kEASC;AAED,SAAgB,SAAS;IACvB,OAAO,aAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAFD,8BAEC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AnyFn, AnyObject, OrArray, OrPromise } from 'softkave-js-utils';
|
|
2
|
+
import { SemanticProviderMutationOpOptions } from '../../contexts/semantic/types';
|
|
3
|
+
import { ServerRequest } from '../../contexts/types';
|
|
4
|
+
import { Endpoint, InferEndpointParams, InferEndpointResult, PaginatedResult, PaginationQuery } from '../../endpoints/types';
|
|
5
|
+
export declare function mutationTest(name: string, fn: AnyFn<[SemanticProviderMutationOpOptions]>, timeout?: number): void;
|
|
6
|
+
export declare function completeTests(): Promise<void>;
|
|
7
|
+
export declare function startTesting(): void;
|
|
8
|
+
type TestFn = (name: string, fn: AnyFn, timeout?: number) => void;
|
|
9
|
+
export interface SoftkaveTest {
|
|
10
|
+
run: TestFn;
|
|
11
|
+
only: TestFn;
|
|
12
|
+
}
|
|
13
|
+
export declare const softkaveTest: SoftkaveTest;
|
|
14
|
+
export interface PerformPaginationTestParams<T extends Endpoint<AnyObject, PaginatedResult>> {
|
|
15
|
+
params: Omit<InferEndpointParams<T>, keyof PaginationQuery>;
|
|
16
|
+
otherTestsFn?: AnyFn<[InferEndpointResult<T>]>;
|
|
17
|
+
req: ServerRequest;
|
|
18
|
+
count: number;
|
|
19
|
+
pageSize?: number;
|
|
20
|
+
fields: OrArray<keyof InferEndpointResult<T>>;
|
|
21
|
+
}
|
|
22
|
+
export declare function performPaginationTest<T extends Endpoint<any, PaginatedResult>>(endpoint: T, props: PerformPaginationTestParams<T>): Promise<void>;
|
|
23
|
+
export declare function expectFields<T extends AnyObject>(resources: T[], fields: Partial<T>): void;
|
|
24
|
+
export interface MatchExpect<TContexts extends unknown[] = unknown[]> {
|
|
25
|
+
matcher: AnyFn<TContexts, OrPromise<boolean>>;
|
|
26
|
+
expect: AnyFn<TContexts, OrPromise<void>>;
|
|
27
|
+
}
|
|
28
|
+
export declare function matchExpects<TContexts extends unknown[]>(expects: Array<MatchExpect<TContexts>>, ...args: TContexts): Promise<void>;
|
|
29
|
+
export declare function testCombinations<TCombination extends AnyObject>(combinations: TCombination[], fn: AnyFn<[TCombination]>): Promise<void>;
|
|
30
|
+
export {};
|