import chai from 'chai' import getSensiplanStatus from '../../lib/sympto' const expect = chai.expect function convertToSymptoFormat(val, i) { return { date: i, temperature: val.temperature ? { value: val.temperature } : null, mucus: val.mucus ? { value: val.mucus } : null } } describe('sympto', () => { describe('evaluating mucus and temperature shift together', () => { it('reports fertile when mucus reaches best quality again within temperature evaluation phase', function () { const values = [ { temperature: 36.6 }, { temperature: 36.65 }, { temperature: 36.5 }, { temperature: 36.6 }, { temperature: 36.55 }, { temperature: 36.7, mucus: 0 }, { temperature: 36.75, mucus: 0 }, { temperature: 36.45, mucus: 1 }, { temperature: 36.5, mucus: 4 }, { temperature: 36.4, mucus: 2 }, { temperature: 36.5, mucus: 3 }, { temperature: 36.55, mucus: 3 }, { temperature: 36.45, mucus: 3 }, { temperature: 36.5, mucus: 4 }, { temperature: 36.55, mucus: 4 }, { temperature: 36.7, mucus: 3 }, { temperature: 36.65, mucus: 3 }, { temperature: 36.75, mucus: 4 }, { temperature: 36.8, mucus: 1 }, { temperature: 36.85, mucus: 2 }, { temperature: 36.8, mucus: 2 }, { temperature: 36.9, mucus: 2 }, { temperature: 36.9, mucus: 1 }, { temperature: 36.85, mucus: 1 }, { temperature: 36.9, mucus: 1 }, { temperature: 36.8, mucus: 1 }, { temperature: 36.9, mucus: 1 } ] const temperatures = values.map(convertToSymptoFormat) const status = getSensiplanStatus(temperatures) expect(status).to.eql({ assumeFertility: false, temperatureShift: { detected: true, ltl: 36.55, rule: 0, firstHighMeasurementDay: { date: 15, temperature: { value: 36.7 }, mucus: { value: 3 } }, evaluationCompleteDay: { date: 17, temperature: { value: 36.75 }, mucus: { value: 4 } } }, mucusShift: { detected: true, mucusPeak: { date: 17, mucus: { value: 4 }, temperature: { value: 36.75 } } } }) }) }) })