Expect cycle days, not numbers, in getTemperatureStatus
This commit is contained in:
@@ -3,53 +3,78 @@ import getTemperatureStatus from '../../lib/sympto/temperature'
|
||||
|
||||
const expect = chai.expect
|
||||
|
||||
describe.only('sympto', () => {
|
||||
function turnIntoCycleDayObject(value, fakeDate) {
|
||||
return {
|
||||
temperature : { value },
|
||||
date: fakeDate
|
||||
}
|
||||
}
|
||||
|
||||
describe('sympto', () => {
|
||||
describe('detect temperature shift', () => {
|
||||
describe('regular rule', () => {
|
||||
it('reports lower temperature status before shift', function () {
|
||||
const lowerTemps = [36.7, 36.57, 36.47, 36.49, 36.57]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(lowerTemps)
|
||||
expect(status).to.eql({ detected: false })
|
||||
})
|
||||
|
||||
it('detects temperature shift correctly', function () {
|
||||
const tempShift = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.8]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(tempShift)
|
||||
expect(status).to.eql({
|
||||
low: [36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
|
||||
ltl: 36.6,
|
||||
high: [36.8, 36.85, 36.8],
|
||||
detected: true,
|
||||
ltl: 36.6,
|
||||
firstHighMeasurementDay: {
|
||||
date: 7,
|
||||
temperature: { value: 36.8 }
|
||||
},
|
||||
evaluationCompleteDay: {
|
||||
date: 9,
|
||||
temperature: { value: 36.8 }
|
||||
},
|
||||
rule: 0
|
||||
})
|
||||
})
|
||||
|
||||
it('detects no temperature shift when there are no 6 low temps', function () {
|
||||
const tempShift = [36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.8]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(tempShift)
|
||||
expect(status).to.eql({ detected: false })
|
||||
})
|
||||
|
||||
it('detects no temperature shift if the shift is not high enough', function () {
|
||||
const tempShift = [36.57, 36.7, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.8]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(tempShift)
|
||||
expect(status).to.eql({ detected: false })
|
||||
})
|
||||
|
||||
it('detects missing temperature shift correctly', function () {
|
||||
const noTempShift = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.77]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(noTempShift)
|
||||
expect(status).to.eql({ detected: false })
|
||||
})
|
||||
|
||||
it('detects shift after an earlier one was invalid', function () {
|
||||
const temps = [36.4, 36.4, 36.4, 36.4, 36.4, 36.4, 36.6, 36.6, 36.4, 36.4, 36.7, 36.8, 36.9]
|
||||
.map(turnIntoCycleDayObject)
|
||||
|
||||
const status = getTemperatureStatus(temps)
|
||||
expect(status).to.eql({
|
||||
low: [36.4, 36.4, 36.6, 36.6, 36.4, 36.4],
|
||||
ltl: 36.6,
|
||||
high: [36.7, 36.8, 36.9],
|
||||
firstHighMeasurementDay: {
|
||||
date: 10,
|
||||
temperature: { value: 36.7 }
|
||||
},
|
||||
evaluationCompleteDay: {
|
||||
date: 12,
|
||||
temperature: { value: 36.9 }
|
||||
},
|
||||
detected: true,
|
||||
rule: 0
|
||||
})
|
||||
@@ -57,6 +82,7 @@ describe.only('sympto', () => {
|
||||
|
||||
it('detects 2 consecutive invalid shifts', function () {
|
||||
const temps = [36.4, 36.4, 36.4, 36.4, 36.4, 36.4, 36.6, 36.6, 36.4, 36.4, 36.6, 36.6, 36.7]
|
||||
.map(turnIntoCycleDayObject)
|
||||
|
||||
const status = getTemperatureStatus(temps)
|
||||
expect(status).to.eql({ detected: false })
|
||||
@@ -66,11 +92,19 @@ describe.only('sympto', () => {
|
||||
describe('1st exception rule', () => {
|
||||
it('detects temperature shift', function () {
|
||||
const firstException = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.77, 36.63]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(firstException)
|
||||
expect(status).to.eql({
|
||||
low: [36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
|
||||
ltl: 36.6,
|
||||
high: [36.8, 36.85, 36.75, 36.65],
|
||||
firstHighMeasurementDay: {
|
||||
date: 7,
|
||||
temperature: { value: 36.8 }
|
||||
},
|
||||
|
||||
evaluationCompleteDay: {
|
||||
date: 10,
|
||||
temperature : { value: 36.63 }
|
||||
},
|
||||
detected: true,
|
||||
rule: 1
|
||||
})
|
||||
@@ -78,38 +112,58 @@ describe.only('sympto', () => {
|
||||
|
||||
it('detects missing temperature shift correctly', function () {
|
||||
const firstExceptionNoShift = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.77, 36.57]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(firstExceptionNoShift)
|
||||
expect(status).to.eql({ detected: false })
|
||||
})
|
||||
|
||||
it('detects missing temperature shift with not enough high temps', function () {
|
||||
const temps = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.77]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(temps)
|
||||
expect(status).to.eql({ detected: false })
|
||||
|
||||
})
|
||||
|
||||
it('detects shift after an earlier one was invalid', function () {
|
||||
const temps = [36.4, 36.4, 36.4, 36.4, 36.4, 36.4, 36.6, 36.6, 36.4, 36.4, 36.7, 36.7, 36.7, 36.7]
|
||||
.map(turnIntoCycleDayObject)
|
||||
|
||||
const status = getTemperatureStatus(temps)
|
||||
expect(status).to.eql({
|
||||
low: [36.4, 36.4, 36.6, 36.6, 36.4, 36.4],
|
||||
ltl: 36.6,
|
||||
high: [36.7, 36.7, 36.7, 36.7],
|
||||
firstHighMeasurementDay: {
|
||||
date: 10,
|
||||
temperature: { value: 36.7 }
|
||||
},
|
||||
|
||||
evaluationCompleteDay: {
|
||||
date: 13,
|
||||
temperature : { value: 36.7 }
|
||||
},
|
||||
detected: true,
|
||||
rule: 1
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
describe('2nd exception rule', () => {
|
||||
it('detects temperature shift with exception temp eql ltl', function () {
|
||||
const secondException = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.6, 36.8]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(secondException)
|
||||
expect(status).to.eql({
|
||||
low: [36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
|
||||
ltl: 36.6,
|
||||
high: [36.8, 36.85, 36.6, 36.8],
|
||||
firstHighMeasurementDay: {
|
||||
date: 7,
|
||||
temperature: { value: 36.8 }
|
||||
},
|
||||
|
||||
evaluationCompleteDay: {
|
||||
date: 10,
|
||||
temperature : { value: 36.8 }
|
||||
},
|
||||
detected: true,
|
||||
rule: 2
|
||||
})
|
||||
@@ -117,39 +171,59 @@ describe.only('sympto', () => {
|
||||
|
||||
it('detects temperature shift with exception temp lower than ltl', function () {
|
||||
const secondException = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.4, 36.8]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(secondException)
|
||||
expect(status).to.eql({
|
||||
low: [36.55, 36.45, 36.5, 36.55, 36.6, 36.55],
|
||||
ltl: 36.6,
|
||||
high: [36.8, 36.85, 36.4, 36.8],
|
||||
firstHighMeasurementDay: {
|
||||
date: 7,
|
||||
temperature: { value: 36.8 }
|
||||
},
|
||||
|
||||
evaluationCompleteDay: {
|
||||
date: 10,
|
||||
temperature : { value: 36.8 }
|
||||
},
|
||||
detected: true,
|
||||
rule: 2
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
it('detects missing temperature shift correctly', function () {
|
||||
const temps = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.4, 36.77, 36.77]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(temps)
|
||||
expect(status).to.eql({ detected: false })
|
||||
})
|
||||
|
||||
it('detects missing temperature shift when not enough high temps', function () {
|
||||
const temps = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.4]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(temps)
|
||||
expect(status).to.eql({ detected: false })
|
||||
})
|
||||
|
||||
it('detects shift after an earlier one was invalid', function () {
|
||||
const temps = [36.7, 36.57, 36.47, 36.49, 36.57, 36.62, 36.55, 36.8, 36.86, 36.4, 36.77, 36.9, 36.9, 36.86, 37.04]
|
||||
.map(turnIntoCycleDayObject)
|
||||
const status = getTemperatureStatus(temps)
|
||||
expect(status).to.eql({
|
||||
low: [36.6, 36.55, 36.8, 36.85, 36.4, 36.75],
|
||||
ltl: 36.85,
|
||||
high: [36.9, 36.9, 36.85, 37.05],
|
||||
firstHighMeasurementDay: {
|
||||
date: 11,
|
||||
temperature: { value: 36.9 }
|
||||
},
|
||||
|
||||
evaluationCompleteDay: {
|
||||
date: 14,
|
||||
temperature : { value: 37.04 }
|
||||
},
|
||||
detected: true,
|
||||
rule: 2
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user