@quanticjs/testing 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ import { TestingModuleBuilder } from '@nestjs/testing';
2
+ import { createMockRepository, createMockRedisClient } from './mocks';
3
+ export { createMockRepository, createMockRedisClient };
4
+ export interface TestingModuleOptions {
5
+ providers?: any[];
6
+ entities?: any[];
7
+ overrides?: Array<{
8
+ provide: any;
9
+ useValue: any;
10
+ }>;
11
+ withPipeline?: boolean;
12
+ }
13
+ export declare class TestingModuleFactory {
14
+ static create(options?: TestingModuleOptions): TestingModuleBuilder;
15
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestingModuleFactory = exports.createMockRedisClient = exports.createMockRepository = void 0;
4
+ const testing_1 = require("@nestjs/testing");
5
+ const cqrs_1 = require("@nestjs/cqrs");
6
+ const typeorm_1 = require("@nestjs/typeorm");
7
+ const common_1 = require("@nestjs/common");
8
+ const core_1 = require("@quanticjs/core");
9
+ const mocks_1 = require("./mocks");
10
+ Object.defineProperty(exports, "createMockRepository", { enumerable: true, get: function () { return mocks_1.createMockRepository; } });
11
+ Object.defineProperty(exports, "createMockRedisClient", { enumerable: true, get: function () { return mocks_1.createMockRedisClient; } });
12
+ class TestingModuleFactory {
13
+ static create(options = {}) {
14
+ const { providers = [], entities = [], overrides = [], withPipeline = false } = options;
15
+ const mockRepos = entities.map((entity) => ({
16
+ provide: (0, typeorm_1.getRepositoryToken)(entity),
17
+ useValue: (0, mocks_1.createMockRepository)(),
18
+ }));
19
+ const mockRedis = { provide: core_1.REDIS_CLIENT, useValue: (0, mocks_1.createMockRedisClient)() };
20
+ const pipelineProviders = withPipeline
21
+ ? [
22
+ core_1.LogBehavior,
23
+ { provide: core_1.PIPELINE_BEHAVIOR, useExisting: core_1.LogBehavior, multi: true },
24
+ core_1.ValidationBehavior,
25
+ { provide: core_1.PIPELINE_BEHAVIOR, useExisting: core_1.ValidationBehavior, multi: true },
26
+ core_1.QuanticCommandBus,
27
+ core_1.QuanticQueryBus,
28
+ ]
29
+ : [];
30
+ let builder = testing_1.Test.createTestingModule({
31
+ imports: [cqrs_1.CqrsModule.forRoot()],
32
+ providers: [
33
+ ...mockRepos,
34
+ mockRedis,
35
+ ...pipelineProviders,
36
+ ...providers,
37
+ ],
38
+ });
39
+ for (const override of overrides) {
40
+ builder = builder.overrideProvider(override.provide).useValue(override.useValue);
41
+ }
42
+ common_1.Logger.overrideLogger(['error']);
43
+ return builder;
44
+ }
45
+ }
46
+ exports.TestingModuleFactory = TestingModuleFactory;
@@ -0,0 +1,2 @@
1
+ export { TestingModuleFactory, createMockRepository, createMockRedisClient } from './TestingModuleFactory';
2
+ export type { TestingModuleOptions } from './TestingModuleFactory';
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMockRedisClient = exports.createMockRepository = exports.TestingModuleFactory = void 0;
4
+ var TestingModuleFactory_1 = require("./TestingModuleFactory");
5
+ Object.defineProperty(exports, "TestingModuleFactory", { enumerable: true, get: function () { return TestingModuleFactory_1.TestingModuleFactory; } });
6
+ Object.defineProperty(exports, "createMockRepository", { enumerable: true, get: function () { return TestingModuleFactory_1.createMockRepository; } });
7
+ Object.defineProperty(exports, "createMockRedisClient", { enumerable: true, get: function () { return TestingModuleFactory_1.createMockRedisClient; } });
@@ -0,0 +1,28 @@
1
+ export declare function createMockRepository<T = any>(): {
2
+ find: jest.Mock<any, any, any>;
3
+ findOne: jest.Mock<any, any, any>;
4
+ findOneBy: jest.Mock<any, any, any>;
5
+ findAndCount: jest.Mock<any, any, any>;
6
+ save: jest.Mock<any, any, any>;
7
+ create: jest.Mock<any, any, any>;
8
+ update: jest.Mock<any, any, any>;
9
+ delete: jest.Mock<any, any, any>;
10
+ remove: jest.Mock<any, any, any>;
11
+ count: jest.Mock<any, any, any>;
12
+ createQueryBuilder: jest.Mock<{
13
+ where: jest.Mock<any, any, any>;
14
+ andWhere: jest.Mock<any, any, any>;
15
+ orderBy: jest.Mock<any, any, any>;
16
+ addOrderBy: jest.Mock<any, any, any>;
17
+ take: jest.Mock<any, any, any>;
18
+ skip: jest.Mock<any, any, any>;
19
+ leftJoinAndSelect: jest.Mock<any, any, any>;
20
+ getMany: jest.Mock<any, any, any>;
21
+ getOne: jest.Mock<any, any, any>;
22
+ getManyAndCount: jest.Mock<any, any, any>;
23
+ }, [], any>;
24
+ manager: {
25
+ transaction: jest.Mock<any, any, any>;
26
+ };
27
+ };
28
+ export declare function createMockRedisClient(): Record<string, jest.Mock<any, any, any>>;
package/dist/mocks.js ADDED
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMockRepository = createMockRepository;
4
+ exports.createMockRedisClient = createMockRedisClient;
5
+ function createMockRepository() {
6
+ return {
7
+ find: jest.fn(),
8
+ findOne: jest.fn(),
9
+ findOneBy: jest.fn(),
10
+ findAndCount: jest.fn(),
11
+ save: jest.fn().mockImplementation((entity) => Promise.resolve(entity)),
12
+ create: jest.fn().mockImplementation((dto) => dto),
13
+ update: jest.fn(),
14
+ delete: jest.fn(),
15
+ remove: jest.fn(),
16
+ count: jest.fn(),
17
+ createQueryBuilder: jest.fn(() => ({
18
+ where: jest.fn().mockReturnThis(),
19
+ andWhere: jest.fn().mockReturnThis(),
20
+ orderBy: jest.fn().mockReturnThis(),
21
+ addOrderBy: jest.fn().mockReturnThis(),
22
+ take: jest.fn().mockReturnThis(),
23
+ skip: jest.fn().mockReturnThis(),
24
+ leftJoinAndSelect: jest.fn().mockReturnThis(),
25
+ getMany: jest.fn().mockResolvedValue([]),
26
+ getOne: jest.fn().mockResolvedValue(null),
27
+ getManyAndCount: jest.fn().mockResolvedValue([[], 0]),
28
+ })),
29
+ manager: {
30
+ transaction: jest.fn().mockImplementation((cb) => cb({
31
+ save: jest.fn().mockImplementation((entity) => Promise.resolve(entity)),
32
+ findOne: jest.fn(),
33
+ })),
34
+ },
35
+ };
36
+ }
37
+ function createMockRedisClient() {
38
+ const client = {
39
+ get: jest.fn().mockResolvedValue(null),
40
+ set: jest.fn().mockResolvedValue('OK'),
41
+ del: jest.fn().mockResolvedValue(1),
42
+ setex: jest.fn().mockResolvedValue('OK'),
43
+ exists: jest.fn().mockResolvedValue(0),
44
+ xadd: jest.fn().mockResolvedValue('1-0'),
45
+ xreadgroup: jest.fn().mockResolvedValue(null),
46
+ xack: jest.fn().mockResolvedValue(1),
47
+ xgroup: jest.fn().mockResolvedValue('OK'),
48
+ quit: jest.fn().mockResolvedValue('OK'),
49
+ disconnect: jest.fn(),
50
+ on: jest.fn().mockReturnThis(),
51
+ duplicate: jest.fn(),
52
+ };
53
+ client.duplicate.mockImplementation(() => createMockRedisClient());
54
+ return client;
55
+ }
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@quanticjs/testing",
3
+ "version": "2.0.0",
4
+ "description": "Testing utilities for quanticjs — mock factories, TestingModuleFactory",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "publishConfig": {
11
+ "registry": "https://registry.npmjs.org",
12
+ "access": "public"
13
+ },
14
+ "license": "MIT",
15
+ "scripts": {
16
+ "build": "tsc -p tsconfig.json",
17
+ "test": "jest --passWithNoTests",
18
+ "clean": "rm -rf dist"
19
+ },
20
+ "dependencies": {
21
+ "@quanticjs/core": "^2.0.0"
22
+ },
23
+ "peerDependencies": {
24
+ "@nestjs/common": "^11.0.0",
25
+ "@nestjs/cqrs": "^11.0.3",
26
+ "@nestjs/testing": "^11.0.0",
27
+ "@nestjs/typeorm": "^11.0.0"
28
+ }
29
+ }