Skip to content
Snippets Groups Projects
Commit 0de00933 authored by Julia Friesel's avatar Julia Friesel
Browse files

Handle pre-ovulatory = current

parent 51bd75fb
No related branches found
No related tags found
No related merge requests found
...@@ -7,23 +7,25 @@ export default function ({ cycle, previousCycle }) { ...@@ -7,23 +7,25 @@ export default function ({ cycle, previousCycle }) {
// TODO check for basic stuff, throw if nonexistent // TODO check for basic stuff, throw if nonexistent
const status = { const status = {
assumeFertility: true, assumeFertility: true,
phases: { phases: {}
periOvulatory: {
start: {
date: null
},
cycleDays: null
}
}
} }
// if there was no first higher measurement in the previous cycle, // if there was no first higher measurement in the previous cycle,
// no infertile pre-ovulatory phase may be assumed // no infertile pre-ovulatory phase may be assumed
if (getTemperatureShift(previousCycle).detected && !cycle[0].mucus) { if (getTemperatureShift(previousCycle).detected && !cycle[0].mucus) {
status.phases.preOvulatory = getPreOvulatoryPhase(cycle) status.phases.preOvulatory = getPreOvulatoryPhase(cycle)
if (status.phases.preOvulatory.cycleDays.length === cycle.length) {
status.assumeFertility = false
return status
}
} }
status.phases.periOvulatory = {
start: { date: null },
cycleDays: []
}
const periPhase = status.phases.periOvulatory const periPhase = status.phases.periOvulatory
if (status.phases.preOvulatory) { if (status.phases.preOvulatory) {
const prePhase = status.phases.preOvulatory const prePhase = status.phases.preOvulatory
periPhase.start.date = LocalDate.parse(prePhase.end.date).plusDays(1).toString() periPhase.start.date = LocalDate.parse(prePhase.end.date).plusDays(1).toString()
......
...@@ -83,10 +83,19 @@ const cycleWithoutAnyShifts = [ ...@@ -83,10 +83,19 @@ const cycleWithoutAnyShifts = [
{ temperature: 36.45, mucus: 1 } { temperature: 36.45, mucus: 1 }
].map(convertToSymptoFormat) ].map(convertToSymptoFormat)
const fiveDayCycle = [
{ temperature: 36.6, bleeding: 2 },
{ temperature: 36.65 },
{ temperature: 36.5 },
{ temperature: 36.6 },
{ temperature: 36.55 }
].map(convertToSymptoFormat)
export { export {
cycleWithoutTempShift, cycleWithoutTempShift,
cycleWithTempAndMucusShift, cycleWithTempAndMucusShift,
cycleWithTempAndNoMucusShift, cycleWithTempAndNoMucusShift,
cycleWithTempShift, cycleWithTempShift,
cycleWithoutAnyShifts cycleWithoutAnyShifts,
fiveDayCycle
} }
\ No newline at end of file
import chai from 'chai' import chai from 'chai'
import getSensiplanStatus from '../../lib/sympto' import getSensiplanStatus from '../../lib/sympto'
import { import {
cycleWithoutTempShift, cycleWithTempAndMucusShift, cycleWithTempAndNoMucusShift, cycleWithTempShift, cycleWithoutAnyShifts cycleWithoutTempShift, cycleWithTempAndMucusShift, cycleWithTempAndNoMucusShift, cycleWithTempShift, cycleWithoutAnyShifts, fiveDayCycle
} from './fixtures' } from './fixtures'
const expect = chai.expect const expect = chai.expect
...@@ -52,6 +52,23 @@ describe('sympto', () => { ...@@ -52,6 +52,23 @@ describe('sympto', () => {
}) })
}) })
describe('with previous higher measurement', () => { describe('with previous higher measurement', () => {
describe('with no shifts detects pre-ovulatory phase', function () {
it('according to 5-day-rule', function () {
const status = getSensiplanStatus({
cycle: fiveDayCycle,
previousCycle: cycleWithTempShift
})
expect(Object.keys(status.phases).length).to.eql(1)
expect(status.assumeFertility).to.be.false()
expect(status.phases.preOvulatory).to.eql({
cycleDays: fiveDayCycle,
start: { date: '2018-06-01' },
end: { date: '2018-06-05' }
})
})
})
describe('with no shifts detects pre- and peri-ovulatory phase', function () { describe('with no shifts detects pre- and peri-ovulatory phase', function () {
it('according to 5-day-rule', function () { it('according to 5-day-rule', function () {
const status = getSensiplanStatus({ const status = getSensiplanStatus({
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment