diff --git a/libs/rx-stateful/experimental/src/lib/client/config/with-config.ts b/libs/rx-stateful/experimental/src/lib/client/config/with-config.ts index 81e24a1..68c9839 100644 --- a/libs/rx-stateful/experimental/src/lib/client/config/with-config.ts +++ b/libs/rx-stateful/experimental/src/lib/client/config/with-config.ts @@ -1,8 +1,8 @@ -import {inject, InjectionToken} from '@angular/core'; +import { inject, InjectionToken } from '@angular/core'; import { makeFeature } from './config-feature'; -import { Config, RX_STATEFUL_CONFIG } from '@angular-kit/rx-stateful'; +import { Config } from '@angular-kit/rx-stateful'; -export const RX_STATEFUL_CLIENT_CONFIG = () => new InjectionToken>('RX_STATEFUL_CONFIG'); +export const RX_STATEFUL_CLIENT_CONFIG = new InjectionToken>('RX_STATEFUL_CLIENT_CONFIG'); export function withConfig(config: Config) { return makeFeature('Config', [{ provide: RX_STATEFUL_CLIENT_CONFIG, useValue: config }]); diff --git a/libs/rx-stateful/src/lib/config/rx-stateful-config.spec.ts b/libs/rx-stateful/src/lib/config/rx-stateful-config.spec.ts new file mode 100644 index 0000000..17801fb --- /dev/null +++ b/libs/rx-stateful/src/lib/config/rx-stateful-config.spec.ts @@ -0,0 +1,36 @@ +import { TestBed } from '@angular/core/testing'; +import { inject } from '@angular/core'; +import { RX_STATEFUL_CONFIG, provideRxStatefulConfig, Config } from './rx-stateful-config'; + +describe('RX_STATEFUL_CONFIG', () => { + it('should provide and inject config correctly', () => { + const testConfig: Partial> = { + keepErrorOnRefresh: true, + keepValueOnRefresh: false, + suspenseTimeMs: 1000, + }; + + TestBed.configureTestingModule({ + providers: [provideRxStatefulConfig(testConfig)], + }); + + TestBed.runInInjectionContext(() => { + const injectedConfig = inject(RX_STATEFUL_CONFIG, { optional: true }); + expect(injectedConfig).toBeDefined(); + expect(injectedConfig?.keepErrorOnRefresh).toBe(true); + expect(injectedConfig?.keepValueOnRefresh).toBe(false); + expect(injectedConfig?.suspenseTimeMs).toBe(1000); + }); + }); + + it('should return null when config is not provided', () => { + TestBed.configureTestingModule({ + providers: [], + }); + + TestBed.runInInjectionContext(() => { + const injectedConfig = inject(RX_STATEFUL_CONFIG, { optional: true }); + expect(injectedConfig).toBeNull(); + }); + }); +}); diff --git a/libs/rx-stateful/src/lib/config/rx-stateful-config.ts b/libs/rx-stateful/src/lib/config/rx-stateful-config.ts index fcb913b..8d915ed 100644 --- a/libs/rx-stateful/src/lib/config/rx-stateful-config.ts +++ b/libs/rx-stateful/src/lib/config/rx-stateful-config.ts @@ -1,17 +1,21 @@ -import {InjectionToken, makeEnvironmentProviders} from '@angular/core'; +import { InjectionToken, makeEnvironmentProviders } from '@angular/core'; import { RxStatefulConfig } from '../types/types'; import { RefetchStrategy } from '../refetch-strategies/refetch-strategy'; export type Config = Pick< RxStatefulConfig, - 'keepErrorOnRefresh' | 'keepValueOnRefresh' | 'errorMappingFn' | 'beforeHandleErrorFn' | 'accumulationFn' | 'suspenseTimeMs' | 'suspenseThresholdMs' + | 'keepErrorOnRefresh' + | 'keepValueOnRefresh' + | 'errorMappingFn' + | 'beforeHandleErrorFn' + | 'accumulationFn' + | 'suspenseTimeMs' + | 'suspenseThresholdMs' > & { autoRefetch?: RefetchStrategy; }; -export const RX_STATEFUL_CONFIG = () => new InjectionToken>('RX_STATEFUL_CONFIG'); +export const RX_STATEFUL_CONFIG = new InjectionToken>('RX_STATEFUL_CONFIG'); export function provideRxStatefulConfig(config: Partial>) { - return makeEnvironmentProviders([{ provide: RX_STATEFUL_CONFIG, useValue: config }]); + return makeEnvironmentProviders([{ provide: RX_STATEFUL_CONFIG, useValue: config }]); } - -