Skip to content

Commit

Permalink
fix: correct overriding order for pipes
Browse files Browse the repository at this point in the history
defaultMock > customTransform > MockInstance
  • Loading branch information
satanTime committed Dec 6, 2020
1 parent d2ea26e commit 750153d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 12 deletions.
4 changes: 4 additions & 0 deletions lib/common/mock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ const applyProps = (instance: Mock & Record<keyof any, any>, prototype: AnyType<

export type ngMocksMockConfig = {
config?: IMockBuilderConfig;
init?: (instance: any) => void;
outputs?: string[];
setNgValueAccessor?: boolean;
viewChildRefs?: Map<string, string>;
Expand All @@ -81,6 +82,9 @@ export type ngMocksMockConfig = {
const applyOverrides = (instance: any, mockOf: any, injector?: Injector): void => {
const configGlobal: Set<any> | undefined = ngMocksUniverse.getOverrides().get(mockOf);
const callbacks = configGlobal ? mapValues(configGlobal) : [];
if (instance.__ngMocksConfig?.init) {
callbacks.push(instance.__ngMocksConfig.init);
}
if (ngMocksUniverse.config.get(mockOf)?.init) {
callbacks.push(ngMocksUniverse.config.get(mockOf).init);
}
Expand Down
22 changes: 10 additions & 12 deletions lib/mock-pipe/mock-pipe.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Injector, Optional, Pipe, PipeTransform } from '@angular/core';
import { Pipe, PipeTransform } from '@angular/core';
import { getTestBed } from '@angular/core/testing';

import coreReflectPipeResolve from '../common/core.reflect.pipe-resolve';
Expand All @@ -20,19 +20,17 @@ export function MockPipes(...pipes: Array<Type<PipeTransform>>): Array<Type<Pipe

const getMockClass = (pipe: Type<any>, transform?: PipeTransform['transform']): Type<any> => {
@Pipe(coreReflectPipeResolve(pipe))
@MockOf(pipe)
class PipeMock extends Mock {
public constructor(@Optional() injector?: Injector) {
super(injector);

// need to override overrides
@MockOf(pipe, {
init: (instance: PipeTransform) => {
if (transform) {
(this as any).transform = transform;
} else if (!(this as any).transform) {
helperMockService.mock(this, 'transform', `${this.constructor.name}.transform`);
instance.transform = transform;
}
}
}
if (!instance.transform) {
helperMockService.mock(instance, 'transform', `${instance.constructor.name}.transform`);
}
},
})
class PipeMock extends Mock {}

return PipeMock;
};
Expand Down

0 comments on commit 750153d

Please sign in to comment.