First 9 tests for cervix temp combination
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
function convertToSymptoFormat(val) {
|
function convertToSymptoFormat(val) {
|
||||||
const sympto = { date: val.date }
|
const sympto = { date: val.date }
|
||||||
if (val.temperature) sympto.temperature = {
|
if (val.temperature) sympto.temperature = {
|
||||||
@@ -37,11 +36,11 @@ export const idealCycle = [
|
|||||||
].map(convertToSymptoFormat)
|
].map(convertToSymptoFormat)
|
||||||
|
|
||||||
export const cycleWithFhmNoCervixShift = [
|
export const cycleWithFhmNoCervixShift = [
|
||||||
{ date: '2018-08-01', bleeding: 1, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-08-01', bleeding: 1 },
|
||||||
{ date: '2018-08-02', bleeding: 2, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-08-02', bleeding: 2 },
|
||||||
{ date: '2018-08-03', temperature: 36.6, bleeding: 2, cervix: { opening: 2, firmness: 1 } },
|
{ date: '2018-08-03', temperature: 36.6, bleeding: 2 },
|
||||||
{ date: '2018-08-04', temperature: 36.55, bleeding: 1, cervix: { opening: 2, firmness: 0 } },
|
{ date: '2018-08-04', temperature: 36.55, bleeding: 1 },
|
||||||
{ date: '2018-08-05', temperature: 36.6, cervix: { opening: 0, firmness: 1 } },
|
{ date: '2018-08-05', temperature: 36.6 },
|
||||||
{ date: '2018-08-06', temperature: 36.65, cervix: { opening: 0, firmness: 1 } },
|
{ date: '2018-08-06', temperature: 36.65, cervix: { opening: 0, firmness: 1 } },
|
||||||
{ date: '2018-08-07', temperature: 36.7, cervix: { opening: 1, firmness: 0 } },
|
{ date: '2018-08-07', temperature: 36.7, cervix: { opening: 1, firmness: 0 } },
|
||||||
{ date: '2018-08-08', temperature: 36.6, cervix: { opening: 0, firmness: 1 } },
|
{ date: '2018-08-08', temperature: 36.6, cervix: { opening: 0, firmness: 1 } },
|
||||||
@@ -64,11 +63,11 @@ export const cycleWithoutFhmNoCervixShift = [
|
|||||||
].map(convertToSymptoFormat)
|
].map(convertToSymptoFormat)
|
||||||
|
|
||||||
export const cycleWithoutAnyShifts = [
|
export const cycleWithoutAnyShifts = [
|
||||||
{ date: '2018-07-01', temperature: 36.65, bleeding: -1, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-01', temperature: 36.65, bleeding: 1 },
|
||||||
{ date: '2018-07-02', temperature: 36.45, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-02', temperature: 36.45 },
|
||||||
{ date: '2018-07-03', temperature: 36.65, cervix: { opening: 2, firmness: 1 } },
|
{ date: '2018-07-03', temperature: 36.65 },
|
||||||
{ date: '2018-07-04', temperature: 36.65, cervix: { opening: 2, firmness: 1 } },
|
{ date: '2018-07-04', temperature: 36.65 },
|
||||||
{ date: '2018-07-05', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-05', temperature: 36.65, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-07-06', temperature: 36.85, cervix: { opening: 0, firmness: 1 } },
|
{ date: '2018-07-06', temperature: 36.85, cervix: { opening: 0, firmness: 1 } },
|
||||||
{ date: '2018-07-07', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-07', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-07-08', temperature: 36.65, cervix: { opening: 2, firmness: 1 } },
|
{ date: '2018-07-08', temperature: 36.65, cervix: { opening: 2, firmness: 1 } },
|
||||||
@@ -84,7 +83,7 @@ export const cycleWithoutAnyShifts = [
|
|||||||
{ date: '2018-07-18', temperature: 36.25, cervix: { opening: 2, firmness: 1 } },
|
{ date: '2018-07-18', temperature: 36.25, cervix: { opening: 2, firmness: 1 } },
|
||||||
{ date: '2018-07-19', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-19', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-07-20', temperature: 36.45, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-20', temperature: 36.45, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-07-21', temperature: 36.5, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-07-21', temperature: 36.52, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-07-22', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-22', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-07-23', temperature: 36.75, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-23', temperature: 36.75, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-07-24', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-07-24', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
|
||||||
@@ -127,7 +126,7 @@ export const tempAndCervixEvalEndOnSameDay = [
|
|||||||
{ date: '2018-06-09', temperature: 36.5, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-06-09', temperature: 36.5, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-06-10', temperature: 36.30, cervix: { opening: 0, firmness: 1 } },
|
{ date: '2018-06-10', temperature: 36.30, cervix: { opening: 0, firmness: 1 } },
|
||||||
{ date: '2018-06-11', temperature: 36.30, cervix: { opening: 1, firmness: 0 } },
|
{ date: '2018-06-11', temperature: 36.30, cervix: { opening: 1, firmness: 0 } },
|
||||||
{ date: '2018-06-12', temperature: 36.4, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-06-12', temperature: 36.4, cervix: { opening: 2, firmness: 1 } },
|
||||||
{ date: '2018-06-13', temperature: 36.3, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-06-13', temperature: 36.3, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-06-14', temperature: 36.4, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-06-14', temperature: 36.4, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-06-15', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-06-15', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
|
||||||
@@ -143,18 +142,18 @@ export const tempAndCervixEvalEndOnSameDay = [
|
|||||||
{ date: '2018-06-25', cervix: { opening: 1, firmness: 1 } }
|
{ date: '2018-06-25', cervix: { opening: 1, firmness: 1 } }
|
||||||
].map(convertToSymptoFormat)
|
].map(convertToSymptoFormat)
|
||||||
|
|
||||||
export const cervixShiftWaitsForTempShift = [
|
export const tempShift3DaysAfterCervixShift = [
|
||||||
{ date: '2018-05-08', bleeding: 3 },
|
{ date: '2018-05-08', bleeding: 3 },
|
||||||
{ date: '2018-05-09', bleeding: 2 },
|
{ date: '2018-05-09', bleeding: 2 },
|
||||||
{ date: '2018-05-10', bleeding: 2 },
|
{ date: '2018-05-10', bleeding: 2 },
|
||||||
{ date: '2018-05-11', bleeding: 1 },
|
{ date: '2018-05-11', bleeding: 1 },
|
||||||
{ date: '2018-05-12', temperature: 36.3, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-05-12', temperature: 36.3 },
|
||||||
{ date: '2018-05-13', temperature: 36.4, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-05-13', temperature: 36.4, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-05-14', temperature: 36.3, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-05-14', temperature: 36.3, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-05-15', temperature: 36.2, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-05-15', temperature: 36.2, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-05-16', temperature: 36.3, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-05-16', temperature: 36.3, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-05-17', temperature: 36.3, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-05-17', temperature: 36.3, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-05-18', temperature: 36.55, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-05-18', temperature: 36.35, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-05-19', temperature: 36.65, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-05-19', temperature: 36.65, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-05-20', temperature: 36.7, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-05-20', temperature: 36.7, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-05-21', temperature: 36.6, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-05-21', temperature: 36.6, cervix: { opening: 0, firmness: 0 } },
|
||||||
@@ -168,12 +167,12 @@ export const cervixShiftWaitsForTempShift = [
|
|||||||
{ date: '2018-05-29', bleeding: 2 }
|
{ date: '2018-05-29', bleeding: 2 }
|
||||||
].map(convertToSymptoFormat)
|
].map(convertToSymptoFormat)
|
||||||
|
|
||||||
export const tempShiftWaitsForCervixShift = [
|
export const cervixShift2DaysAfterTempShift = [
|
||||||
{ date: '2018-04-05', bleeding: 3 },
|
{ date: '2018-04-05', bleeding: 3 },
|
||||||
{ date: '2018-04-06', bleeding: 2 },
|
{ date: '2018-04-06', bleeding: 2 },
|
||||||
{ date: '2018-04-07', bleeding: 2 },
|
{ date: '2018-04-07', bleeding: 2 },
|
||||||
{ date: '2018-04-08', bleeding: 1 },
|
{ date: '2018-04-08', bleeding: 1 },
|
||||||
{ date: '2018-04-09', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-09', temperature: 36.5 },
|
||||||
{ date: '2018-04-10', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-10', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-04-11', temperature: 36.55, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-11', temperature: 36.55, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-04-12', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-12', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
|
||||||
@@ -181,14 +180,13 @@ export const tempShiftWaitsForCervixShift = [
|
|||||||
{ date: '2018-04-14', temperature: 36.35, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-14', temperature: 36.35, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-04-15', temperature: 36.6, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-15', temperature: 36.6, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-04-16', temperature: 36.8, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-16', temperature: 36.8, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-04-17', cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-04-17', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-04-18', temperature: 36.8, cervix: { opening: 1, firmness: 0 } },
|
{ date: '2018-04-18', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-04-19', temperature: 36.85, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-04-19', temperature: 36.85, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-04-20', temperature: 37.0, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-04-20', temperature: 37.0, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-04-21', temperature: 36.9, cervix: { opening: 0, firmness: 0 } },
|
|
||||||
{ date: '2018-04-22', temperature: 36.9, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-04-22', temperature: 36.9, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-04-23', temperature: 37.1, cervix: { opening: 0, firmness: 0 } },
|
{ date: '2018-04-23', temperature: 37.1, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-04-24', temperature: 36.75, cervix: { opening: 1, firmness: 1 } }
|
{ date: '2018-04-24', temperature: 36.75, cervix: { opening: 0, firmness: 0 } }
|
||||||
].map(convertToSymptoFormat)
|
].map(convertToSymptoFormat)
|
||||||
|
|
||||||
export const noInfertilePhaseDetected = [
|
export const noInfertilePhaseDetected = [
|
||||||
@@ -196,7 +194,7 @@ export const noInfertilePhaseDetected = [
|
|||||||
{ date: '2018-03-09', bleeding: 3 },
|
{ date: '2018-03-09', bleeding: 3 },
|
||||||
{ date: '2018-03-10', bleeding: 3 },
|
{ date: '2018-03-10', bleeding: 3 },
|
||||||
{ date: '2018-03-11', bleeding: 3 },
|
{ date: '2018-03-11', bleeding: 3 },
|
||||||
{ date: '2018-03-12', temperature: 36.3, cervix: { opening: 0, firmness: 1 } },
|
{ date: '2018-03-12', temperature: 36.3, cervix: { opening: 0, firmness: 0 } },
|
||||||
{ date: '2018-03-13', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-03-13', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-03-14', temperature: 36.45, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-03-14', temperature: 36.45, cervix: { opening: 1, firmness: 1 } },
|
||||||
{ date: '2018-03-15', temperature: 36.4, cervix: { opening: 1, firmness: 1 } },
|
{ date: '2018-03-15', temperature: 36.4, cervix: { opening: 1, firmness: 1 } },
|
||||||
@@ -212,6 +210,5 @@ export const noInfertilePhaseDetected = [
|
|||||||
|
|
||||||
export const fiveDayCycle = [
|
export const fiveDayCycle = [
|
||||||
{ date: '2018-08-01', bleeding: 2 },
|
{ date: '2018-08-01', bleeding: 2 },
|
||||||
{ date: '2018-08-03', bleeding: 3 },
|
{ date: '2018-08-03', bleeding: 3 }
|
||||||
{ date: '2018-08-05', bleeding: 0 }
|
|
||||||
].map(convertToSymptoFormat)
|
].map(convertToSymptoFormat)
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import {
|
|||||||
cycleWithoutFhm,
|
cycleWithoutFhm,
|
||||||
cycleWithoutAnyShifts,
|
cycleWithoutAnyShifts,
|
||||||
tempAndCervixEvalEndOnSameDay,
|
tempAndCervixEvalEndOnSameDay,
|
||||||
cervixShiftWaitsForTempShift,
|
tempShift3DaysAfterCervixShift,
|
||||||
tempShiftWaitsForCervixShift,
|
cervixShift2DaysAfterTempShift,
|
||||||
noInfertilePhaseDetected,
|
noInfertilePhaseDetected,
|
||||||
fiveDayCycle
|
fiveDayCycle
|
||||||
} from './cervix-temp-fixtures'
|
} from './cervix-temp-fixtures'
|
||||||
@@ -17,8 +17,7 @@ const expect = chai.expect
|
|||||||
describe('sympto', () => {
|
describe('sympto', () => {
|
||||||
describe('combining temperature and cervix tracking', () => {
|
describe('combining temperature and cervix tracking', () => {
|
||||||
describe('with no previous higher temp measurement', () => {
|
describe('with no previous higher temp measurement', () => {
|
||||||
|
it('with no temp or cervix shifts detects only peri-ovulatory', () => {
|
||||||
it('with no temp or cervix shifts detects only peri-ovulatory', function () {
|
|
||||||
const status = getSensiplanStatus({
|
const status = getSensiplanStatus({
|
||||||
cycle: cycleWithoutAnyShifts,
|
cycle: cycleWithoutAnyShifts,
|
||||||
previousCycle: cycleWithoutFhm,
|
previousCycle: cycleWithoutFhm,
|
||||||
@@ -34,8 +33,7 @@ describe('sympto', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
it('with temp but no cervix shift detects only peri-ovulatory', () => {
|
||||||
it('with temp but no cervix shift detects only peri-ovulatory', function () {
|
|
||||||
const status = getSensiplanStatus({
|
const status = getSensiplanStatus({
|
||||||
cycle: cycleWithFhmNoCervixShift,
|
cycle: cycleWithFhmNoCervixShift,
|
||||||
previousCycle: cycleWithoutFhm,
|
previousCycle: cycleWithoutFhm,
|
||||||
@@ -45,47 +43,42 @@ describe('sympto', () => {
|
|||||||
expect(status).to.eql({
|
expect(status).to.eql({
|
||||||
phases: {
|
phases: {
|
||||||
periOvulatory: {
|
periOvulatory: {
|
||||||
start: { date: '2018-06-01' },
|
start: { date: '2018-08-01' },
|
||||||
cycleDays: cycleWithFhmNoCervixShift
|
cycleDays: cycleWithFhmNoCervixShift
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
it('with temp and cervix shifts detects only peri- and post-ovulatory phases', () => {
|
||||||
it('with temp and cervix shifts detects only peri- and post-ovulatory phases', function () {
|
|
||||||
const status = getSensiplanStatus({
|
const status = getSensiplanStatus({
|
||||||
cycle: idealCycle,
|
cycle: idealCycle,
|
||||||
previousCycle: cycleWithoutFhm,
|
previousCycle: cycleWithoutFhm,
|
||||||
secondarySymptom: 'cervix'
|
secondarySymptom: 'cervix'
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(status.temperatureShift).to.be.an('object')
|
|
||||||
expect(status.cervixShift).to.be.an('object')
|
|
||||||
|
|
||||||
expect(Object.keys(status.phases).length).to.eql(2)
|
expect(Object.keys(status.phases).length).to.eql(2)
|
||||||
|
expect(status.temperatureShift.evaluationCompleteDay.date).to.eql('2018-08-15')
|
||||||
|
expect(status.cervixShift.evaluationCompleteDay.date).to.eql('2018-08-15')
|
||||||
|
expect(status.temperatureShift.rule).to.eql(0)
|
||||||
expect(status.phases.periOvulatory).to.eql({
|
expect(status.phases.periOvulatory).to.eql({
|
||||||
start: { date: '2018-08-01' },
|
start: { date: '2018-08-01' },
|
||||||
end: { date: '2018-08-11', time: '18:00' },
|
end: { date: '2018-08-15', time: '18:00' },
|
||||||
cycleDays: idealCycle
|
cycleDays: idealCycle
|
||||||
.filter(({date}) => date <= '2018-08-11')
|
.filter(({date}) => date <= '2018-08-15')
|
||||||
})
|
})
|
||||||
expect(status.phases.postOvulatory).to.eql({
|
expect(status.phases.postOvulatory).to.eql({
|
||||||
start: { date: '2018-08-11', time: '18:00' },
|
start: { date: '2018-08-15', time: '18:00' },
|
||||||
cycleDays: idealCycle
|
cycleDays: idealCycle
|
||||||
.filter(({date}) => date >= '2018-08-11')
|
.filter(({date}) => date >= '2018-08-15')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
describe('with previous higher temp measurement', () => {
|
describe('with previous higher temp measurement', () => {
|
||||||
|
it('with no shifts detects only peri-ovulatory in 3-day long cycle according to 5-day rule', () => {
|
||||||
describe('with no shifts detects only peri-ovulatory', function () {
|
|
||||||
it.skip('according to 5-day rule', function () {
|
|
||||||
const status = getSensiplanStatus({
|
const status = getSensiplanStatus({
|
||||||
cycle: fiveDayCycle,
|
cycle: fiveDayCycle,
|
||||||
previousCycle: cycleWithFhmNoCervixShift
|
previousCycle: idealCycle,
|
||||||
|
secondarySymptom: 'cervix'
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(Object.keys(status.phases).length).to.eql(1)
|
expect(Object.keys(status.phases).length).to.eql(1)
|
||||||
expect(status.phases.preOvulatory).to.eql({
|
expect(status.phases.preOvulatory).to.eql({
|
||||||
cycleDays: fiveDayCycle,
|
cycleDays: fiveDayCycle,
|
||||||
@@ -93,13 +86,11 @@ describe('sympto', () => {
|
|||||||
end: { date: '2018-08-05' }
|
end: { date: '2018-08-05' }
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
it('with no shifts detects pre- and peri-ovulatory phase according to 5-day-rule', () => {
|
||||||
|
|
||||||
describe('with no shifts detects pre- and peri-ovulatory phase', () => {
|
|
||||||
it.skip('according to 5-day-rule', function () {
|
|
||||||
const status = getSensiplanStatus({
|
const status = getSensiplanStatus({
|
||||||
cycle: cycleWithoutAnyShifts,
|
cycle: cycleWithoutAnyShifts,
|
||||||
previousCycle: cycleWithFhmNoCervixShift
|
previousCycle: idealCycle,
|
||||||
|
secondarySymptom: 'cervix'
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(Object.keys(status.phases).length).to.eql(2)
|
expect(Object.keys(status.phases).length).to.eql(2)
|
||||||
@@ -111,19 +102,20 @@ describe('sympto', () => {
|
|||||||
})
|
})
|
||||||
expect(status.phases.periOvulatory).to.eql({
|
expect(status.phases.periOvulatory).to.eql({
|
||||||
cycleDays: cycleWithoutAnyShifts
|
cycleDays: cycleWithoutAnyShifts
|
||||||
.filter(({date}) => date > '2018-07-05'),
|
.filter(({date}) => date >= '2018-07-06'),
|
||||||
start: { date: '2018-07-06' }
|
start: { date: '2018-07-06' }
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
it('with evaluation of temperature and cervix end on same day', () => {
|
it('with evaluation of temperature and cervix end on same day', () => {
|
||||||
const status = getSensiplanStatus({
|
const status = getSensiplanStatus({
|
||||||
cycle: tempAndCervixEvalEndOnSameDay,
|
cycle: tempAndCervixEvalEndOnSameDay,
|
||||||
previousCycle: cycleWithFhmNoCervixShift,
|
previousCycle: idealCycle,
|
||||||
secondarySymptom: 'cervix'
|
secondarySymptom: 'cervix'
|
||||||
})
|
})
|
||||||
expect(Object.keys(status.phases).length).to.eql(3)
|
expect(Object.keys(status.phases).length).to.eql(3)
|
||||||
|
expect(status.temperatureShift.evaluationCompleteDay.date).to.eql('2018-06-17')
|
||||||
|
expect(status.cervixShift.evaluationCompleteDay.date).to.eql('2018-06-17')
|
||||||
|
|
||||||
expect(status.phases.preOvulatory).to.eql({
|
expect(status.phases.preOvulatory).to.eql({
|
||||||
start: { date: '2018-06-01' },
|
start: { date: '2018-06-01' },
|
||||||
end: { date: '2018-06-05' },
|
end: { date: '2018-06-05' },
|
||||||
@@ -142,58 +134,90 @@ describe('sympto', () => {
|
|||||||
start: { date: '2018-06-17', time: '18:00' },
|
start: { date: '2018-06-17', time: '18:00' },
|
||||||
cycleDays: tempAndCervixEvalEndOnSameDay
|
cycleDays: tempAndCervixEvalEndOnSameDay
|
||||||
.filter(({date}) => date >= '2018-06-17')
|
.filter(({date}) => date >= '2018-06-17')
|
||||||
expect(status.cervixShift.cervixPeakBeforeShift.date).to.eql('2018-06-14')
|
|
||||||
})
|
})
|
||||||
expect(status.cervixShift.detected).to.be.true()
|
|
||||||
expect(status.cervixShift.evaluationCompleteDay.date).to.eql('2018-06-17')
|
|
||||||
})
|
})
|
||||||
|
it('when temperature shift happens 3 days after cervix shift', () => {
|
||||||
|
|
||||||
it('when cervix shift waits for temperature shift', () => {
|
|
||||||
const status = getSensiplanStatus({
|
const status = getSensiplanStatus({
|
||||||
cycle: cervixShiftWaitsForTempShift,
|
cycle: tempShift3DaysAfterCervixShift,
|
||||||
previousCycle: cycleWithFhmNoCervixShift,
|
|
||||||
secondarySymptom: 'cervix'
|
|
||||||
})
|
|
||||||
expect(Object.keys(status.phases).length).to.eql(3)
|
|
||||||
expect(status.cervixShift.detected).to.be.true()
|
|
||||||
})
|
|
||||||
|
|
||||||
it('when temperature shift waits for cervix shift', () => {
|
|
||||||
const status = getSensiplanStatus({
|
|
||||||
cycle: tempShiftWaitsForCervixShift,
|
|
||||||
previousCycle: cycleWithFhmNoCervixShift,
|
|
||||||
secondarySymptom: 'cervix'
|
|
||||||
})
|
|
||||||
expect(Object.keys(status.phases).length).to.eql(3)
|
|
||||||
expect(status.cervixShift.detected).to.be.true()
|
|
||||||
})
|
|
||||||
|
|
||||||
it('when no infertile phase can be detected', () => {
|
|
||||||
const status = getSensiplanStatus({
|
|
||||||
cycle: noInfertilePhaseDetected,
|
|
||||||
previousCycle: cycleWithFhmNoCervixShift,
|
|
||||||
secondarySymptom: 'cervix'
|
|
||||||
})
|
|
||||||
expect(Object.keys(status.phases).length).to.eql(2)
|
|
||||||
})
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
it('', function () {
|
|
||||||
const status = getSensiplanStatus({
|
|
||||||
cycle: idealCycle,
|
|
||||||
previousCycle: idealCycle,
|
previousCycle: idealCycle,
|
||||||
secondarySymptom: 'cervix'
|
secondarySymptom: 'cervix'
|
||||||
})
|
})
|
||||||
|
expect(Object.keys(status.phases).length).to.eql(3)
|
||||||
|
expect(status.cervixShift).to.be.an('object')
|
||||||
|
expect(status.temperatureShift).to.be.an('object')
|
||||||
|
expect(status.cervixShift.evaluationCompleteDay.date).to.eql('2018-05-18')
|
||||||
|
expect(status.temperatureShift.evaluationCompleteDay.date).to.eql('2018-05-21')
|
||||||
|
|
||||||
expect(Object.keys(status.phases).length).to.eql()
|
expect(status.phases.preOvulatory).to.eql({
|
||||||
expect(status).to.eql({
|
start: { date: '2018-05-08' },
|
||||||
phases: {
|
end: { date: '2018-05-12' },
|
||||||
|
cycleDays: tempShift3DaysAfterCervixShift
|
||||||
}
|
.filter(({date}) => date <= '2018-05-12')
|
||||||
|
})
|
||||||
|
expect(status.phases.periOvulatory).to.eql({
|
||||||
|
start: { date:'2018-05-13'},
|
||||||
|
end: { date: '2018-05-21', time: '18:00' },
|
||||||
|
cycleDays: tempShift3DaysAfterCervixShift
|
||||||
|
.filter(({date}) => {
|
||||||
|
return date >= '2018-05-13' && date <= '2018-05-21'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
expect(status.phases.postOvulatory).to.eql({
|
||||||
|
start: { date: '2018-05-21', time: '18:00' },
|
||||||
|
cycleDays: tempShift3DaysAfterCervixShift
|
||||||
|
.filter(({date}) => date >= '2018-05-21')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
it('when cervix shift happens 2 days after temperature shift', () => {
|
||||||
|
const status = getSensiplanStatus({
|
||||||
|
cycle: cervixShift2DaysAfterTempShift,
|
||||||
|
previousCycle: idealCycle,
|
||||||
|
secondarySymptom: 'cervix'
|
||||||
|
})
|
||||||
|
expect(Object.keys(status.phases).length).to.eql(3)
|
||||||
|
expect(status.temperatureShift.rule).to.eql(0)
|
||||||
|
expect(status.temperatureShift.evaluationCompleteDay.date).to.eql('2018-04-17')
|
||||||
|
expect(status.cervixShift.evaluationCompleteDay.date).to.eql('2018-04-19')
|
||||||
|
|
||||||
|
expect(status.phases.preOvulatory).to.eql({
|
||||||
|
cycleDays: cervixShift2DaysAfterTempShift
|
||||||
|
.filter(({date}) => date <= '2018-04-09'),
|
||||||
|
start: { date: '2018-04-05' },
|
||||||
|
end: { date: '2018-04-09' }
|
||||||
|
})
|
||||||
|
expect(status.phases.periOvulatory).to.eql({
|
||||||
|
cycleDays: cervixShift2DaysAfterTempShift
|
||||||
|
.filter(({date}) => {
|
||||||
|
return date >= '2018-04-10' && date <= '2018-04-19'
|
||||||
|
}),
|
||||||
|
start: { date: '2018-04-10' },
|
||||||
|
end: { date: '2018-04-19', time: '18:00' }
|
||||||
|
})
|
||||||
|
expect(status.phases.postOvulatory).to.eql({
|
||||||
|
cycleDays: cervixShift2DaysAfterTempShift
|
||||||
|
.filter(({date}) => date >= '2018-04-19'),
|
||||||
|
start: { date: '2018-04-19', time: '18:00' }
|
||||||
|
})
|
||||||
|
})
|
||||||
|
it('when no infertile phase can be detected', () => {
|
||||||
|
const status = getSensiplanStatus({
|
||||||
|
cycle: noInfertilePhaseDetected,
|
||||||
|
previousCycle: idealCycle,
|
||||||
|
secondarySymptom: 'cervix'
|
||||||
|
})
|
||||||
|
expect(Object.keys(status.phases).length).to.eql(2)
|
||||||
|
expect(status.phases.preOvulatory).to.eql({
|
||||||
|
cycleDays: noInfertilePhaseDetected
|
||||||
|
.filter(({date}) => date <= '2018-03-12'),
|
||||||
|
start: { date: '2018-03-08' },
|
||||||
|
end: { date: '2018-03-12' }
|
||||||
|
})
|
||||||
|
expect(status.phases.periOvulatory).to.eql({
|
||||||
|
cycleDays: noInfertilePhaseDetected
|
||||||
|
.filter(({date}) => date > '2018-03-12'),
|
||||||
|
start: { date: '2018-03-13' }
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user