@motorcycle/mostly-dom
Version:
Motorcycle.ts adapter for mostly-dom. Built on @motorcycle/dom.
41 lines (30 loc) • 1.19 kB
text/typescript
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<VNode>`, [
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')))
})
}),
]),
])