diff --git a/lib/sympto/mucus.js b/lib/sympto/mucus.js index cc788f87a53f3488050d0b8144eafe2c5b0d982d..12e23b8e96c6595af539a1ffea9de2ebbafd59d0 100644 --- a/lib/sympto/mucus.js +++ b/lib/sympto/mucus.js @@ -1,4 +1,5 @@ export default function (cycleDays, tempEvalEndIndex) { + const notDetected = { detected: false} const mucusDays = cycleDays.filter(day => day.mucus && !day.mucus.exclude) let currentBestQuality = 0 @@ -9,6 +10,9 @@ export default function (cycleDays, tempEvalEndIndex) { currentBestQuality = day.mucus.value } + // if mucus only changes from dry to nothing, it doesn't constitute a shift + if (currentBestQuality < 2) continue + if (day.mucus.value !== currentBestQuality) continue // the three following days must be of lower quality @@ -40,6 +44,6 @@ export default function (cycleDays, tempEvalEndIndex) { } } - return { detected: false } + return notDetected } diff --git a/test/sympto/mucus.spec.js b/test/sympto/mucus.spec.js index f8b83d2f8aabb6ba1a9ced2e7e0796943a6efae0..4aed5c4b08e7545b0670e7c800e80788e1c6d9a0 100644 --- a/test/sympto/mucus.spec.js +++ b/test/sympto/mucus.spec.js @@ -14,7 +14,7 @@ describe('sympto', () => { describe('detect mucus shift', () => { describe('regular rule', () => { it('detects mucus shift correctly', function () { - const values = [0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 2, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0] + const values = [0,0,0,1,1,2,2,2,3,3,3,2,2,0,1,1,1,1,0,0,0,0,0] .map(turnIntoCycleDayObject) const status = getMucusStatus(values, 12) expect(status).to.eql({ @@ -38,7 +38,10 @@ describe('sympto', () => { }) it('detects no mucus shift when there are no mucus values', function () { - const status = getMucusStatus(Array(10).fill({date: 1, temperature: { value: 35}})) + const status = getMucusStatus(Array(10).fill({ + date: 1, + temperature: { value: 35 } + })) expect(status).to.eql({ detected: false }) }) @@ -48,6 +51,30 @@ describe('sympto', () => { const status = getMucusStatus(values, 30) expect(status).to.eql({ detected: false }) }) + + it('detects no mucus shift when mucus only changes from dry to nothing', function () { + const values = [0,0,0,1,0,0,0,0,0,0,0] + .map(turnIntoCycleDayObject) + const status = getMucusStatus(values, 30) + expect(status).to.eql({ detected: false }) + }) + + it('ignores an early seeming shift from 0 to 1', function () { + const values = [0,0,0,1,0,0,0,2,3,3,3,2,2,0,1,1,1,1,0,0,0,0,0] + .map(turnIntoCycleDayObject) + const status = getMucusStatus(values, 12) + expect(status).to.eql({ + detected: true, + mucusPeak: { + date: 10, + mucus: { value: 3 } + }, + evaluationCompleteDay: { + date: 13, + mucus: { value: 0 } + } + }) + }) }) }) }) \ No newline at end of file