Return cycle phase starts

This commit is contained in:
Julia Friesel
2018-07-05 14:28:21 +02:00
parent 836bea778c
commit 9102bce7ce
2 changed files with 31 additions and 12 deletions
+18 -4
View File
@@ -2,18 +2,32 @@ import getTemperatureShift from './temperature'
import getMucusShift from './mucus' import getMucusShift from './mucus'
export default function (cycleDays) { export default function (cycleDays) {
const assumeFertile = { assumeFertility: true } const assumeFertileStatus = { assumeFertility: true }
// TODO second phase calculation
if (cycleDays.length) assumeFertileStatus.phases = [
{
startDate: cycleDays[0].date,
startTime: '00:00'
},
'TODO'
]
const temperatureShift = getTemperatureShift(cycleDays) const temperatureShift = getTemperatureShift(cycleDays)
if (!temperatureShift.detected) return assumeFertile if (!temperatureShift.detected) return assumeFertileStatus
const tempEvalEndIndex = cycleDays.indexOf(temperatureShift.evaluationCompleteDay) const tempEvalEndIndex = cycleDays.indexOf(temperatureShift.evaluationCompleteDay)
const mucusShift = getMucusShift(cycleDays, tempEvalEndIndex) const mucusShift = getMucusShift(cycleDays, tempEvalEndIndex)
if (!mucusShift.detected) return assumeFertile if (!mucusShift.detected) return assumeFertileStatus
const phase2 = {
startDate: temperatureShift.evaluationCompleteDay.date,
startTime: '18:00'
}
return { return {
assumeFertility: false, assumeFertility: false,
temperatureShift, temperatureShift,
mucusShift mucusShift,
phases: assumeFertileStatus.phases.concat(phase2)
} }
} }
+13 -8
View File
@@ -4,18 +4,18 @@ import getSensiplanStatus from '../../lib/sympto'
const expect = chai.expect const expect = chai.expect
function convertToSymptoFormat(val, i) { function convertToSymptoFormat(val, i) {
return { const sympto = { date: i }
date: i, if (val.temperature) sympto.temperature = { value: val.temperature }
temperature: val.temperature ? { value: val.temperature } : null, if (val.mucus) sympto.mucus = { value: val.mucus }
mucus: val.mucus ? { value: val.mucus } : null if (val.bleeding) sympto.bleeding = { value: val.bleeding }
} return sympto
} }
describe('sympto', () => { describe('sympto', () => {
describe('evaluating mucus and temperature shift together', () => { describe('evaluating mucus and temperature shift together', () => {
it('reports fertile when mucus reaches best quality again within temperature evaluation phase', function () { it('reports fertile when mucus reaches best quality again within temperature evaluation phase', function () {
const values = [ const values = [
{ temperature: 36.6 }, { temperature: 36.6 , bleeding: 2 },
{ temperature: 36.65 }, { temperature: 36.65 },
{ temperature: 36.5 }, { temperature: 36.5 },
{ temperature: 36.6 }, { temperature: 36.6 },
@@ -48,6 +48,11 @@ describe('sympto', () => {
const status = getSensiplanStatus(temperatures) const status = getSensiplanStatus(temperatures)
expect(status).to.eql({ expect(status).to.eql({
assumeFertility: false, assumeFertility: false,
phases: [
{ startDate: 0, startTime: '00:00'},
'TODO',
{ startDate: 17, startTime: '18:00'}
],
temperatureShift: { temperatureShift: {
detected: true, detected: true,
ltl: 36.55, ltl: 36.55,
@@ -60,7 +65,7 @@ describe('sympto', () => {
evaluationCompleteDay: { evaluationCompleteDay: {
date: 17, date: 17,
temperature: { value: 36.75 }, temperature: { value: 36.75 },
mucus: { value: 4 } mucus: { value: 4 },
} }
}, },
mucusShift: { mucusShift: {
@@ -68,7 +73,7 @@ describe('sympto', () => {
mucusPeak: { mucusPeak: {
date: 17, date: 17,
mucus: { value: 4 }, mucus: { value: 4 },
temperature: { value: 36.75 } temperature: { value: 36.75 },
} }
} }
}) })