Skip to content

Commit

Permalink
fix: issue of useExisting and mat components
Browse files Browse the repository at this point in the history
  • Loading branch information
satanTime committed Feb 11, 2021
1 parent 792c1b7 commit 0714da8
Show file tree
Hide file tree
Showing 26 changed files with 905 additions and 80 deletions.
36 changes: 34 additions & 2 deletions e2e/a10/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 34 additions & 2 deletions e2e/a11/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 34 additions & 2 deletions e2e/a9/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 34 additions & 2 deletions e2e/am/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions libs/ng-mocks/src/lib/common/core.define-property.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
export default (instance: any, property: keyof any, value: any, enumerable = false) => {
// istanbul ignore else
if (Object.defineProperty) {
Object.defineProperty(instance, property, {
configurable: true,
enumerable,
value,
writable: true,
});
} else {
instance[property] = value;
}
};
15 changes: 3 additions & 12 deletions libs/ng-mocks/src/lib/common/core.helpers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { InjectionToken } from '@angular/core';
import { getTestBed } from '@angular/core/testing';

import coreDefineProperty from './core.define-property';
import coreReflectJit from './core.reflect.jit';
import { AnyType, Type } from './core.types';

Expand Down Expand Up @@ -104,21 +105,11 @@ const extendClassicClass = <I extends object>(base: AnyType<I>): Type<I> => {

export const extendClass = <I extends object>(base: AnyType<I>): Type<I> => {
const child: Type<I> = extendClassicClass(base);
Object.defineProperty(child, 'name', {
configurable: true,
enumerable: true,
value: `MockMiddleware${base.name}`,
writable: true,
});
coreDefineProperty(child, 'name', `MockMiddleware${base.name}`, true);

const parameters = coreReflectJit().parameters(base);
if (parameters.length) {
Object.defineProperty(child, 'parameters', {
configurable: true,
enumerable: false,
value: [...parameters],
writable: true,
});
coreDefineProperty(child, 'parameters', [...parameters]);
}

return child;
Expand Down
16 changes: 5 additions & 11 deletions libs/ng-mocks/src/lib/common/decorate.mock.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
import coreDefineProperty from './core.define-property';
import { AnyType } from './core.types';
import { ngMocksMockConfig } from './mock';

export default function (mock: AnyType<any>, source: AnyType<any>, config: ngMocksMockConfig = {}): void {
Object.defineProperties(mock, {
mockOf: { value: source },
name: { value: `MockOf${source.name}` },
nameConstructor: { value: mock.name },
});
Object.defineProperty(mock.prototype, '__ngMocksConfig', {
configurable: true,
enumerable: false,
value: config,
writable: true,
});
coreDefineProperty(mock, 'mockOf', source);
coreDefineProperty(mock, 'nameConstructor', mock.name);
coreDefineProperty(mock, 'name', `MockOf${source.name}`, true);
coreDefineProperty(mock.prototype, '__ngMocksConfig', config);
}
6 changes: 3 additions & 3 deletions libs/ng-mocks/src/lib/common/mock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import mockHelperStub from '../mock-helper/mock-helper.stub';
import mockInstanceApply from '../mock-instance/mock-instance-apply';
import helperMockService from '../mock-service/helper.mock-service';

import coreDefineProperty from './core.define-property';
import { mapValues } from './core.helpers';
import { AnyType } from './core.types';
import funcIsMock from './func.is-mock';
Expand Down Expand Up @@ -175,6 +176,7 @@ export class Mock {

public constructor(injector?: Injector) {
const mockOf = (this.constructor as any).mockOf;
coreDefineProperty(this, '__ngMocksInjector', injector);

// istanbul ignore else
if (funcIsMock(this)) {
Expand All @@ -192,6 +194,4 @@ export class Mock {
}
}

Object.defineProperty(Mock, 'parameters', {
value: [[Injector, new Optional()]],
});
coreDefineProperty(Mock, 'parameters', [[Injector, new Optional()]]);
Loading

0 comments on commit 0714da8

Please sign in to comment.