import { ExistingProvider, FactoryProvider, ValueProvider } from '@angular/core'; import { MockStore } from './mock_store'; import { MockSelector } from './mock_selector'; export interface MockStoreConfig { initialState?: T; selectors?: MockSelector[]; } /** * @description * Creates mock store providers. * * @param config `MockStoreConfig` to provide the values for `INITIAL_STATE` and `MOCK_SELECTORS` tokens. * By default, `initialState` and `selectors` are not defined. * @returns Mock store providers that can be used with both `TestBed.configureTestingModule` and `Injector.create`. * * @usageNotes * * **With `TestBed.configureTestingModule`** * * ```typescript * describe('Books Component', () => { * let store: MockStore; * * beforeEach(() => { * TestBed.configureTestingModule({ * providers: [ * provideMockStore({ * initialState: { books: { entities: [] } }, * selectors: [ * { selector: selectAllBooks, value: ['Book 1', 'Book 2'] }, * { selector: selectVisibleBooks, value: ['Book 1'] }, * ], * }), * ], * }); * * store = TestBed.inject(MockStore); * }); * }); * ``` * * **With `Injector.create`** * * ```typescript * describe('Counter Component', () => { * let injector: Injector; * let store: MockStore; * * beforeEach(() => { * injector = Injector.create({ * providers: [ * provideMockStore({ initialState: { counter: 0 } }), * ], * }); * store = injector.get(MockStore); * }); * }); * ``` */ export declare function provideMockStore(config?: MockStoreConfig): (ValueProvider | ExistingProvider | FactoryProvider)[]; /** * @description * Creates mock store with all necessary dependencies outside of the `TestBed`. * * @param config `MockStoreConfig` to provide the values for `INITIAL_STATE` and `MOCK_SELECTORS` tokens. * By default, `initialState` and `selectors` are not defined. * @returns `MockStore` * * @usageNotes * * ```typescript * describe('Books Effects', () => { * let store: MockStore; * * beforeEach(() => { * store = getMockStore({ * initialState: { books: { entities: ['Book 1', 'Book 2', 'Book 3'] } }, * selectors: [ * { selector: selectAllBooks, value: ['Book 1', 'Book 2'] }, * { selector: selectVisibleBooks, value: ['Book 1'] }, * ], * }); * }); * }); * ``` */ export declare function getMockStore(config?: MockStoreConfig): MockStore; export { MockReducerManager } from './mock_reducer_manager'; export { MockState } from './mock_state'; export { MockStore } from './mock_store'; export { MockSelector } from './mock_selector';