| 11 | const SCOPE_PREFIX = '___'; |
| 12 | |
| 13 | export class MockedDOMSource implements DOMSource { |
| 14 | private _elements: FantasyObservable; |
| 15 | |
| 16 | constructor(private _mockConfig: MockConfig) { |
| 17 | if (_mockConfig['elements']) { |
| 18 | this._elements = _mockConfig['elements'] as FantasyObservable; |
| 19 | } else { |
| 20 | this._elements = adapt(xs.empty()); |
| 21 | } |
| 22 | } |
| 23 | |
| 24 | public elements(): any { |
| 25 | const out: Partial<DevToolEnabledSource> & FantasyObservable = this._elements; |
| 26 | out._isCycleSource = 'MockedDOM'; |
| 27 | return out; |
| 28 | } |
| 29 | |
| 30 | public events(eventType: string, options?: EventsFnOptions): any { |
| 31 | const streamForEventType = this._mockConfig[eventType] as any; |
| 32 | const out: DevToolEnabledSource & FantasyObservable = adapt(streamForEventType || xs.empty()); |
| 33 | |
| 34 | out._isCycleSource = 'MockedDOM'; |
| 35 | |
| 36 | return out; |
| 37 | } |
| 38 | |
| 39 | public select(selector: string): MockedDOMSource { |
| 40 | const mockConfigForSelector = this._mockConfig[selector] || {}; |
| 41 | |
| 42 | return new MockedDOMSource(mockConfigForSelector as MockConfig); |
| 43 | } |
| 44 | |
| 45 | public isolateSource(source: MockedDOMSource, scope: string): MockedDOMSource { |
| 46 | return source.select('.' + SCOPE_PREFIX + scope); |
| 47 | } |
| 48 | |
| 49 | public isolateSink(sink: any, scope: string): any { |
| 50 | return sink.map((vnode: VNode) => { |
| 51 | if (vnode.sel && vnode.sel.indexOf(SCOPE_PREFIX + scope) !== -1) { |
| 52 | return vnode; |
| 53 | } else { |
| 54 | vnode.sel += `.${SCOPE_PREFIX}${scope}`; |
| 55 | return vnode; |
| 56 | } |
| 57 | }); |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | export function mockDOMSource(mockConfig: MockConfig): MockedDOMSource { |
| 62 | return new MockedDOMSource(mockConfig as MockConfig); |
nothing calls this directly
no outgoing calls
no test coverage detected