ng-mocks 11.2.7 → 11.4.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 +35 -0
- package/README.md +41 -3174
- package/dist/lib/common/core.helpers.d.ts +2 -2
- package/dist/lib/common/core.helpers.js +55 -27
- package/dist/lib/common/{core.reflect.body.d.ts → core.reflect.body-catch.d.ts} +0 -0
- package/dist/lib/common/core.reflect.body-catch.js +12 -0
- package/dist/lib/common/core.reflect.body-global.d.ts +3 -0
- package/dist/lib/common/core.reflect.body-global.js +11 -0
- package/dist/lib/common/core.reflect.directive-resolve.js +6 -4
- package/dist/lib/common/core.reflect.jit.d.ts +3 -0
- package/dist/lib/common/core.reflect.jit.js +11 -0
- package/dist/lib/common/core.reflect.module-resolve.js +6 -4
- package/dist/lib/common/core.reflect.pipe-resolve.js +6 -4
- package/dist/lib/common/core.tokens.d.ts +2 -2
- package/dist/lib/common/core.tokens.js +1 -1
- package/dist/lib/common/decorate.inputs.js +2 -2
- package/dist/lib/common/decorate.mock.d.ts +3 -0
- package/dist/lib/common/decorate.mock.js +13 -0
- package/dist/lib/common/decorate.outputs.js +2 -2
- package/dist/lib/common/decorate.queries.js +2 -2
- package/dist/lib/common/func.is-mock-control-value-accessor.js +2 -3
- package/dist/lib/common/func.is-mock-validator.js +2 -3
- package/dist/lib/common/func.is-ng-def.d.ts +7 -1
- package/dist/lib/common/func.is-ng-def.js +5 -1
- package/dist/lib/common/func.is-ng-injection-token.js +2 -3
- package/dist/lib/common/func.is-ng-module-def-with-providers.js +2 -3
- package/dist/lib/common/func.is-ng-type.d.ts +2 -2
- package/dist/lib/common/func.is-ng-type.js +6 -5
- package/dist/lib/common/mock-control-value-accessor.d.ts +3 -3
- package/dist/lib/common/mock-control-value-accessor.js +1 -1
- package/dist/lib/common/mock.js +31 -26
- package/dist/lib/common/ng-mocks-universe.d.ts +5 -0
- package/dist/lib/common/ng-mocks-universe.js +65 -7
- package/dist/lib/mock/clone-providers.js +23 -6
- package/dist/lib/mock/decorate-declaration.js +6 -6
- package/dist/lib/mock/to-existing-provider.d.ts +1 -1
- package/dist/lib/mock/to-factory-provider.d.ts +1 -1
- package/dist/lib/mock-builder/mock-builder-stash.js +3 -1
- package/dist/lib/mock-builder/mock-builder.js +2 -2
- package/dist/lib/mock-builder/mock-builder.performance.js +2 -2
- package/dist/lib/mock-builder/mock-builder.promise.js +4 -1
- package/dist/lib/mock-builder/promise/create-ng-mocks-overrides-token.js +2 -2
- package/dist/lib/mock-builder/promise/create-ng-mocks-touches-token.js +2 -2
- package/dist/lib/mock-builder/promise/get-override-meta.js +4 -4
- package/dist/lib/mock-builder/promise/get-root-provider-parameters.js +3 -3
- package/dist/lib/mock-builder/promise/init-module.js +2 -2
- package/dist/lib/mock-builder/promise/init-ng-modules.js +2 -2
- package/dist/lib/mock-component/mock-component.d.ts +1 -1
- package/dist/lib/mock-component/mock-component.js +9 -17
- package/dist/lib/mock-directive/mock-directive.d.ts +1 -1
- package/dist/lib/mock-directive/mock-directive.js +10 -23
- package/dist/lib/mock-helper/func.global-prepare.d.ts +2 -0
- package/dist/lib/mock-helper/func.global-prepare.js +9 -0
- package/dist/lib/mock-helper/mock-helper.auto-spy.js +2 -2
- package/dist/lib/mock-helper/mock-helper.d.ts +38 -0
- package/dist/lib/mock-helper/mock-helper.global-exclude.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-exclude.js +9 -0
- package/dist/lib/mock-helper/mock-helper.global-keep.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-keep.js +9 -0
- package/dist/lib/mock-helper/mock-helper.global-mock.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-mock.js +9 -0
- package/dist/lib/mock-helper/mock-helper.global-replace.d.ts +3 -0
- package/dist/lib/mock-helper/mock-helper.global-replace.js +26 -0
- package/dist/lib/mock-helper/mock-helper.global-wipe.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-wipe.js +11 -0
- package/dist/lib/mock-helper/mock-helper.guts.js +100 -37
- package/dist/lib/mock-helper/mock-helper.js +15 -1
- package/dist/lib/mock-helper/mock-helper.reset.js +2 -1
- package/dist/lib/mock-helper/mock-helper.stub-member.d.ts +2 -0
- package/dist/lib/mock-helper/mock-helper.stub-member.js +25 -0
- package/dist/lib/mock-helper/mock-helper.stub.js +2 -1
- package/dist/lib/mock-helper/mock-helper.throw-on-console.d.ts +2 -0
- package/dist/lib/mock-helper/mock-helper.throw-on-console.js +25 -0
- package/dist/lib/mock-instance/mock-instance.js +11 -7
- package/dist/lib/mock-module/mock-module.d.ts +2 -2
- package/dist/lib/mock-module/mock-module.js +7 -9
- package/dist/lib/mock-module/mock-ng-def.js +29 -12
- package/dist/lib/mock-pipe/mock-pipe.d.ts +2 -2
- package/dist/lib/mock-pipe/mock-pipe.js +18 -44
- package/dist/lib/mock-provider/mock-provider.d.ts +3 -3
- package/dist/lib/mock-provider/mock-provider.js +1 -1
- package/dist/lib/mock-render/func.generate-template.d.ts +2 -0
- package/dist/lib/mock-render/func.generate-template.js +87 -0
- package/dist/lib/mock-render/func.install-prop-reader.d.ts +2 -0
- package/dist/lib/mock-render/func.install-prop-reader.js +80 -0
- package/dist/lib/mock-render/mock-render.d.ts +16 -2
- package/dist/lib/mock-render/mock-render.js +111 -132
- package/dist/lib/mock-service/helper.resolve-provider.js +9 -12
- package/dist/lib/mock-service/helper.use-factory.js +3 -3
- package/dist/lib/mock-service/mock-provider.js +2 -1
- package/dist/lib/mock-service/mock-service.d.ts +4 -4
- package/dist/lib/mock-service/mock-service.js +1 -1
- package/examples/MockBuilder/test.deep.spec.ts +1 -1
- package/examples/MockBuilder/test.ng-mocks.spec.ts +1 -1
- package/examples/MockForms/test.spec.ts +2 -2
- package/examples/MockInstance/test.spec.ts +1 -1
- package/examples/MockObservable/test.spec.ts +7 -4
- package/examples/MockPipe/test.spec.ts +1 -1
- package/examples/MockProvider/test.spec.ts +5 -6
- package/examples/MockReactiveForms/test.spec.ts +2 -2
- package/examples/MockViewChild/test.spec.ts +3 -3
- package/examples/TestAttributeDirective/test.spec.ts +1 -1
- package/examples/TestHttpInterceptor/test.spec.ts +10 -4
- package/examples/TestHttpRequest/test.spec.ts +6 -4
- package/examples/TestLifecycleHooks/test.spec.ts +6 -2
- package/examples/TestLifecycleHooks/test.string.spec.ts +3 -2
- package/examples/TestLifecycleHooks/test.type-without-params.spec.ts +3 -2
- package/examples/TestMultiToken/test.spec.ts +3 -3
- package/examples/TestProvider/test.spec.ts +2 -3
- package/examples/TestProviderWithDependencies/test.spec.ts +7 -3
- package/examples/TestProviderWithUseClass/test.spec.ts +9 -3
- package/examples/TestProviderWithUseExisting/test.spec.ts +9 -3
- package/examples/TestProviderWithUseFactory/test.spec.ts +2 -3
- package/examples/TestProviderWithUseValue/test.spec.ts +4 -4
- package/examples/TestRoute/test.spec.ts +7 -7
- package/examples/TestRoutingGuard/test.spec.ts +8 -6
- package/examples/TestRoutingResolver/test.spec.ts +6 -4
- package/examples/TestToken/test.spec.ts +7 -6
- package/examples/main/test.spec.ts +2 -2
- package/examples/ngMocksFaster/test.spec.ts +2 -2
- package/package.json +2 -3
- package/dist/lib/common/core.reflect.body.js +0 -12
- package/dist/lib/common/core.reflect.d.ts +0 -6
- package/dist/lib/common/core.reflect.js +0 -10
- package/dist/lib/common/mock-of.d.ts +0 -3
- package/dist/lib/common/mock-of.js +0 -23
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { AnyType } from '../common/core.types';
|
|
2
2
|
/**
|
|
3
|
-
* @see https://github.com/ike18t/ng-mocks#how-to-mock-
|
|
3
|
+
* @see https://github.com/ike18t/ng-mocks#how-to-mock-services
|
|
4
4
|
*/
|
|
5
5
|
export declare function MockService(service: boolean | number | string | null | undefined): undefined;
|
|
6
6
|
/**
|
|
7
|
-
* @see https://github.com/ike18t/ng-mocks#how-to-mock-
|
|
7
|
+
* @see https://github.com/ike18t/ng-mocks#how-to-mock-services
|
|
8
8
|
*/
|
|
9
9
|
export declare function MockService<T>(service: AnyType<T>, overrides?: Partial<T>, mockNamePrefix?: string): T;
|
|
10
10
|
/**
|
|
11
|
-
* @see https://github.com/ike18t/ng-mocks#how-to-mock-
|
|
11
|
+
* @see https://github.com/ike18t/ng-mocks#how-to-mock-services
|
|
12
12
|
*/
|
|
13
13
|
export declare function MockService<T>(service: AnyType<T>, mockNamePrefix?: string): T;
|
|
14
14
|
/**
|
|
15
|
-
* @see https://github.com/ike18t/ng-mocks#how-to-mock-
|
|
15
|
+
* @see https://github.com/ike18t/ng-mocks#how-to-mock-services
|
|
16
16
|
*/
|
|
17
17
|
export declare function MockService<T = any>(service: object, mockNamePrefix?: string): T;
|
|
@@ -102,4 +102,4 @@ function MockService(service) {
|
|
|
102
102
|
return value;
|
|
103
103
|
}
|
|
104
104
|
exports.MockService = MockService;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL21vY2stc2VydmljZS9tb2NrLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esb0VBQTZEO0FBRTdELG1EQUE0QztBQUM1QyxpREFBMEM7QUFDMUMsaURBQTBDO0FBQzFDLDZEQUFzRDtBQUV0RCxJQUFNLGVBQWUsR0FFakI7SUFDRixDQUFDLHdCQUFZLEVBQUUsVUFBQyxPQUFZLElBQUssT0FBQSw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQTVELENBQTRELENBQUM7SUFDOUY7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBWSxFQUFFLE1BQWM7WUFDM0IsT0FBQSw2QkFBaUIsQ0FBQyxZQUFZLENBQUMsV0FBUSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBRSxDQUFDO1FBQXBGLENBQW9GO0tBQ3ZGO0lBQ0QsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQWxCLENBQWtCLEVBQUUsY0FBTSxPQUFBLEVBQUUsRUFBRixDQUFFLENBQUM7SUFDckM7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFROztZQUN4QixJQUFNLEtBQUssR0FBRyw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztnQkFDdkYsS0FBdUIsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBeEMsSUFBTSxRQUFRLFdBQUE7b0JBQ2pCLElBQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBRyxNQUFNLElBQUksVUFBVSxVQUFJLFFBQVUsQ0FBQyxDQUFDO29CQUNyRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQ3RCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ3hCO2lCQUNGOzs7Ozs7Ozs7WUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFN0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsSUFBTSxZQUFZLEdBQUcsVUFBQyxPQUFZLEVBQUUsTUFBYyxFQUFFLFFBQTRCOzs7UUFDOUUsS0FBa0MsSUFBQSxvQkFBQSxTQUFBLGVBQWUsQ0FBQSxnREFBQSw2RUFBRTtZQUF4QyxJQUFBLEtBQUEsb0NBQW1CLEVBQWxCLEtBQUssUUFBQSxFQUFFLFVBQVUsUUFBQTtZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixTQUFTO2FBQ1Y7WUFFRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzlDOzs7Ozs7Ozs7QUFDSCxDQUFDLENBQUM7QUFzQkYsU0FBZ0IsV0FBVyxDQUFDLE9BQVk7SUFDdEMsd0RBQXdEO0lBRGhCLGNBQWM7U0FBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1FBQWQsNkJBQWM7O0lBR3RELElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFbEcsSUFBTSxLQUFLLEdBQVEsWUFBWSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdEUsSUFBSSxTQUFTLEVBQUU7UUFDYiwwQkFBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQWJELGtDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW55VHlwZSB9IGZyb20gJy4uL2NvbW1vbi9jb3JlLnR5cGVzJztcbmltcG9ydCBtb2NrSGVscGVyU3R1YiBmcm9tICcuLi9tb2NrLWhlbHBlci9tb2NrLWhlbHBlci5zdHViJztcblxuaW1wb3J0IGNoZWNrSXNDbGFzcyBmcm9tICcuL2NoZWNrLmlzLWNsYXNzJztcbmltcG9ydCBjaGVja0lzRnVuYyBmcm9tICcuL2NoZWNrLmlzLWZ1bmMnO1xuaW1wb3J0IGNoZWNrSXNJbnN0IGZyb20gJy4vY2hlY2suaXMtaW5zdCc7XG5pbXBvcnQgaGVscGVyTW9ja1NlcnZpY2UgZnJvbSAnLi9oZWxwZXIubW9jay1zZXJ2aWNlJztcblxuY29uc3QgbW9ja1ZhcmlhYmxlTWFwOiBBcnJheTxcbiAgWyhkZWY6IGFueSkgPT4gYm9vbGVhbiwgKHNlcnZpY2U6IGFueSwgcHJlZml4OiBzdHJpbmcsIGNhbGxiYWNrOiB0eXBlb2YgTW9ja1NlcnZpY2UpID0+IGFueV1cbj4gPSBbXG4gIFtjaGVja0lzQ2xhc3MsIChzZXJ2aWNlOiBhbnkpID0+IGhlbHBlck1vY2tTZXJ2aWNlLmNyZWF0ZU1vY2tGcm9tUHJvdG90eXBlKHNlcnZpY2UucHJvdG90eXBlKV0sXG4gIFtcbiAgICBjaGVja0lzRnVuYyxcbiAgICAoc2VydmljZTogYW55LCBwcmVmaXg6IHN0cmluZykgPT5cbiAgICAgIGhlbHBlck1vY2tTZXJ2aWNlLm1vY2tGdW5jdGlvbihgZnVuYzoke3ByZWZpeCB8fCBzZXJ2aWNlLm5hbWUgfHwgJ2Fycm93LWZ1bmN0aW9uJ31gKSxcbiAgXSxcbiAgW2RlZiA9PiBBcnJheS5pc0FycmF5KGRlZiksICgpID0+
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL21vY2stc2VydmljZS9tb2NrLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esb0VBQTZEO0FBRTdELG1EQUE0QztBQUM1QyxpREFBMEM7QUFDMUMsaURBQTBDO0FBQzFDLDZEQUFzRDtBQUV0RCxJQUFNLGVBQWUsR0FFakI7SUFDRixDQUFDLHdCQUFZLEVBQUUsVUFBQyxPQUFZLElBQUssT0FBQSw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQTVELENBQTRELENBQUM7SUFDOUY7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBWSxFQUFFLE1BQWM7WUFDM0IsT0FBQSw2QkFBaUIsQ0FBQyxZQUFZLENBQUMsV0FBUSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBRSxDQUFDO1FBQXBGLENBQW9GO0tBQ3ZGO0lBQ0QsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQWxCLENBQWtCLEVBQUUsY0FBTSxPQUFBLEVBQUUsRUFBRixDQUFFLENBQUM7SUFDckM7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFROztZQUN4QixJQUFNLEtBQUssR0FBRyw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztnQkFDdkYsS0FBdUIsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBeEMsSUFBTSxRQUFRLFdBQUE7b0JBQ2pCLElBQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBRyxNQUFNLElBQUksVUFBVSxVQUFJLFFBQVUsQ0FBQyxDQUFDO29CQUNyRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQ3RCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ3hCO2lCQUNGOzs7Ozs7Ozs7WUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFN0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsSUFBTSxZQUFZLEdBQUcsVUFBQyxPQUFZLEVBQUUsTUFBYyxFQUFFLFFBQTRCOzs7UUFDOUUsS0FBa0MsSUFBQSxvQkFBQSxTQUFBLGVBQWUsQ0FBQSxnREFBQSw2RUFBRTtZQUF4QyxJQUFBLEtBQUEsb0NBQW1CLEVBQWxCLEtBQUssUUFBQSxFQUFFLFVBQVUsUUFBQTtZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixTQUFTO2FBQ1Y7WUFFRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzlDOzs7Ozs7Ozs7QUFDSCxDQUFDLENBQUM7QUFzQkYsU0FBZ0IsV0FBVyxDQUFDLE9BQVk7SUFDdEMsd0RBQXdEO0lBRGhCLGNBQWM7U0FBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1FBQWQsNkJBQWM7O0lBR3RELElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFbEcsSUFBTSxLQUFLLEdBQVEsWUFBWSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdEUsSUFBSSxTQUFTLEVBQUU7UUFDYiwwQkFBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQWJELGtDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW55VHlwZSB9IGZyb20gJy4uL2NvbW1vbi9jb3JlLnR5cGVzJztcbmltcG9ydCBtb2NrSGVscGVyU3R1YiBmcm9tICcuLi9tb2NrLWhlbHBlci9tb2NrLWhlbHBlci5zdHViJztcblxuaW1wb3J0IGNoZWNrSXNDbGFzcyBmcm9tICcuL2NoZWNrLmlzLWNsYXNzJztcbmltcG9ydCBjaGVja0lzRnVuYyBmcm9tICcuL2NoZWNrLmlzLWZ1bmMnO1xuaW1wb3J0IGNoZWNrSXNJbnN0IGZyb20gJy4vY2hlY2suaXMtaW5zdCc7XG5pbXBvcnQgaGVscGVyTW9ja1NlcnZpY2UgZnJvbSAnLi9oZWxwZXIubW9jay1zZXJ2aWNlJztcblxuY29uc3QgbW9ja1ZhcmlhYmxlTWFwOiBBcnJheTxcbiAgWyhkZWY6IGFueSkgPT4gYm9vbGVhbiwgKHNlcnZpY2U6IGFueSwgcHJlZml4OiBzdHJpbmcsIGNhbGxiYWNrOiB0eXBlb2YgTW9ja1NlcnZpY2UpID0+IGFueV1cbj4gPSBbXG4gIFtjaGVja0lzQ2xhc3MsIChzZXJ2aWNlOiBhbnkpID0+IGhlbHBlck1vY2tTZXJ2aWNlLmNyZWF0ZU1vY2tGcm9tUHJvdG90eXBlKHNlcnZpY2UucHJvdG90eXBlKV0sXG4gIFtcbiAgICBjaGVja0lzRnVuYyxcbiAgICAoc2VydmljZTogYW55LCBwcmVmaXg6IHN0cmluZykgPT5cbiAgICAgIGhlbHBlck1vY2tTZXJ2aWNlLm1vY2tGdW5jdGlvbihgZnVuYzoke3ByZWZpeCB8fCBzZXJ2aWNlLm5hbWUgfHwgJ2Fycm93LWZ1bmN0aW9uJ31gKSxcbiAgXSxcbiAgW2RlZiA9PiBBcnJheS5pc0FycmF5KGRlZiksICgpID0+IFtdXSxcbiAgW1xuICAgIGNoZWNrSXNJbnN0LFxuICAgIChzZXJ2aWNlLCBwcmVmaXgsIGNhbGxiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGhlbHBlck1vY2tTZXJ2aWNlLmNyZWF0ZU1vY2tGcm9tUHJvdG90eXBlKHNlcnZpY2UuY29uc3RydWN0b3IucHJvdG90eXBlKTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgT2JqZWN0LmtleXMoc2VydmljZSkpIHtcbiAgICAgICAgY29uc3QgbW9jazogYW55ID0gY2FsbGJhY2soc2VydmljZVtwcm9wZXJ0eV0sIGAke3ByZWZpeCB8fCAnaW5zdGFuY2UnfS4ke3Byb3BlcnR5fWApO1xuICAgICAgICBpZiAobW9jayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVbcHJvcGVydHldID0gbW9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHZhbHVlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2VydmljZSkpO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgXSxcbl07XG5cbmNvbnN0IG1vY2tWYXJpYWJsZSA9IChzZXJ2aWNlOiBhbnksIHByZWZpeDogc3RyaW5nLCBjYWxsYmFjazogdHlwZW9mIE1vY2tTZXJ2aWNlKSA9PiB7XG4gIGZvciAoY29uc3QgW2NoZWNrLCBjcmVhdGVNb2NrXSBvZiBtb2NrVmFyaWFibGVNYXApIHtcbiAgICBpZiAoIWNoZWNrKHNlcnZpY2UpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlTW9jayhzZXJ2aWNlLCBwcmVmaXgsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjaG93LXRvLW1vY2stc2VydmljZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1vY2tTZXJ2aWNlKHNlcnZpY2U6IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNob3ctdG8tbW9jay1zZXJ2aWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2U8VD4oc2VydmljZTogQW55VHlwZTxUPiwgb3ZlcnJpZGVzPzogUGFydGlhbDxUPiwgbW9ja05hbWVQcmVmaXg/OiBzdHJpbmcpOiBUO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNob3ctdG8tbW9jay1zZXJ2aWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2U8VD4oc2VydmljZTogQW55VHlwZTxUPiwgbW9ja05hbWVQcmVmaXg/OiBzdHJpbmcpOiBUO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNob3ctdG8tbW9jay1zZXJ2aWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2U8VCA9IGFueT4oc2VydmljZTogb2JqZWN0LCBtb2NrTmFtZVByZWZpeD86IHN0cmluZyk6IFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBNb2NrU2VydmljZShzZXJ2aWNlOiBhbnksIC4uLmFyZ3M6IGFueVtdKTogYW55IHtcbiAgLy8gbW9ja2luZyBhbGwgbWV0aG9kcyAvIHByb3BlcnRpZXMgb2YgYSBjbGFzcyAvIG9iamVjdC5cblxuICBjb25zdCBtb2NrTmFtZVByZWZpeCA9IGFyZ3MubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgPyBhcmdzWzBdIDogYXJnc1sxXTtcbiAgY29uc3Qgb3ZlcnJpZGVzID0gYXJncy5sZW5ndGggPiAwICYmIGFyZ3NbMF0gJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnID8gYXJnc1swXSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCB2YWx1ZTogYW55ID0gbW9ja1ZhcmlhYmxlKHNlcnZpY2UsIG1vY2tOYW1lUHJlZml4LCBNb2NrU2VydmljZSk7XG5cbiAgaWYgKG92ZXJyaWRlcykge1xuICAgIG1vY2tIZWxwZXJTdHViKHZhbHVlLCBvdmVycmlkZXMpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
|
@@ -119,7 +119,7 @@ describe('MockBuilder:deep', () => {
|
|
|
119
119
|
.provide(MyCustomProvider1)
|
|
120
120
|
.provide([MyCustomProvider2, MyCustomProvider3])
|
|
121
121
|
|
|
122
|
-
// Now the pipe
|
|
122
|
+
// Now the pipe will not be replaced with its mock copy.
|
|
123
123
|
.keep(RestorePipe)
|
|
124
124
|
|
|
125
125
|
// Extra configuration.
|
|
@@ -60,7 +60,7 @@ describe('MockBuilder:ngMocks', () => {
|
|
|
60
60
|
})
|
|
61
61
|
.mock(TOKEN_CUSTOMIZE, 'My_Token')
|
|
62
62
|
|
|
63
|
-
// Now the pipe
|
|
63
|
+
// Now the pipe will not be replaced with its mock copy.
|
|
64
64
|
.keep(RestorePipe)
|
|
65
65
|
|
|
66
66
|
// Even it belongs to the module we want to keep,
|
|
@@ -46,8 +46,8 @@ class TestedComponent {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
describe('MockForms', () => {
|
|
49
|
-
// That
|
|
50
|
-
// With auto spy this code
|
|
49
|
+
// That is our spy on writeValue calls.
|
|
50
|
+
// With auto spy this code is not needed.
|
|
51
51
|
const writeValue =
|
|
52
52
|
typeof jest === 'undefined'
|
|
53
53
|
? jasmine.createSpy('writeValue')
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { Component, Injectable, NgModule } from '@angular/core';
|
|
3
|
-
import { TestBed } from '@angular/core/testing';
|
|
4
3
|
import {
|
|
5
4
|
MockBuilder,
|
|
6
5
|
MockInstance,
|
|
@@ -68,7 +67,7 @@ describe('MockObservable', () => {
|
|
|
68
67
|
// Let's render the component.
|
|
69
68
|
const fixture = MockRender(TargetComponent);
|
|
70
69
|
|
|
71
|
-
// We
|
|
70
|
+
// We have not emitted anything yet, let's check the template.
|
|
72
71
|
expect(fixture.nativeElement.innerHTML).not.toContain('1');
|
|
73
72
|
expect(fixture.nativeElement.innerHTML).not.toContain('2');
|
|
74
73
|
expect(fixture.nativeElement.innerHTML).not.toContain('3');
|
|
@@ -93,7 +92,11 @@ describe('MockObservable', () => {
|
|
|
93
92
|
|
|
94
93
|
// Checking that a sibling method has been replaced
|
|
95
94
|
// with a mock object too.
|
|
96
|
-
expect(
|
|
97
|
-
|
|
95
|
+
expect(
|
|
96
|
+
fixture.point.injector.get(TargetService).getValue$,
|
|
97
|
+
).toBeDefined();
|
|
98
|
+
expect(
|
|
99
|
+
fixture.point.injector.get(TargetService).getValue$(),
|
|
100
|
+
).toBeUndefined();
|
|
98
101
|
});
|
|
99
102
|
});
|
|
@@ -36,7 +36,7 @@ describe('MockPipe', () => {
|
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
// Also we can find an instance of the pipe in
|
|
39
|
-
// the fixture if it
|
|
39
|
+
// the fixture if it is needed.
|
|
40
40
|
const pipe = ngMocks.findInstance(DependencyPipe);
|
|
41
41
|
expect(pipe.transform).toHaveBeenCalledWith('foo');
|
|
42
42
|
expect(pipe.transform).toHaveBeenCalledTimes(1);
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
InjectionToken,
|
|
7
7
|
} from '@angular/core';
|
|
8
8
|
import { TestBed } from '@angular/core/testing';
|
|
9
|
-
import { MockProvider } from 'ng-mocks';
|
|
9
|
+
import { MockProvider, MockRender } from 'ng-mocks';
|
|
10
10
|
|
|
11
11
|
const UNK_TOKEN = new InjectionToken('UNK_TOKEN');
|
|
12
12
|
const STR_TOKEN = new InjectionToken<string>('STR_TOKEN');
|
|
@@ -72,15 +72,14 @@ describe('MockProvider', () => {
|
|
|
72
72
|
it('uses mock providers', () => {
|
|
73
73
|
// overriding the token's data that does affect the provided token.
|
|
74
74
|
mockObj.value = 321;
|
|
75
|
-
const fixture =
|
|
76
|
-
fixture.detectChanges();
|
|
75
|
+
const fixture = MockRender(TargetComponent);
|
|
77
76
|
expect(
|
|
78
|
-
fixture.
|
|
77
|
+
fixture.point.injector.get(Dependency1Service).echo(),
|
|
79
78
|
).toBeUndefined();
|
|
80
79
|
expect(
|
|
81
|
-
fixture.
|
|
80
|
+
fixture.point.injector.get(Dependency2Service).echo(),
|
|
82
81
|
).toBeUndefined();
|
|
83
|
-
expect(fixture.
|
|
82
|
+
expect(fixture.point.injector.get(OBJ_TOKEN)).toBe(
|
|
84
83
|
mockObj as any,
|
|
85
84
|
);
|
|
86
85
|
expect(fixture.nativeElement.innerHTML).not.toContain('"target"');
|
|
@@ -42,8 +42,8 @@ class TestedComponent {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
describe('MockReactiveForms', () => {
|
|
45
|
-
// That
|
|
46
|
-
// With auto spy this code
|
|
45
|
+
// That is our spy on writeValue calls.
|
|
46
|
+
// With auto spy this code is not needed.
|
|
47
47
|
const writeValue =
|
|
48
48
|
typeof jest === 'undefined'
|
|
49
49
|
? jasmine.createSpy('writeValue')
|
|
@@ -40,7 +40,7 @@ class TargetModule {}
|
|
|
40
40
|
|
|
41
41
|
describe('MockViewChild', () => {
|
|
42
42
|
// It failed instantly, because the mock instance of ChildComponent
|
|
43
|
-
//
|
|
43
|
+
// does not have form and form.valid would cause
|
|
44
44
|
// "Cannot read property 'valid' of undefined".
|
|
45
45
|
// Therefore we need to customize the mock instance before it has
|
|
46
46
|
// been rendered.
|
|
@@ -54,14 +54,14 @@ describe('MockViewChild', () => {
|
|
|
54
54
|
})),
|
|
55
55
|
);
|
|
56
56
|
|
|
57
|
-
//
|
|
57
|
+
// Do not forget to clean up the customization.
|
|
58
58
|
afterAll(MockReset);
|
|
59
59
|
|
|
60
60
|
// Normal test setup
|
|
61
61
|
beforeEach(() => MockBuilder(ParentComponent, TargetModule));
|
|
62
62
|
|
|
63
63
|
it('renders and finds the mock child component', () => {
|
|
64
|
-
//
|
|
64
|
+
// does not fail anymore.
|
|
65
65
|
const fixture = MockRender(ParentComponent);
|
|
66
66
|
|
|
67
67
|
// profit, now we can verify the template.
|
|
@@ -79,7 +79,7 @@ describe('TestAttributeDirective', () => {
|
|
|
79
79
|
'style="background-color: red;"',
|
|
80
80
|
);
|
|
81
81
|
|
|
82
|
-
// Let's switch the color, we
|
|
82
|
+
// Let's switch the color, we do not need `.point`, because we
|
|
83
83
|
// access a middle component of MockRender.
|
|
84
84
|
fixture.componentInstance.color = 'blue';
|
|
85
85
|
fixture.detectChanges(); // shaking the template
|
|
@@ -12,8 +12,11 @@ import {
|
|
|
12
12
|
HttpTestingController,
|
|
13
13
|
} from '@angular/common/http/testing';
|
|
14
14
|
import { Injectable, NgModule } from '@angular/core';
|
|
15
|
-
import {
|
|
16
|
-
|
|
15
|
+
import {
|
|
16
|
+
MockBuilder,
|
|
17
|
+
MockRender,
|
|
18
|
+
NG_MOCKS_INTERCEPTORS,
|
|
19
|
+
} from 'ng-mocks';
|
|
17
20
|
import { Observable } from 'rxjs';
|
|
18
21
|
|
|
19
22
|
// An interceptor we want to test.
|
|
@@ -88,8 +91,11 @@ describe('TestHttpInterceptor', () => {
|
|
|
88
91
|
});
|
|
89
92
|
|
|
90
93
|
it('triggers interceptor', () => {
|
|
91
|
-
const
|
|
92
|
-
const
|
|
94
|
+
const fixture = MockRender('');
|
|
95
|
+
const client: HttpClient = fixture.debugElement.injector.get(
|
|
96
|
+
HttpClient,
|
|
97
|
+
);
|
|
98
|
+
const httpMock: HttpTestingController = fixture.debugElement.injector.get(
|
|
93
99
|
HttpTestingController,
|
|
94
100
|
);
|
|
95
101
|
|
|
@@ -4,8 +4,7 @@ import {
|
|
|
4
4
|
HttpTestingController,
|
|
5
5
|
} from '@angular/common/http/testing';
|
|
6
6
|
import { Injectable, NgModule } from '@angular/core';
|
|
7
|
-
import {
|
|
8
|
-
import { MockBuilder } from 'ng-mocks';
|
|
7
|
+
import { MockBuilder, MockRender } from 'ng-mocks';
|
|
9
8
|
import { Observable } from 'rxjs';
|
|
10
9
|
|
|
11
10
|
// A service that does http requests.
|
|
@@ -39,9 +38,12 @@ describe('TestHttpRequest', () => {
|
|
|
39
38
|
});
|
|
40
39
|
|
|
41
40
|
it('sends a request', () => {
|
|
41
|
+
const fixture = MockRender('');
|
|
42
42
|
// Let's extract the service and http controller for testing.
|
|
43
|
-
const service: TargetService =
|
|
44
|
-
|
|
43
|
+
const service: TargetService = fixture.debugElement.injector.get(
|
|
44
|
+
TargetService,
|
|
45
|
+
);
|
|
46
|
+
const httpMock: HttpTestingController = fixture.debugElement.injector.get(
|
|
45
47
|
HttpTestingController,
|
|
46
48
|
);
|
|
47
49
|
|
|
@@ -23,7 +23,9 @@ describe('TestLifecycleHooks', () => {
|
|
|
23
23
|
{ detectChanges: false },
|
|
24
24
|
);
|
|
25
25
|
|
|
26
|
-
const service: TargetService =
|
|
26
|
+
const service: TargetService = fixture.point.injector.get(
|
|
27
|
+
TargetService,
|
|
28
|
+
);
|
|
27
29
|
|
|
28
30
|
// By default nothing should be initialized, but ctor.
|
|
29
31
|
expect(service.ctor).toHaveBeenCalledTimes(1); // changed
|
|
@@ -95,7 +97,9 @@ describe('TestLifecycleHooks', () => {
|
|
|
95
97
|
const fixture = TestBed.createComponent(TargetComponent);
|
|
96
98
|
fixture.componentInstance.input = '';
|
|
97
99
|
|
|
98
|
-
const service: TargetService =
|
|
100
|
+
const service: TargetService = fixture.debugElement.injector.get(
|
|
101
|
+
TargetService,
|
|
102
|
+
);
|
|
99
103
|
|
|
100
104
|
// By default nothing should be initialized.
|
|
101
105
|
expect(service.onChanges).toHaveBeenCalledTimes(0);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { TestBed } from '@angular/core/testing';
|
|
2
1
|
import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
|
|
3
2
|
|
|
4
3
|
import {
|
|
@@ -23,7 +22,9 @@ describe('TestLifecycleHooks:string', () => {
|
|
|
23
22
|
},
|
|
24
23
|
);
|
|
25
24
|
|
|
26
|
-
const service: TargetService =
|
|
25
|
+
const service: TargetService = fixture.point.injector.get(
|
|
26
|
+
TargetService,
|
|
27
|
+
);
|
|
27
28
|
|
|
28
29
|
// By default nothing should be initialized, but ctor.
|
|
29
30
|
expect(service.ctor).toHaveBeenCalledTimes(1); // changed
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { TestBed } from '@angular/core/testing';
|
|
2
1
|
import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
|
|
3
2
|
|
|
4
3
|
import {
|
|
@@ -19,7 +18,9 @@ describe('TestLifecycleHooks:type-without-params', () => {
|
|
|
19
18
|
detectChanges: false,
|
|
20
19
|
});
|
|
21
20
|
|
|
22
|
-
const service: TargetService =
|
|
21
|
+
const service: TargetService = fixture.point.injector.get(
|
|
22
|
+
TargetService,
|
|
23
|
+
);
|
|
23
24
|
|
|
24
25
|
// By default nothing should be initialized, but ctor.
|
|
25
26
|
expect(service.ctor).toHaveBeenCalledTimes(1); // changed
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Injectable, InjectionToken, NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { MockBuilder } from 'ng-mocks';
|
|
2
|
+
import { MockBuilder, MockRender } from 'ng-mocks';
|
|
4
3
|
|
|
5
4
|
const TOKEN_MULTI = new InjectionToken('MULTI');
|
|
6
5
|
|
|
@@ -49,7 +48,8 @@ describe('TestMultiToken', () => {
|
|
|
49
48
|
beforeEach(() => MockBuilder(TOKEN_MULTI, TargetModule));
|
|
50
49
|
|
|
51
50
|
it('creates TOKEN_MULTI', () => {
|
|
52
|
-
const tokens =
|
|
51
|
+
const tokens = MockRender<any[]>(TOKEN_MULTI).point
|
|
52
|
+
.componentInstance;
|
|
53
53
|
|
|
54
54
|
expect(tokens).toEqual(jasmine.any(Array));
|
|
55
55
|
expect(tokens.length).toEqual(4);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { MockBuilder } from 'ng-mocks';
|
|
2
|
+
import { MockBuilder, MockRender } from 'ng-mocks';
|
|
4
3
|
|
|
5
4
|
// A simple service, might have contained more logic,
|
|
6
5
|
// but it is redundant for the test demonstration.
|
|
@@ -18,7 +17,7 @@ describe('TestProvider', () => {
|
|
|
18
17
|
beforeEach(() => MockBuilder(TargetService));
|
|
19
18
|
|
|
20
19
|
it('returns value on echo', () => {
|
|
21
|
-
const service =
|
|
20
|
+
const service = MockRender(TargetService).point.componentInstance;
|
|
22
21
|
|
|
23
22
|
expect(service.echo()).toEqual(service.value);
|
|
24
23
|
});
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Injectable, NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
MockBuilder,
|
|
4
|
+
MockInstance,
|
|
5
|
+
MockRender,
|
|
6
|
+
MockReset,
|
|
7
|
+
} from 'ng-mocks';
|
|
4
8
|
|
|
5
9
|
// Dependency 1
|
|
6
10
|
@Injectable()
|
|
@@ -66,7 +70,7 @@ describe('TestProviderWithDependencies', () => {
|
|
|
66
70
|
|
|
67
71
|
it('creates TargetService', () => {
|
|
68
72
|
// Creates an instance only if all dependencies are present.
|
|
69
|
-
const service =
|
|
73
|
+
const service = MockRender(TargetService).point.componentInstance;
|
|
70
74
|
|
|
71
75
|
// Let's assert behavior.
|
|
72
76
|
expect(service.value1).toEqual('mock1');
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Injectable, NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
MockBuilder,
|
|
4
|
+
MockInstance,
|
|
5
|
+
MockRender,
|
|
6
|
+
MockReset,
|
|
7
|
+
} from 'ng-mocks';
|
|
4
8
|
|
|
5
9
|
// A service we want to replace via useClass.
|
|
6
10
|
@Injectable()
|
|
@@ -66,7 +70,9 @@ describe('TestProviderWithUseClass', () => {
|
|
|
66
70
|
afterAll(MockReset);
|
|
67
71
|
|
|
68
72
|
it('respects all dependencies', () => {
|
|
69
|
-
const service =
|
|
73
|
+
const service = MockRender<
|
|
74
|
+
Target1Service & Partial<Target2Service>
|
|
75
|
+
>(Target1Service).point.componentInstance;
|
|
70
76
|
|
|
71
77
|
// Let's assert that service has a flag from Target2Service.
|
|
72
78
|
expect(service.flag).toBeTruthy();
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Injectable, NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
MockBuilder,
|
|
4
|
+
MockInstance,
|
|
5
|
+
MockRender,
|
|
6
|
+
MockReset,
|
|
7
|
+
} from 'ng-mocks';
|
|
4
8
|
|
|
5
9
|
// A service we want to use.
|
|
6
10
|
@Injectable()
|
|
@@ -53,7 +57,9 @@ describe('TestProviderWithUseExisting', () => {
|
|
|
53
57
|
afterAll(MockReset);
|
|
54
58
|
|
|
55
59
|
it('creates TargetService', () => {
|
|
56
|
-
const service =
|
|
60
|
+
const service = MockRender<
|
|
61
|
+
TargetService & Partial<{ name: string }>
|
|
62
|
+
>(TargetService).point.componentInstance;
|
|
57
63
|
|
|
58
64
|
// Because Service2 has been replaced with a mock copy,
|
|
59
65
|
// we are getting here a mock copy of Service2 instead of Service1.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Injectable, NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { MockBuilder, MockInstance } from 'ng-mocks';
|
|
2
|
+
import { MockBuilder, MockInstance, MockRender } from 'ng-mocks';
|
|
4
3
|
|
|
5
4
|
// Dependency 1.
|
|
6
5
|
@Injectable()
|
|
@@ -44,7 +43,7 @@ describe('TestProviderWithUseFactory', () => {
|
|
|
44
43
|
});
|
|
45
44
|
|
|
46
45
|
it('creates TargetService', () => {
|
|
47
|
-
const service =
|
|
46
|
+
const service = MockRender(TargetService).point.componentInstance;
|
|
48
47
|
|
|
49
48
|
// Because Service1 has been replaced with a mock copy, we should get mock1 here.
|
|
50
49
|
expect(service.service.name).toEqual('mock1');
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Injectable, NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { MockBuilder } from 'ng-mocks';
|
|
2
|
+
import { MockBuilder, MockRender } from 'ng-mocks';
|
|
4
3
|
|
|
5
4
|
// A simple service, it might have contained more logic,
|
|
6
5
|
// but it is redundant for the test demonstration.
|
|
@@ -31,10 +30,11 @@ describe('TestProviderWithUseValue', () => {
|
|
|
31
30
|
beforeEach(() => MockBuilder(TargetService, TargetModule));
|
|
32
31
|
|
|
33
32
|
it('creates TargetService', () => {
|
|
34
|
-
const service =
|
|
33
|
+
const service = MockRender<TargetService>(TargetService).point
|
|
34
|
+
.componentInstance;
|
|
35
35
|
|
|
36
36
|
// Let's assert received data.
|
|
37
|
-
expect(service).toEqual({
|
|
37
|
+
expect(service as any).toEqual({
|
|
38
38
|
service: null,
|
|
39
39
|
});
|
|
40
40
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Location } from '@angular/common';
|
|
2
2
|
import { Component, NgModule } from '@angular/core';
|
|
3
|
-
import { fakeAsync,
|
|
3
|
+
import { fakeAsync, tick } from '@angular/core/testing';
|
|
4
4
|
import { Router, RouterModule, RouterOutlet } from '@angular/router';
|
|
5
5
|
import { RouterTestingModule } from '@angular/router/testing';
|
|
6
6
|
import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
|
|
@@ -66,8 +66,8 @@ describe('TestRoute:Route', () => {
|
|
|
66
66
|
|
|
67
67
|
it('renders /1 with Target1Component', fakeAsync(() => {
|
|
68
68
|
const fixture = MockRender(RouterOutlet);
|
|
69
|
-
const router: Router =
|
|
70
|
-
const location: Location =
|
|
69
|
+
const router: Router = fixture.point.injector.get(Router);
|
|
70
|
+
const location: Location = fixture.point.injector.get(Location);
|
|
71
71
|
|
|
72
72
|
// First we need to initialize navigation.
|
|
73
73
|
location.go('/1');
|
|
@@ -83,8 +83,8 @@ describe('TestRoute:Route', () => {
|
|
|
83
83
|
|
|
84
84
|
it('renders /2 with Target2Component', fakeAsync(() => {
|
|
85
85
|
const fixture = MockRender(RouterOutlet);
|
|
86
|
-
const router: Router =
|
|
87
|
-
const location: Location =
|
|
86
|
+
const router: Router = fixture.point.injector.get(Router);
|
|
87
|
+
const location: Location = fixture.point.injector.get(Location);
|
|
88
88
|
|
|
89
89
|
// First we need to initialize navigation.
|
|
90
90
|
location.go('/2');
|
|
@@ -117,8 +117,8 @@ describe('TestRoute:Component', () => {
|
|
|
117
117
|
|
|
118
118
|
it('navigates between pages', fakeAsync(() => {
|
|
119
119
|
const fixture = MockRender(TargetComponent);
|
|
120
|
-
const router: Router =
|
|
121
|
-
const location: Location =
|
|
120
|
+
const router: Router = fixture.point.injector.get(Router);
|
|
121
|
+
const location: Location = fixture.point.injector.get(Location);
|
|
122
122
|
|
|
123
123
|
// First we need to initialize navigation.
|
|
124
124
|
if (fixture.ngZone) {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
NgModule,
|
|
6
6
|
VERSION,
|
|
7
7
|
} from '@angular/core';
|
|
8
|
-
import { fakeAsync,
|
|
8
|
+
import { fakeAsync, tick } from '@angular/core/testing';
|
|
9
9
|
import {
|
|
10
10
|
CanActivate,
|
|
11
11
|
Router,
|
|
@@ -129,8 +129,8 @@ describe('TestRoutingGuard', () => {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
const fixture = MockRender(RouterOutlet);
|
|
132
|
-
const router: Router =
|
|
133
|
-
const location: Location =
|
|
132
|
+
const router: Router = fixture.point.injector.get(Router);
|
|
133
|
+
const location: Location = fixture.point.injector.get(Location);
|
|
134
134
|
|
|
135
135
|
// First we need to initialize navigation.
|
|
136
136
|
if (fixture.ngZone) {
|
|
@@ -146,9 +146,11 @@ describe('TestRoutingGuard', () => {
|
|
|
146
146
|
|
|
147
147
|
it('loads dashboard', fakeAsync(() => {
|
|
148
148
|
const fixture = MockRender(RouterOutlet);
|
|
149
|
-
const router: Router =
|
|
150
|
-
const location: Location =
|
|
151
|
-
const loginService: LoginService =
|
|
149
|
+
const router: Router = fixture.point.injector.get(Router);
|
|
150
|
+
const location: Location = fixture.point.injector.get(Location);
|
|
151
|
+
const loginService: LoginService = fixture.point.injector.get(
|
|
152
|
+
LoginService,
|
|
153
|
+
);
|
|
152
154
|
|
|
153
155
|
// Letting the guard know we have been logged in.
|
|
154
156
|
loginService.isLoggedIn = true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Location } from '@angular/common';
|
|
2
2
|
import { Component, Injectable, NgModule } from '@angular/core';
|
|
3
|
-
import { fakeAsync,
|
|
3
|
+
import { fakeAsync, tick } from '@angular/core/testing';
|
|
4
4
|
import {
|
|
5
5
|
ActivatedRoute,
|
|
6
6
|
Resolve,
|
|
@@ -91,9 +91,11 @@ describe('TestRoutingResolver', () => {
|
|
|
91
91
|
// It is important to run routing tests in fakeAsync.
|
|
92
92
|
it('provides data to on the route', fakeAsync(() => {
|
|
93
93
|
const fixture = MockRender(RouterOutlet);
|
|
94
|
-
const router: Router =
|
|
95
|
-
const location: Location =
|
|
96
|
-
const dataService: DataService =
|
|
94
|
+
const router: Router = fixture.point.injector.get(Router);
|
|
95
|
+
const location: Location = fixture.point.injector.get(Location);
|
|
96
|
+
const dataService: DataService = fixture.point.injector.get(
|
|
97
|
+
DataService,
|
|
98
|
+
);
|
|
97
99
|
|
|
98
100
|
// DataService has been replaced with a mock copy,
|
|
99
101
|
// let's set a custom value we will assert later on.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Injectable, InjectionToken, NgModule } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { MockBuilder, ngMocks } from 'ng-mocks';
|
|
2
|
+
import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
|
|
4
3
|
|
|
5
4
|
const TOKEN_CLASS = new InjectionToken('CLASS');
|
|
6
5
|
const TOKEN_EXISTING = new InjectionToken('EXISTING');
|
|
@@ -57,7 +56,8 @@ describe('TestToken', () => {
|
|
|
57
56
|
});
|
|
58
57
|
|
|
59
58
|
it('creates TOKEN_CLASS', () => {
|
|
60
|
-
const token =
|
|
59
|
+
const token = MockRender<ServiceClass>(TOKEN_CLASS).point
|
|
60
|
+
.componentInstance;
|
|
61
61
|
|
|
62
62
|
// Verifying that the token is an instance of ServiceClass.
|
|
63
63
|
expect(token).toEqual(jasmine.any(ServiceClass));
|
|
@@ -65,7 +65,8 @@ describe('TestToken', () => {
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
it('creates TOKEN_EXISTING', () => {
|
|
68
|
-
const token =
|
|
68
|
+
const token = MockRender<ServiceExisting>(TOKEN_EXISTING).point
|
|
69
|
+
.componentInstance;
|
|
69
70
|
|
|
70
71
|
// Verifying that the token is an instance of ServiceExisting.
|
|
71
72
|
// But because it has been replaced with a mock copy,
|
|
@@ -75,14 +76,14 @@ describe('TestToken', () => {
|
|
|
75
76
|
});
|
|
76
77
|
|
|
77
78
|
it('creates TOKEN_FACTORY', () => {
|
|
78
|
-
const token =
|
|
79
|
+
const token = MockRender(TOKEN_FACTORY).point.componentInstance;
|
|
79
80
|
|
|
80
81
|
// Checking that we have here what factory has been created.
|
|
81
82
|
expect(token).toEqual('FACTORY');
|
|
82
83
|
});
|
|
83
84
|
|
|
84
85
|
it('creates TOKEN_VALUE', () => {
|
|
85
|
-
const token =
|
|
86
|
+
const token = MockRender(TOKEN_VALUE).point.componentInstance;
|
|
86
87
|
|
|
87
88
|
// Checking the set value.
|
|
88
89
|
expect(token).toEqual('VALUE');
|
|
@@ -24,7 +24,7 @@ import { staticFalse } from '../../tests';
|
|
|
24
24
|
class TranslatePipe implements PipeTransform {
|
|
25
25
|
public transform(value: string): string {
|
|
26
26
|
// Just for the test purpose
|
|
27
|
-
// we
|
|
27
|
+
// we do not use any translation services.
|
|
28
28
|
return `translated:${value}`;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -144,7 +144,7 @@ describe('main', () => {
|
|
|
144
144
|
// ));
|
|
145
145
|
// return testBed.compileComponents();
|
|
146
146
|
// But in this case TranslatePipe will return undefined,
|
|
147
|
-
// if we
|
|
147
|
+
// if we do not customize it via MockInstance or defaultMock.
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
it('asserts behavior of AppComponent', () => {
|