Throw if args are wrong
This commit is contained in:
@@ -10,10 +10,12 @@ function convertToSymptoFormat(val) {
|
||||
const cycleWithTempShift = [36.6, 36.6, 36.6, 36.6, 36.6, 36.6, 36.8, 36.8, 36.8]
|
||||
.map(num => ({ date: '2018-06-01', temperature: num }))
|
||||
.map(convertToSymptoFormat)
|
||||
cycleWithTempShift.unshift({date: '2018-05-30', bleeding: { value: 2 }})
|
||||
|
||||
const cycleWithoutTempShift = [36.6, 36.6, 36.6, 36.6, 36.6, 36.6, 36.8, 36.8]
|
||||
.map(num => ({ date: '2018-06-01', temperature: num }))
|
||||
.map(convertToSymptoFormat)
|
||||
cycleWithoutTempShift.unshift({date: '2018-05-30', bleeding: { value: 2 }})
|
||||
|
||||
const cycleWithTempAndMucusShift = [
|
||||
{ date: '2018-06-01', temperature: 36.6, bleeding: 2 },
|
||||
|
||||
+93
-38
@@ -7,47 +7,45 @@ import {
|
||||
const expect = chai.expect
|
||||
|
||||
describe('sympto', () => {
|
||||
describe('evaluating mucus and temperature shift together', () => {
|
||||
describe('with no previous higher measurement', () => {
|
||||
it('with no shifts detects only peri-ovulatory', function () {
|
||||
const status = getSensiplanStatus({
|
||||
cycle: cycleWithoutAnyShifts,
|
||||
previousCycle: cycleWithoutTempShift
|
||||
})
|
||||
|
||||
expect(status).to.eql({
|
||||
assumeFertility: true,
|
||||
phases: {
|
||||
periOvulatory: {
|
||||
start: { date: '2018-06-01' },
|
||||
cycleDays: cycleWithoutAnyShifts
|
||||
}
|
||||
},
|
||||
})
|
||||
describe('with no previous higher measurement', () => {
|
||||
it('with no shifts detects only peri-ovulatory', function () {
|
||||
const status = getSensiplanStatus({
|
||||
cycle: cycleWithoutAnyShifts,
|
||||
previousCycle: cycleWithoutTempShift
|
||||
})
|
||||
|
||||
it('with shifts detects only peri-ovulatory and post-ovulatory', function () {
|
||||
const status = getSensiplanStatus({
|
||||
cycle: cycleWithTempAndMucusShift,
|
||||
previousCycle: cycleWithoutTempShift
|
||||
})
|
||||
expect(status).to.eql({
|
||||
assumeFertility: true,
|
||||
phases: {
|
||||
periOvulatory: {
|
||||
start: { date: '2018-06-01' },
|
||||
cycleDays: cycleWithoutAnyShifts
|
||||
}
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
expect(status.temperatureShift).to.be.an('object')
|
||||
expect(status.mucusShift).to.be.an('object')
|
||||
expect(status.assumeFertility).to.be.false()
|
||||
expect(Object.keys(status.phases).length).to.eql(2)
|
||||
expect(status.phases.periOvulatory).to.eql({
|
||||
start: { date: '2018-06-01' },
|
||||
end: { date: '2018-06-21', time: '18:00' },
|
||||
cycleDays: cycleWithTempAndMucusShift.filter(({date}) => date <= '2018-06-21')
|
||||
})
|
||||
expect(status.phases.postOvulatory).to.eql({
|
||||
start: {
|
||||
date: '2018-06-21',
|
||||
time: '18:00'
|
||||
},
|
||||
cycleDays: cycleWithTempAndMucusShift.filter(({date}) => date >= '2018-06-21')
|
||||
})
|
||||
it('with shifts detects only peri-ovulatory and post-ovulatory', function () {
|
||||
const status = getSensiplanStatus({
|
||||
cycle: cycleWithTempAndMucusShift,
|
||||
previousCycle: cycleWithoutTempShift
|
||||
})
|
||||
|
||||
expect(status.temperatureShift).to.be.an('object')
|
||||
expect(status.mucusShift).to.be.an('object')
|
||||
expect(status.assumeFertility).to.be.false()
|
||||
expect(Object.keys(status.phases).length).to.eql(2)
|
||||
expect(status.phases.periOvulatory).to.eql({
|
||||
start: { date: '2018-06-01' },
|
||||
end: { date: '2018-06-21', time: '18:00' },
|
||||
cycleDays: cycleWithTempAndMucusShift.filter(({date}) => date <= '2018-06-21')
|
||||
})
|
||||
expect(status.phases.postOvulatory).to.eql({
|
||||
start: {
|
||||
date: '2018-06-21',
|
||||
time: '18:00'
|
||||
},
|
||||
cycleDays: cycleWithTempAndMucusShift.filter(({date}) => date >= '2018-06-21')
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -117,4 +115,61 @@ describe('sympto', () => {
|
||||
|
||||
})
|
||||
})
|
||||
describe('when args are wrong', () => {
|
||||
it('throws when arg object is not in right format', () => {
|
||||
const wrongObject = { hello: 'world' }
|
||||
expect(() => getSensiplanStatus(wrongObject)).to.throw('cycle days as array')
|
||||
})
|
||||
it('throws if cycle array is empty', () => {
|
||||
expect(() => getSensiplanStatus({cycle: []})).to.throw('cycle days as array')
|
||||
})
|
||||
it('throws if cycle days are not in right format', () => {
|
||||
expect(() => getSensiplanStatus({
|
||||
cycle: [{
|
||||
hello: 'world',
|
||||
bleeding: { value: 0 }
|
||||
}],
|
||||
previousCycle: [{
|
||||
date: '1992-09-09',
|
||||
bleeding: { value: 0 }
|
||||
}]
|
||||
})).to.throw('correct format')
|
||||
expect(() => getSensiplanStatus({
|
||||
cycle: [{
|
||||
date: '2018-04-13',
|
||||
temperature: {value: '35'},
|
||||
bleeding: { value: 0 }
|
||||
}],
|
||||
previousCycle: [{
|
||||
date: '1992-09-09',
|
||||
bleeding: { value: 0 }
|
||||
}]
|
||||
})).to.throw('correct format')
|
||||
expect(() => getSensiplanStatus({
|
||||
cycle: [{
|
||||
date: '09-14-2017',
|
||||
bleeding: { value: 0 }
|
||||
}],
|
||||
previousCycle: [{
|
||||
date: '1992-09-09',
|
||||
bleeding: { value: 0 }
|
||||
}]
|
||||
})).to.throw('ISO')
|
||||
})
|
||||
it('throws if first cycle day does not have bleeding value', () => {
|
||||
expect(() => getSensiplanStatus({
|
||||
cycle: [{
|
||||
date: '2017-01-01',
|
||||
bleeding: {
|
||||
value: 'medium'
|
||||
}
|
||||
}],
|
||||
previousCycle: [
|
||||
{
|
||||
date: '2017-09-23',
|
||||
}
|
||||
]
|
||||
})).to.throw('start with bleeding')
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user