UNPKG

@ngneat/spectator

Version:

A powerful tool to simplify your Angular tests

35 lines 4.17 kB
/// <reference types="jest" /> import { installProtoMethods } from '@ngneat/spectator'; import { jest } from '@jest/globals'; /** * @publicApi */ export function createSpyObject(type, template) { const mock = { ...template } || {}; installProtoMethods(mock, type.prototype, () => { const jestFn = jest.fn(); const newSpy = jestFn; newSpy.andCallFake = (fn) => { jestFn.mockImplementation(fn); return newSpy; }; newSpy.andReturn = (val) => { jestFn.mockReturnValue(val); }; newSpy.reset = () => { jestFn.mockReset(); }; return newSpy; }); return mock; } /** * @publicApi */ export function mockProvider(type, properties) { return { provide: type, useFactory: () => createSpyObject(type, properties), }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWN0YXRvci9qZXN0L3NyYy9saWIvbW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4QkFBOEI7QUFHOUIsT0FBTyxFQUFFLG1CQUFtQixFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPckM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFJLElBQStCLEVBQUUsUUFBd0M7SUFDMUcsTUFBTSxJQUFJLEdBQVEsRUFBRSxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUV4QyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFrQixNQUFhLENBQUM7UUFFNUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQVksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUE2QixDQUFDLENBQUM7WUFFekQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFJLElBQStCLEVBQUUsVUFBMEM7SUFDekcsT0FBTztRQUNMLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0tBQ3BELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJqZXN0XCIgLz5cblxuaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyLCBBYnN0cmFjdFR5cGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluc3RhbGxQcm90b01ldGhvZHMsIENvbXBhdGlibGVTcHksIFNweU9iamVjdCBhcyBCYXNlU3B5T2JqZWN0IH0gZnJvbSAnQG5nbmVhdC9zcGVjdGF0b3InO1xuaW1wb3J0IHsgamVzdCB9IGZyb20gJ0BqZXN0L2dsb2JhbHMnO1xuXG5leHBvcnQgdHlwZSBTcHlPYmplY3Q8VD4gPSBCYXNlU3B5T2JqZWN0PFQ+ICYge1xuICBbUCBpbiBrZXlvZiBUXTogVFtQXSAmXG4gICAgKFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGluZmVyIFIgPyAoUiBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gamVzdC5Nb2NrPFI+IDogamVzdC5Nb2NrPFRbUF0+KSA6IFRbUF0pO1xufTtcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTcHlPYmplY3Q8VD4odHlwZTogVHlwZTxUPiB8IEFic3RyYWN0VHlwZTxUPiwgdGVtcGxhdGU/OiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBhbnk+Pik6IFNweU9iamVjdDxUPiB7XG4gIGNvbnN0IG1vY2s6IGFueSA9IHsgLi4udGVtcGxhdGUgfSB8fCB7fTtcblxuICBpbnN0YWxsUHJvdG9NZXRob2RzKG1vY2ssIHR5cGUucHJvdG90eXBlLCAoKSA9PiB7XG4gICAgY29uc3QgamVzdEZuID0gamVzdC5mbigpO1xuICAgIGNvbnN0IG5ld1NweTogQ29tcGF0aWJsZVNweSA9IGplc3RGbiBhcyBhbnk7XG5cbiAgICBuZXdTcHkuYW5kQ2FsbEZha2UgPSAoZm46IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBqZXN0Rm4ubW9ja0ltcGxlbWVudGF0aW9uKGZuIGFzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KTtcblxuICAgICAgcmV0dXJuIG5ld1NweTtcbiAgICB9O1xuXG4gICAgbmV3U3B5LmFuZFJldHVybiA9ICh2YWw6IGFueSkgPT4ge1xuICAgICAgamVzdEZuLm1vY2tSZXR1cm5WYWx1ZSh2YWwpO1xuICAgIH07XG5cbiAgICBuZXdTcHkucmVzZXQgPSAoKSA9PiB7XG4gICAgICBqZXN0Rm4ubW9ja1Jlc2V0KCk7XG4gICAgfTtcblxuICAgIHJldHVybiBuZXdTcHk7XG4gIH0pO1xuXG4gIHJldHVybiBtb2NrO1xufVxuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tQcm92aWRlcjxUPih0eXBlOiBUeXBlPFQ+IHwgQWJzdHJhY3RUeXBlPFQ+LCBwcm9wZXJ0aWVzPzogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgYW55Pj4pOiBGYWN0b3J5UHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IHR5cGUsXG4gICAgdXNlRmFjdG9yeTogKCkgPT4gY3JlYXRlU3B5T2JqZWN0KHR5cGUsIHByb3BlcnRpZXMpLFxuICB9O1xufVxuIl19