import { Test, describe, given, it } from '@typed/test' import { collectEventsFor } from '@motorcycle/test' import { div } from 'mostly-dom' import { length } from '@typed/prelude' import { makeDomComponent } from './makeDomComponent' import { now } from '@motorcycle/stream' export const test: Test = describe(`makeDomComponent`, [ given(`an Element and Stream`, [ it(`returns a DomSource`, ({ equal }) => { const element = document.createElement('div') const view$ = now(div()) const Dom = makeDomComponent(element) const { dom } = Dom({ view$ }) const isFunction = equal(`function`) isFunction(typeof dom.query) isFunction(typeof dom.elements) isFunction(typeof dom.events) isFunction(typeof dom.cssSelectors) }), it(`patches the dom`, ({ equal }) => { const element = document.createElement('div') const view$ = now(div({ className: 'foo' })) const Dom = makeDomComponent(element) const { dom } = Dom({ view$ }) return collectEventsFor(Infinity, dom.elements()).then(([[element]]) => { equal(1, length(element.querySelectorAll('.foo'))) }) }), ]), ])