Skip to content
Snippets Groups Projects
sensiplan.spec.js 2.26 KiB
Newer Older
Julia Friesel's avatar
Julia Friesel committed
import chai from 'chai'
import { getTemperatureStatus } from '../lib/sensiplan'
Julia Friesel's avatar
Julia Friesel committed
import tempShift from './fixtures/regular-rule-shift.json'
import noTempShift from './fixtures/regular-rule-no-shift.json'
import lowerTempDays from './fixtures/lower-temps.json'
Julia Friesel's avatar
Julia Friesel committed
import firstException from './fixtures/first-exception-rule.json'
Julia Friesel's avatar
Julia Friesel committed
import firstExceptionNoShift from './fixtures/first-exception-rule-no-shift.json'
Julia Friesel's avatar
Julia Friesel committed

const expect = chai.expect

describe.only('sensiplan', () => {
Julia Friesel's avatar
Julia Friesel committed
  describe('getTemperatureStatus', () => {
Julia Friesel's avatar
Julia Friesel committed
    describe('regular rule', () => {
      it('reports lower temperature status before shift', function () {
        const status = getTemperatureStatus('2018-06-09', lowerTempDays)
        expect(status).to.eql({
          low: [36.7, 36.55, 36.45, 36.5, 36.55],
          ltl: 36.7,
          high: [],
          shiftDetected: false
        })
      })

      it('detects temperature shift correctly', function () {
        const status = getTemperatureStatus('2018-06-14', tempShift)
        expect(status).to.eql({
          low: [36.7, 36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
          ltl: 36.6,
          high: [36.8, 36.85, 36.8],
          shiftDetected: true
        })
Julia Friesel's avatar
Julia Friesel committed
      it('detects missing temperature shift correctly', function () {
        const status = getTemperatureStatus('2018-06-14', noTempShift)
        expect(status).to.eql({
          low: [36.7, 36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
          ltl: 36.6,
          high: [36.8, 36.85, 36.75],
          shiftDetected: false
        })
Julia Friesel's avatar
Julia Friesel committed
      })
    })
Julia Friesel's avatar
Julia Friesel committed
    describe('1st exception rule', () => {
      it('detects temperature shift', function () {
        const status = getTemperatureStatus('2018-06-14', firstException)
        expect(status).to.eql({
          low: [36.7, 36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
          ltl: 36.6,
          high: [36.8, 36.85, 36.75, 36.65],
          shiftDetected: true
        })
      })

      it('detects missing temperature shift correctly', function () {
        const status = getTemperatureStatus('2018-06-14', firstExceptionNoShift)
        expect(status).to.eql({
          low: [36.7, 36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
          ltl: 36.6,
          high: [36.8, 36.85, 36.75, 36.55],
          shiftDetected: false
        })
Julia Friesel's avatar
Julia Friesel committed
      })
    })
Julia Friesel's avatar
Julia Friesel committed
  })
})