MCPcopy Create free account
hub / github.com/cyclejs/cyclejs / MockedDOMSource

Class MockedDOMSource

dom/src/mockDOMSource.ts:13–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11const SCOPE_PREFIX = '___';
12
13export 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
61export function mockDOMSource(mockConfig: MockConfig): MockedDOMSource {
62 return new MockedDOMSource(mockConfig as MockConfig);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected