33 lines
870 B
TypeScript
33 lines
870 B
TypeScript
|
import Atom, {val} from './Atom'
|
||
|
import prism from './derivations/prism/prism'
|
||
|
import Ticker from './Ticker'
|
||
|
|
||
|
describe.skip(`dataverse2 integration tests`, () => {
|
||
|
describe(`identity pointers`, () => {
|
||
|
it(`should work`, () => {
|
||
|
const data = {foo: 'hi', bar: 0}
|
||
|
const a = new Atom(data)
|
||
|
const dataP = a.pointer
|
||
|
const bar = dataP.bar
|
||
|
expect(val(bar)).toEqual(0)
|
||
|
|
||
|
const d = prism(() => {
|
||
|
return val(bar)
|
||
|
})
|
||
|
expect(d.getValue()).toEqual(0)
|
||
|
const ticker = new Ticker()
|
||
|
const changes: number[] = []
|
||
|
d.changes().tap((c) => {
|
||
|
changes.push(c)
|
||
|
})
|
||
|
a.setState({...data, bar: 1})
|
||
|
ticker.tick()
|
||
|
expect(changes).toHaveLength(1)
|
||
|
expect(changes[0]).toEqual(1)
|
||
|
a.setState({...data, bar: 1})
|
||
|
ticker.tick()
|
||
|
expect(changes).toHaveLength(1)
|
||
|
})
|
||
|
})
|
||
|
})
|