Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
Drip
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
backup
Drip
Commits
21d6e24f
Commit
21d6e24f
authored
6 years ago
by
emelko
Browse files
Options
Downloads
Patches
Plain Diff
Add more details to cervix-temp fixtures and to mucus-temp spec
parent
e81c30f7
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
test/sympto/cervix-temp-fixtures.js
+6
-11
6 additions, 11 deletions
test/sympto/cervix-temp-fixtures.js
test/sympto/mucus-temp.spec.js
+496
-501
496 additions, 501 deletions
test/sympto/mucus-temp.spec.js
with
502 additions
and
512 deletions
test/sympto/cervix-temp-fixtures.js
+
6
−
11
View file @
21d6e24f
...
...
@@ -37,17 +37,12 @@ export const cycleWithFhmNoCervixShift = [
{
date
:
'
2018-06-02
'
,
temperature
:
36.65
},
{
date
:
'
2018-06-04
'
,
temperature
:
36.6
},
{
date
:
'
2018-06-05
'
,
temperature
:
36.55
},
{
date
:
'
2018-06-06
'
,
temperature
:
36.7
},
{
date
:
'
2018-06-08
'
,
temperature
:
36.7
},
{
date
:
'
2018-06-09
'
,
temperature
:
36.7
},
{
date
:
'
2018-06-10
'
,
temperature
:
36.7
},
{
date
:
'
2018-06-11
'
,
temperature
:
36.7
},
{
date
:
'
2018-06-12
'
,
temperature
:
36.7
},
{
date
:
'
2018-06-13
'
,
temperature
:
36.8
},
{
date
:
'
2018-06-15
'
,
temperature
:
36.9
},
{
date
:
'
2018-06-16
'
,
temperature
:
36.9
},
{
date
:
'
2018-06-17
'
,
temperature
:
36.9
},
{
date
:
'
2018-06-18
'
,
temperature
:
36.9
}
{
date
:
'
2018-06-06
'
,
temperature
:
36.7
,
cervix
:
{
isClosed
:
true
,
isHard
:
true
}
},
{
date
:
'
2018-06-13
'
,
temperature
:
36.8
,
cervix
:
{
isClosed
:
false
,
isHard
:
false
}
},
{
date
:
'
2018-06-15
'
,
temperature
:
36.9
,
cervix
:
{
isClosed
:
false
,
isHard
:
false
}
},
{
date
:
'
2018-06-17
'
,
temperature
:
36.9
,
cervix
:
{
isClosed
:
false
,
isHard
:
false
}
},
{
date
:
'
2018-06-17
'
,
temperature
:
36.9
,
cervix
:
{
isClosed
:
false
,
isHard
:
false
}
},
{
date
:
'
2018-06-18
'
,
temperature
:
36.9
,
cervix
:
{
isClosed
:
false
,
isHard
:
false
}
}
].
map
(
convertToSymptoFormat
)
export
const
cycleWithoutFhm
=
[
...
...
This diff is collapsed.
Click to expand it.
test/sympto/mucus-temp.spec.js
+
496
−
501
View file @
21d6e24f
...
...
@@ -23,603 +23,598 @@ import {
const
expect
=
chai
.
expect
describe
(
'
sympto
'
,
()
=>
{
describe
(
'
with no previous higher measurement
'
,
()
=>
{
it
(
'
with no shifts detects only peri-ovulatory
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithoutAnyShifts
,
previousCycle
:
cycleWithoutFhm
describe
(
'
combining temperature and mucus tracking
'
,
()
=>
{
describe
(
'
with no previous higher temp measurement
'
,
()
=>
{
it
(
'
with no shifts detects only peri-ovulatory
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithoutAnyShifts
,
previousCycle
:
cycleWithoutFhm
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
cycleWithoutAnyShifts
})
})
expect
(
status
).
to
.
eql
({
it
(
'
with temp and mucus shifts detects only peri-ovulatory and post-ovulatory
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
cycleWithoutFhm
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
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
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-21
'
)
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
phases
:
{
periOvulatory
:
{
start
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
cycleWithoutAnyShifts
}
},
})
})
it
(
'
with shifts detects only peri-ovulatory and post-ovulatory
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
cycleWithoutFhm
describe
(
'
with previous higher measurement
'
,
()
=>
{
describe
(
'
with no shifts detects pre-ovulatory phase
'
,
function
()
{
it
(
'
according to 5-day-rule
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
fiveDayCycle
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
1
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
fiveDayCycle
,
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
}
})
})
})
describe
(
'
with no shifts detects pre- and peri-ovulatory phase
'
,
()
=>
{
it
(
'
according to 5-day-rule
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithTempAndNoMucusShift
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithTempAndNoMucusShift
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
),
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
}
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithTempAndNoMucusShift
.
filter
(({
date
})
=>
date
>
'
2018-06-05
'
),
start
:
{
date
:
'
2018-06-06
'
}
})
})
it
(
'
according to 5-day-rule with shortened pre-phase
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithEarlyMucus
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
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
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-21
'
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
[
cycleWithEarlyMucus
[
0
]],
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-01
'
}
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithEarlyMucus
.
slice
(
1
),
start
:
{
date
:
'
2018-06-02
'
}
})
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
describe
(
'
with shifts detects pre- and peri-ovulatory phase
'
,
function
()
{
it
(
'
according to 5-day-rule
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
),
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
}
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
),
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
}
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
),
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
}
})
})
})
})
})
describe
(
'
with previous higher measurement
'
,
()
=>
{
describe
(
'
with no shifts detects pre-ovulatory phase
'
,
function
()
{
it
(
'
according to 5-day-rule
'
,
function
()
{
describe
(
'
combining first higher measurment and mucus peak
'
,
()
=>
{
it
(
'
with fhM + mucus peak on same day finds start of postovu phase
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
fiveDayCycle
,
cycle
:
mucusPeakAndFhmOnSameDay
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
1
)
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
fiveDayCycle
,
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
}
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
mucusPeakAndFhmOnSameDay
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakAndFhmOnSameDay
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakAndFhmOnSameDay
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
})
describe
(
'
with no shifts detects pre- and peri-ovulatory phase
'
,
()
=>
{
it
(
'
according to 5-day-rule
'
,
function
()
{
it
(
'
with fhM 2 days before mucus peak waits for end of mucus eval
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithTempAndNoMucusShift
,
cycle
:
fhmTwoDaysBeforeMucusPeak
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithTempAndNoMucusShift
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
),
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
}
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
fhmTwoDaysBeforeMucusPeak
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithTempAndNoMucusShift
.
filter
(({
date
})
=>
date
>
'
2018-06-05
'
),
start
:
{
date
:
'
2018-06-06
'
}
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-26
'
,
time
:
'
18:00
'
},
cycleDays
:
fhmTwoDaysBeforeMucusPeak
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-26
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-26
'
,
time
:
'
18:00
'
},
cycleDays
:
fhmTwoDaysBeforeMucusPeak
.
filter
(({
date
})
=>
date
>=
'
2018-06-26
'
)
})
})
it
(
'
according to 5-day-rule with shortened pre-phase
'
,
function
()
{
it
(
'
another example for mucus peak before temp shift
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithEarlyMucus
,
cycle
:
mucusPeakSlightlyBeforeTempShift
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
[
cycleWithEarlyMucus
[
0
]],
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-01
'
}
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
mucusPeakSlightlyBeforeTempShift
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithEarlyMucus
.
slice
(
1
),
start
:
{
date
:
'
2018-06-02
'
}
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-17
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakSlightlyBeforeTempShift
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-17
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-17
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakSlightlyBeforeTempShift
.
filter
(({
date
})
=>
date
>=
'
2018-06-17
'
)
})
})
})
describe
(
'
with shifts detects pre- and peri-ovulatory phase
'
,
function
()
{
it
(
'
according to 5-day-rule
'
,
function
()
{
it
(
'
with another mucus peak 5 days after fHM ignores it
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
cycle
:
mucusPeak5DaysAfterFhm
,
previousCycle
:
cycleWithFhm
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
),
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
}
end
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
mucusPeak5DaysAfterFhm
.
filter
(({
date
})
=>
date
<=
'
2018-06-01
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
),
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
}
start
:
{
date
:
'
2018-06-02
'
},
end
:
{
date
:
'
2018-06-22
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeak5DaysAfterFhm
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-01
'
&&
date
<=
'
2018-06-22
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
),
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
}
start
:
{
date
:
'
2018-06-22
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeak5DaysAfterFhm
.
filter
(({
date
})
=>
date
>=
'
2018-06-22
'
)
})
})
})
})
describe
(
'
combining first higher measurment and mucus peak
'
,
()
=>
{
it
(
'
with fhM + mucus peak on same day finds start of postovu phase
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
mucusPeakAndFhmOnSameDay
,
previousCycle
:
cycleWithFhm
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
mucusPeakAndFhmOnSameDay
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakAndFhmOnSameDay
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakAndFhmOnSameDay
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
it
(
'
with fhM 2 days before mucus peak waits for end of mucus eval
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
fhmTwoDaysBeforeMucusPeak
,
previousCycle
:
cycleWithFhm
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
fhmTwoDaysBeforeMucusPeak
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-26
'
,
time
:
'
18:00
'
},
cycleDays
:
fhmTwoDaysBeforeMucusPeak
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-26
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-26
'
,
time
:
'
18:00
'
},
cycleDays
:
fhmTwoDaysBeforeMucusPeak
.
filter
(({
date
})
=>
date
>=
'
2018-06-26
'
)
})
})
it
(
'
another example for mucus peak before temp shift
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
mucusPeakSlightlyBeforeTempShift
,
previousCycle
:
cycleWithFhm
})
it
(
'
with mucus peak 2 days before fhM waits for end of temp eval
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
mucusPeakTwoDaysBeforeFhm
,
previousCycle
:
cycleWithFhm
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
mucusPeakSlightlyBeforeTempShift
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-17
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakSlightlyBeforeTempShift
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-17
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-17
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakSlightlyBeforeTempShift
.
filter
(({
date
})
=>
date
>=
'
2018-06-17
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-04
'
},
cycleDays
:
mucusPeakTwoDaysBeforeFhm
.
filter
(({
date
})
=>
date
<=
'
2018-06-04
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-05
'
},
end
:
{
date
:
'
2018-07-03
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakTwoDaysBeforeFhm
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-04
'
&&
date
<=
'
2018-07-03
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-07-03
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakTwoDaysBeforeFhm
.
filter
(({
date
})
=>
date
>=
'
2018-07-03
'
)
})
})
})
it
(
'
with
another
mucus peak 5 days
after
f
H
M
ignores it
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
mucusPeak
5DaysAfter
Fhm
,
previousCycle
:
cycleWithFhm
})
it
(
'
with mucus peak 5 days
before
f
h
M
waits for end of temp eval
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
fhm
5DaysAfter
MucusPeak
,
previousCycle
:
cycleWithFhm
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
mucusPeak5DaysAfterFhm
.
filter
(({
date
})
=>
date
<=
'
2018-06-01
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-02
'
},
end
:
{
date
:
'
2018-06-22
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeak5DaysAfterFhm
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-01
'
&&
date
<=
'
2018-06-22
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-22
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeak5DaysAfterFhm
.
filter
(({
date
})
=>
date
>=
'
2018-06-22
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
fhm5DaysAfterMucusPeak
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
fhm5DaysAfterMucusPeak
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
fhm5DaysAfterMucusPeak
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
})
it
(
'
with mucus peak 2 days before fhM waits for end of temp eval
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
mucusPeakTwoDaysBeforeFhm
,
previousCycle
:
cycleWithFhm
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
describe
(
'
applying the minus-8 rule
'
,
()
=>
{
it
(
'
shortens the pre-ovu phase if there is a previous <13 fhm
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay15
,
earlierCycles
:
[
fhmOnDay12
,
...
Array
(
10
).
fill
(
fhmOnDay15
)]
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-04
'
},
cycleDays
:
mucusPeakTwoDaysBeforeFhm
.
filter
(({
date
})
=>
date
<=
'
2018-06-04
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-05
'
},
end
:
{
date
:
'
2018-07-03
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakTwoDaysBeforeFhm
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-04
'
&&
date
<=
'
2018-07-03
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-07-03
'
,
time
:
'
18:00
'
},
cycleDays
:
mucusPeakTwoDaysBeforeFhm
.
filter
(({
date
})
=>
date
>=
'
2018-07-03
'
)
})
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
it
(
'
with mucus peak 5 days before fhM waits for end of temp eval
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
fhm5DaysAfterMucusPeak
,
previousCycle
:
cycleWithFhm
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-04
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-04
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-05
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-04
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
it
(
'
shortens pre-ovu phase with prev <13 fhm even with <12 cycles
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay12
,
earlierCycles
:
Array
(
10
).
fill
(
fhmOnDay12
)
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
fhm5DaysAfterMucusPeak
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
fhm5DaysAfterMucusPeak
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
fhm5DaysAfterMucusPeak
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
describe
(
'
applying the minus-8 rule
'
,
()
=>
{
it
(
'
shortens the pre-ovu phase if there is a previous <13 fhm
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay15
,
earlierCycles
:
[
fhmOnDay12
,
...
Array
(
10
).
fill
(
fhmOnDay15
)]
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-04
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-04
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-05
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-04
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
it
(
'
shortens the pre-ovu phase if mucus occurs
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithEarlyMucus
,
previousCycle
:
fhmOnDay12
,
earlierCycles
:
Array
(
10
).
fill
(
fhmOnDay12
)
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-04
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-04
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-05
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-04
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
it
(
'
shortens pre-ovu phase with prev <13 fhm even with <12 cycles
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay12
,
earlierCycles
:
Array
(
10
).
fill
(
fhmOnDay12
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
cycleWithEarlyMucus
.
filter
(({
date
})
=>
date
<=
'
2018-06-01
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-02
'
},
cycleDays
:
cycleWithEarlyMucus
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-01
'
})
})
})
expect
(
status
.
temperatureShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
status
.
mucusShift
).
to
.
be
.
an
(
'
object
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-04
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-04
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-05
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-04
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
it
(
'
shortens the pre-ovu phase if mucus occurs
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithEarlyMucus
,
previousCycle
:
fhmOnDay12
,
earlierCycles
:
Array
(
10
).
fill
(
fhmOnDay12
)
})
it
(
'
shortens the pre-ovu phase if mucus occurs even on the first day
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithMucusOnFirstDay
,
previousCycle
:
fhmOnDay12
,
earlierCycles
:
Array
(
10
).
fill
(
fhmOnDay12
)
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
cycleWithEarlyMucus
.
filter
(({
date
})
=>
date
<=
'
2018-06-01
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-02
'
},
cycleDays
:
cycleWithEarlyMucus
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-01
'
})
})
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
1
)
it
(
'
shortens the pre-ovu phase if mucus occurs even on the first day
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithMucusOnFirstDay
,
previousCycle
:
fhmOnDay12
,
earlierCycles
:
Array
(
10
).
fill
(
fhmOnDay12
)
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
cycleWithMucusOnFirstDay
})
})
it
(
'
lengthens the pre-ovu phase if >= 12 cycles with fhm > 13
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay15
,
earlierCycles
:
Array
(
11
).
fill
(
fhmOnDay15
)
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
1
)
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
cycleDays
:
cycleWithMucusOnFirstDay
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-07
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-07
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-08
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-07
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
})
it
(
'
lengthen
s
the pre-ovu phase if
>=
12 cycles
with fhm > 13
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay15
,
earlierCycles
:
Array
(
1
1
).
fill
(
fhmOnDay15
)
})
it
(
'
does not
lengthen the pre-ovu phase if
<
12 cycles
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay15
,
earlierCycles
:
Array
(
1
0
).
fill
(
fhmOnDay15
)
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-07
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-07
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-08
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-07
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
})
it
(
'
does not
lengthen the
pre-ovu phase if
< 12
cycle
s
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
fhmOnDay15
,
earlierCycles
:
Array
(
1
0
).
fill
(
fhmOnDay15
)
})
it
(
'
does not
detect any
pre-ovu phase if
prev
cycle
had no fhm
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
cycleWithoutFhm
,
earlierCycles
:
[...
Array
(
1
2
).
fill
(
fhmOnDay15
)
]
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
<=
'
2018-06-05
'
)
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-06
'
},
end
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>
'
2018-06-05
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
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
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>=
'
2018-06-01
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
})
})
})
it
(
'
does not detect any pre-ovu phase if prev cycle had no fhm
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
longAndComplicatedCycle
,
previousCycle
:
cycleWithoutFhm
,
earlierCycles
:
[...
Array
(
12
).
fill
(
fhmOnDay15
)]
})
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
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
{
return
date
>=
'
2018-06-01
'
&&
date
<=
'
2018-06-21
'
})
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-06-21
'
,
time
:
'
18:00
'
},
cycleDays
:
longAndComplicatedCycle
.
filter
(({
date
})
=>
date
>=
'
2018-06-21
'
)
describe
(
'
when args are wrong
'
,
()
=>
{
it
(
'
throws when arg object is not in right format
'
,
()
=>
{
const
wrongObject
=
{
hello
:
'
world
'
}
expect
(()
=>
getSensiplanStatus
(
wrongObject
)).
to
.
throw
(
AssertionError
)
})
it
(
'
throws if cycle array is empty
'
,
()
=>
{
expect
(()
=>
getSensiplanStatus
({
cycle
:
[]})).
to
.
throw
(
AssertionError
)
})
it
(
'
throws if cycle days are not in right format
'
,
()
=>
{
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
hello
:
'
world
'
,
bleeding
:
{
value
:
0
}
}],
earlierCycles
:
[[{
date
:
'
1992-09-09
'
,
bleeding
:
{
value
:
0
}
}]]
})).
to
.
throw
(
AssertionError
)
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
date
:
'
2018-04-13
'
,
temperature
:
{
value
:
'
35
'
},
bleeding
:
{
value
:
0
}
}],
earlierCycles
:
[[{
date
:
'
1992-09-09
'
,
bleeding
:
{
value
:
0
}
}]]
})).
to
.
throw
(
AssertionError
)
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
date
:
'
09-14-2017
'
,
bleeding
:
{
value
:
0
}
}],
earlierCycles
:
[[{
date
:
'
1992-09-09
'
,
bleeding
:
{
value
:
0
}
}]]
})).
to
.
throw
(
AssertionError
)
})
it
(
'
throws if first cycle day does not have bleeding value
'
,
()
=>
{
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
date
:
'
2017-01-01
'
,
bleeding
:
{
value
:
'
medium
'
}
}],
earlierCycles
:
[[
{
date
:
'
2017-09-23
'
,
}
]]
})).
to
.
throw
(
AssertionError
)
})
})
})
describe
(
'
when args are wrong
'
,
()
=>
{
it
(
'
throws when arg object is not in right format
'
,
()
=>
{
const
wrongObject
=
{
hello
:
'
world
'
}
expect
(()
=>
getSensiplanStatus
(
wrongObject
)).
to
.
throw
(
AssertionError
)
})
it
(
'
throws if cycle array is empty
'
,
()
=>
{
expect
(()
=>
getSensiplanStatus
({
cycle
:
[]})).
to
.
throw
(
AssertionError
)
})
it
(
'
throws if cycle days are not in right format
'
,
()
=>
{
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
hello
:
'
world
'
,
bleeding
:
{
value
:
0
}
}],
earlierCycles
:
[[{
date
:
'
1992-09-09
'
,
bleeding
:
{
value
:
0
}
}]]
})).
to
.
throw
(
AssertionError
)
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
date
:
'
2018-04-13
'
,
temperature
:
{
value
:
'
35
'
},
bleeding
:
{
value
:
0
}
}],
earlierCycles
:
[[{
date
:
'
1992-09-09
'
,
bleeding
:
{
value
:
0
}
}]]
})).
to
.
throw
(
AssertionError
)
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
date
:
'
09-14-2017
'
,
bleeding
:
{
value
:
0
}
}],
earlierCycles
:
[[{
date
:
'
1992-09-09
'
,
bleeding
:
{
value
:
0
}
}]]
})).
to
.
throw
(
AssertionError
)
})
it
(
'
throws if first cycle day does not have bleeding value
'
,
()
=>
{
expect
(()
=>
getSensiplanStatus
({
cycle
:
[{
date
:
'
2017-01-01
'
,
bleeding
:
{
value
:
'
medium
'
}
}],
earlierCycles
:
[[
{
date
:
'
2017-09-23
'
,
}
]]
})).
to
.
throw
(
AssertionError
)
})
})
})
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment