From 52b6e5de0a0b6c5fc39ed25741a95a4f140aff48 Mon Sep 17 00:00:00 2001 From: Julia Friesel Date: Wed, 18 Jul 2018 10:02:11 +0200 Subject: [PATCH] Make previousCycle explicit in signature --- lib/sympto/index.js | 11 ++++----- test/sympto/index.spec.js | 50 ++++++++++++++++++++++----------------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/lib/sympto/index.js b/lib/sympto/index.js index 4290201..2163c91 100644 --- a/lib/sympto/index.js +++ b/lib/sympto/index.js @@ -4,8 +4,8 @@ import getPreOvulatoryPhase from './pre-ovulatory' import { LocalDate } from 'js-joda' import assert from 'assert' -export default function getSymptoThermalStatus({ cycle, previousCycles = [] }) { - throwIfArgsAreNotInRequiredFormat([cycle, ...previousCycles]) +export default function getSymptoThermalStatus({ cycle, previousCycle, earlierCycles = [] }) { + throwIfArgsAreNotInRequiredFormat([cycle, ...earlierCycles]) const status = { assumeFertility: true, @@ -14,11 +14,10 @@ export default function getSymptoThermalStatus({ cycle, previousCycles = [] }) { // if there was no first higher measurement in the previous cycle, // no infertile pre-ovulatory phase may be assumed - const lastCycle = previousCycles[previousCycles.length - 1] - if (lastCycle) { - const statusForLast = getSymptoThermalStatus({ cycle: lastCycle }) + if (previousCycle) { + const statusForLast = getSymptoThermalStatus({ cycle: previousCycle }) if (statusForLast.temperatureShift) { - status.phases.preOvulatory = getPreOvulatoryPhase(cycle, previousCycles) + status.phases.preOvulatory = getPreOvulatoryPhase(cycle, [previousCycle, ...earlierCycles]) if (status.phases.preOvulatory.cycleDays.length === cycle.length) { status.assumeFertility = false return status diff --git a/test/sympto/index.spec.js b/test/sympto/index.spec.js index b9dcd9f..4f805e0 100644 --- a/test/sympto/index.spec.js +++ b/test/sympto/index.spec.js @@ -26,7 +26,7 @@ describe('sympto', () => { it('with no shifts detects only peri-ovulatory', function () { const status = getSensiplanStatus({ cycle: cycleWithoutAnyShifts, - previousCycles: [cycleWithoutFhm,] + previousCycle: cycleWithoutFhm }) expect(status).to.eql({ @@ -43,7 +43,7 @@ describe('sympto', () => { it('with shifts detects only peri-ovulatory and post-ovulatory', () => { const status = getSensiplanStatus({ cycle: longAndComplicatedCycle, - previousCycles: [cycleWithoutFhm,] + previousCycle: cycleWithoutFhm }) expect(status.temperatureShift).to.be.an('object') @@ -71,7 +71,7 @@ describe('sympto', () => { it('according to 5-day-rule', function () { const status = getSensiplanStatus({ cycle: fiveDayCycle, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(Object.keys(status.phases).length).to.eql(1) @@ -88,7 +88,7 @@ describe('sympto', () => { it('according to 5-day-rule', function () { const status = getSensiplanStatus({ cycle: cycleWithTempAndNoMucusShift, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(Object.keys(status.phases).length).to.eql(2) @@ -108,7 +108,7 @@ describe('sympto', () => { it('according to 5-day-rule with shortened pre-phase', function () { const status = getSensiplanStatus({ cycle: cycleWithEarlyMucus, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(Object.keys(status.phases).length).to.eql(2) @@ -128,7 +128,7 @@ describe('sympto', () => { it('according to 5-day-rule', function () { const status = getSensiplanStatus({ cycle: longAndComplicatedCycle, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(Object.keys(status.phases).length).to.eql(3) @@ -159,7 +159,7 @@ describe('sympto', () => { it('with fhM + mucus peak on same day finds start of postovu phase', () => { const status = getSensiplanStatus({ cycle: mucusPeakAndFhmOnSameDay, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(status.temperatureShift).to.be.an('object') @@ -193,7 +193,7 @@ describe('sympto', () => { it('with fhM 2 days before mucus peak waits for end of mucus eval', () => { const status = getSensiplanStatus({ cycle: fhmTwoDaysBeforeMucusPeak, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(status.temperatureShift).to.be.an('object') @@ -227,7 +227,7 @@ describe('sympto', () => { it('another example for mucus peak before temp shift', () => { const status = getSensiplanStatus({ cycle: mucusPeakSlightlyBeforeTempShift, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(status.temperatureShift).to.be.an('object') @@ -261,7 +261,7 @@ describe('sympto', () => { it('with another mucus peak 5 days after fHM ignores it', () => { const status = getSensiplanStatus({ cycle: mucusPeak5DaysAfterFhm, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(status.temperatureShift).to.be.an('object') @@ -295,7 +295,7 @@ describe('sympto', () => { it('with mucus peak 2 days before fhM waits for end of temp eval', () => { const status = getSensiplanStatus({ cycle: mucusPeakTwoDaysBeforeFhm, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(status.temperatureShift).to.be.an('object') @@ -329,7 +329,7 @@ describe('sympto', () => { it('with mucus peak 5 days before fhM waits for end of temp eval', () => { const status = getSensiplanStatus({ cycle: fhm5DaysAfterMucusPeak, - previousCycles: [cycleWithFhm] + previousCycle: cycleWithFhm }) expect(status.temperatureShift).to.be.an('object') @@ -365,7 +365,8 @@ describe('sympto', () => { it('shortens the pre-ovu phase if there is a previous <13 fhm', () => { const status = getSensiplanStatus({ cycle: longAndComplicatedCycle, - previousCycles: [fhmOnDay12, ...Array(13).fill(fhmOnDay15)] + previousCycle: fhmOnDay15, + earlierCycles: [fhmOnDay12, ...Array(10).fill(fhmOnDay15)] }) expect(status.temperatureShift).to.be.an('object') @@ -398,7 +399,8 @@ describe('sympto', () => { it('shortens pre-ovu phase with prev <13 fhm even with <12 cycles', () => { const status = getSensiplanStatus({ cycle: longAndComplicatedCycle, - previousCycles: Array(11).fill(fhmOnDay12) + previousCycle: fhmOnDay12, + earlierCycles: Array(10).fill(fhmOnDay12) }) expect(status.temperatureShift).to.be.an('object') @@ -431,7 +433,8 @@ describe('sympto', () => { it('shortens the pre-ovu phase if mucus occurs', () => { const status = getSensiplanStatus({ cycle: cycleWithEarlyMucus, - previousCycles: Array(11).fill(fhmOnDay12) + previousCycle: fhmOnDay12, + earlierCycles: Array(10).fill(fhmOnDay12) }) expect(status.assumeFertility).to.be.true() @@ -453,7 +456,8 @@ describe('sympto', () => { it('lengthens the pre-ovu phase if >= 12 cycles with fhm > 13', () => { const status = getSensiplanStatus({ cycle: longAndComplicatedCycle, - previousCycles: Array(12).fill(fhmOnDay15) + previousCycle: fhmOnDay15, + earlierCycles: Array(11).fill(fhmOnDay15) }) expect(status.assumeFertility).to.be.false() @@ -485,7 +489,8 @@ describe('sympto', () => { it('does not lengthen the pre-ovu phase if < 12 cycles', () => { const status = getSensiplanStatus({ cycle: longAndComplicatedCycle, - previousCycles: Array(11).fill(fhmOnDay15) + previousCycle: fhmOnDay15, + earlierCycles: Array(10).fill(fhmOnDay15) }) expect(status.assumeFertility).to.be.false() @@ -517,7 +522,8 @@ describe('sympto', () => { it('does not detect any pre-ovu phase if prev cycle had no fhm', () => { const status = getSensiplanStatus({ cycle: longAndComplicatedCycle, - previousCycles: [...Array(12).fill(fhmOnDay15), cycleWithoutFhm] + previousCycle: cycleWithoutFhm, + earlierCycles: [...Array(12).fill(fhmOnDay15)] }) expect(status.assumeFertility).to.be.false() @@ -555,7 +561,7 @@ describe('sympto', () => { hello: 'world', bleeding: { value: 0 } }], - previousCycles: [[{ + earlierCycles: [[{ date: '1992-09-09', bleeding: { value: 0 } }]] @@ -566,7 +572,7 @@ describe('sympto', () => { temperature: {value: '35'}, bleeding: { value: 0 } }], - previousCycles: [[{ + earlierCycles: [[{ date: '1992-09-09', bleeding: { value: 0 } }]] @@ -576,7 +582,7 @@ describe('sympto', () => { date: '09-14-2017', bleeding: { value: 0 } }], - previousCycles: [[{ + earlierCycles: [[{ date: '1992-09-09', bleeding: { value: 0 } }]] @@ -590,7 +596,7 @@ describe('sympto', () => { value: 'medium' } }], - previousCycles: [[ + earlierCycles: [[ { date: '2017-09-23', }