0.0.1 • Published 2 years ago

test-streamlets v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago
npm i test-streamlets

Marble testing is a useful technique to quickly test behavior of reactive streams by specifying a timeline for events. test-streamlets library provides test-runner/framework agnostic utilities for marble testing streamlets:

import { buffer } from 'streamlets'
import { record, src, T } from 'test-streamlets'

const timeline    = '--1-2---3-4-5-------6-7-|'       // this is our source's emission timeline
const observation = '>-----V-----V-V-V-V-------V'     // this is our sink's behavior timeline
const expected    = '------1-----3-4-5---6-----7,|'   // this is how we expect the end result will be

const source = src(T(timeline))                       // create a source from the timeline
const buffered = buffer(source, 3)                    // buffer the source
const recording = await record(buffered, observation) // record behavior of buffered source using given observation timeline

expect(recording).to.eql(T(expected))                 // assert that the recording matches our expected timeline