Sawtaytoes
10/15/2018 - 1:30 AM

Refactor for Integration Tests

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,
)