An example of refactoring for integration tests. This requires modifying the existing code, but makes it far easier to test.
const flashRandomLight = (
source$,
) => (
source$
.map(getRandomColorSetIndex)
.map(getColorSetAtIndex)
.map(doScaryLightFlash)
.switchMap(getDataFromPromise)
)
module.exports = flashRandomLight
const isHalloween = () => (
moment()
.isBetween(
`${currentYear}-10-31 16:00`,
`${currentYear}-10-31 23:30`
)
)
module.exports = isHalloween
const flashRandomLight = require('utils/flashRandomLight')
const isHalloween = require('utils/isHalloween')
const logger = require('utils/logger')
flashRandomLight(
Rx
.Observable
.interval(10000)
.map(isHalloween)
.do(console.log.bind(console, 'isHalloween:'))
.filter(Boolean)
)
.subscribe(
logger.log,
logger.logError,
)