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
5cb4c01c
Commit
5cb4c01c
authored
6 years ago
by
emelko
Browse files
Options
Downloads
Patches
Plain Diff
First 9 tests for cervix temp combination
parent
0b856e29
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
test/sympto/cervix-temp-fixtures.js
+22
-25
22 additions, 25 deletions
test/sympto/cervix-temp-fixtures.js
test/sympto/cervix-temp.spec.js
+110
-86
110 additions, 86 deletions
test/sympto/cervix-temp.spec.js
with
132 additions
and
111 deletions
test/sympto/cervix-temp-fixtures.js
+
22
−
25
View file @
5cb4c01c
function
convertToSymptoFormat
(
val
)
{
const
sympto
=
{
date
:
val
.
date
}
if
(
val
.
temperature
)
sympto
.
temperature
=
{
...
...
@@ -37,11 +36,11 @@ export const idealCycle = [
].
map
(
convertToSymptoFormat
)
export
const
cycleWithFhmNoCervixShift
=
[
{
date
:
'
2018-08-01
'
,
bleeding
:
1
,
cervix
:
{
opening
:
1
,
firmness
:
1
}
},
{
date
:
'
2018-08-02
'
,
bleeding
:
2
,
cervix
:
{
opening
:
1
,
firmness
:
1
}
},
{
date
:
'
2018-08-03
'
,
temperature
:
36.6
,
bleeding
:
2
,
cervix
:
{
opening
:
2
,
firmness
:
1
}
},
{
date
:
'
2018-08-04
'
,
temperature
:
36.55
,
bleeding
:
1
,
cervix
:
{
opening
:
2
,
firmness
:
0
}
},
{
date
:
'
2018-08-05
'
,
temperature
:
36.6
,
cervix
:
{
opening
:
0
,
firmness
:
1
}
},
{
date
:
'
2018-08-01
'
,
bleeding
:
1
},
{
date
:
'
2018-08-02
'
,
bleeding
:
2
},
{
date
:
'
2018-08-03
'
,
temperature
:
36.6
,
bleeding
:
2
},
{
date
:
'
2018-08-04
'
,
temperature
:
36.55
,
bleeding
:
1
},
{
date
:
'
2018-08-05
'
,
temperature
:
36.6
},
{
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-08
'
,
temperature
:
36.6
,
cervix
:
{
opening
:
0
,
firmness
:
1
}
},
...
...
@@ -64,11 +63,11 @@ export const cycleWithoutFhmNoCervixShift = [
].
map
(
convertToSymptoFormat
)
export
const
cycleWithoutAnyShifts
=
[
{
date
:
'
2018-07-01
'
,
temperature
:
36.65
,
bleeding
:
-
1
,
cervix
:
{
opening
:
1
,
firmness
:
1
}
},
{
date
:
'
2018-07-02
'
,
temperature
:
36.45
,
cervix
:
{
opening
:
1
,
firmness
:
1
}
},
{
date
:
'
2018-07-03
'
,
temperature
:
36.65
,
cervix
:
{
opening
:
2
,
firmness
:
1
}
},
{
date
:
'
2018-07-04
'
,
temperature
:
36.65
,
cervix
:
{
opening
:
2
,
firmness
:
1
}
},
{
date
:
'
2018-07-05
'
,
temperature
:
36.65
,
cervix
:
{
opening
:
1
,
firmness
:
1
}
},
{
date
:
'
2018-07-01
'
,
temperature
:
36.65
,
bleeding
:
1
},
{
date
:
'
2018-07-02
'
,
temperature
:
36.45
},
{
date
:
'
2018-07-03
'
,
temperature
:
36.65
},
{
date
:
'
2018-07-04
'
,
temperature
:
36.65
},
{
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-07
'
,
temperature
:
36.65
,
cervix
:
{
opening
:
1
,
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-19
'
,
temperature
:
36.65
,
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.5
2
,
cervix
:
{
opening
:
0
,
firmness
:
0
}
},
{
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-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-10
'
,
temperature
:
36.30
,
cervix
:
{
opening
:
0
,
firmness
:
1
}
},
{
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-14
'
,
temperature
:
36.4
,
cervix
:
{
opening
:
1
,
firmness
:
1
}
},
{
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
}
}
].
map
(
convertToSymptoFormat
)
export
const
cervixShiftWaitsForTemp
Shift
=
[
export
const
tempShift3DaysAfterCervix
Shift
=
[
{
date
:
'
2018-05-08
'
,
bleeding
:
3
},
{
date
:
'
2018-05-09
'
,
bleeding
:
2
},
{
date
:
'
2018-05-10
'
,
bleeding
:
2
},
{
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-14
'
,
temperature
:
36.3
,
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-17
'
,
temperature
:
36.3
,
cervix
:
{
opening
:
0
,
firmness
:
0
}
},
{
date
:
'
2018-05-18
'
,
temperature
:
36.
5
5
,
cervix
:
{
opening
:
0
,
firmness
:
0
}
},
{
date
:
'
2018-05-18
'
,
temperature
:
36.
3
5
,
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-21
'
,
temperature
:
36.6
,
cervix
:
{
opening
:
0
,
firmness
:
0
}
},
...
...
@@ -168,12 +167,12 @@ export const cervixShiftWaitsForTempShift = [
{
date
:
'
2018-05-29
'
,
bleeding
:
2
}
].
map
(
convertToSymptoFormat
)
export
const
tempShiftWaitsForCervix
Shift
=
[
export
const
cervixShift2DaysAfterTemp
Shift
=
[
{
date
:
'
2018-04-05
'
,
bleeding
:
3
},
{
date
:
'
2018-04-06
'
,
bleeding
:
2
},
{
date
:
'
2018-04-07
'
,
bleeding
:
2
},
{
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-11
'
,
temperature
:
36.55
,
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-15
'
,
temperature
:
36.6
,
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-18
'
,
temperature
:
36.8
,
cervix
:
{
opening
:
1
,
firmness
:
0
}
},
{
date
:
'
2018-04-17
'
,
temperature
:
36.8
,
cervix
:
{
opening
:
0
,
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-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-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
)
export
const
noInfertilePhaseDetected
=
[
...
...
@@ -196,7 +194,7 @@ export const noInfertilePhaseDetected = [
{
date
:
'
2018-03-09
'
,
bleeding
:
3
},
{
date
:
'
2018-03-10
'
,
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-14
'
,
temperature
:
36.45
,
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
=
[
{
date
:
'
2018-08-01
'
,
bleeding
:
2
},
{
date
:
'
2018-08-03
'
,
bleeding
:
3
},
{
date
:
'
2018-08-05
'
,
bleeding
:
0
}
{
date
:
'
2018-08-03
'
,
bleeding
:
3
}
].
map
(
convertToSymptoFormat
)
This diff is collapsed.
Click to expand it.
test/sympto/cervix-temp.spec.js
+
110
−
86
View file @
5cb4c01c
...
...
@@ -6,8 +6,8 @@ import {
cycleWithoutFhm
,
cycleWithoutAnyShifts
,
tempAndCervixEvalEndOnSameDay
,
cervixShiftWaitsForTemp
Shift
,
tempShiftWaitsForCervix
Shift
,
tempShift3DaysAfterCervix
Shift
,
cervixShift2DaysAfterTemp
Shift
,
noInfertilePhaseDetected
,
fiveDayCycle
}
from
'
./cervix-temp-fixtures
'
...
...
@@ -17,8 +17,7 @@ const expect = chai.expect
describe
(
'
sympto
'
,
()
=>
{
describe
(
'
combining temperature and cervix tracking
'
,
()
=>
{
describe
(
'
with no previous higher temp measurement
'
,
()
=>
{
it
(
'
with no temp or cervix shifts detects only peri-ovulatory
'
,
function
()
{
it
(
'
with no temp or cervix shifts detects only peri-ovulatory
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithoutAnyShifts
,
previousCycle
:
cycleWithoutFhm
,
...
...
@@ -34,8 +33,7 @@ describe('sympto', () => {
}
})
})
it
(
'
with temp but no cervix shift detects only peri-ovulatory
'
,
function
()
{
it
(
'
with temp but no cervix shift detects only peri-ovulatory
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithFhmNoCervixShift
,
previousCycle
:
cycleWithoutFhm
,
...
...
@@ -45,85 +43,79 @@ describe('sympto', () => {
expect
(
status
).
to
.
eql
({
phases
:
{
periOvulatory
:
{
start
:
{
date
:
'
2018-0
6
-01
'
},
start
:
{
date
:
'
2018-0
8
-01
'
},
cycleDays
:
cycleWithFhmNoCervixShift
}
}
})
})
it
(
'
with temp and cervix shifts detects only peri- and post-ovulatory phases
'
,
function
()
{
it
(
'
with temp and cervix shifts detects only peri- and post-ovulatory phases
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
idealCycle
,
previousCycle
:
cycleWithoutFhm
,
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
(
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
({
start
:
{
date
:
'
2018-08-01
'
},
end
:
{
date
:
'
2018-08-1
1
'
,
time
:
'
18:00
'
},
end
:
{
date
:
'
2018-08-1
5
'
,
time
:
'
18:00
'
},
cycleDays
:
idealCycle
.
filter
(({
date
})
=>
date
<=
'
2018-08-1
1
'
)
.
filter
(({
date
})
=>
date
<=
'
2018-08-1
5
'
)
})
expect
(
status
.
phases
.
postOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-08-1
1
'
,
time
:
'
18:00
'
},
start
:
{
date
:
'
2018-08-1
5
'
,
time
:
'
18:00
'
},
cycleDays
:
idealCycle
.
filter
(({
date
})
=>
date
>=
'
2018-08-1
1
'
)
.
filter
(({
date
})
=>
date
>=
'
2018-08-1
5
'
)
})
})
})
describe
(
'
with previous higher temp measurement
'
,
()
=>
{
describe
(
'
with no shifts detects only peri-ovulatory
'
,
function
()
{
it
.
skip
(
'
according to 5-day rule
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
fiveDayCycle
,
previousCycle
:
cycleWithFhmNoCervixShift
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
1
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
fiveDayCycle
,
start
:
{
date
:
'
2018-08-01
'
},
end
:
{
date
:
'
2018-08-05
'
}
})
it
(
'
with no shifts detects only peri-ovulatory in 3-day long cycle according to 5-day rule
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
fiveDayCycle
,
previousCycle
:
idealCycle
,
secondarySymptom
:
'
cervix
'
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
1
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
fiveDayCycle
,
start
:
{
date
:
'
2018-08-01
'
},
end
:
{
date
:
'
2018-08-05
'
}
})
})
it
(
'
with no shifts detects pre- and peri-ovulatory phase according to 5-day-rule
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithoutAnyShifts
,
previousCycle
:
idealCycle
,
secondarySymptom
:
'
cervix
'
})
describe
(
'
with no shifts detects pre- and peri-ovulatory phase
'
,
()
=>
{
it
.
skip
(
'
according to 5-day-rule
'
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
cycleWithoutAnyShifts
,
previousCycle
:
cycleWithFhmNoCervixShift
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithoutAnyShifts
.
filter
(({
date
})
=>
date
<=
'
2018-07-05
'
),
start
:
{
date
:
'
2018-07-01
'
},
end
:
{
date
:
'
2018-07-05
'
}
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithoutAnyShifts
.
filter
(({
date
})
=>
date
>
'
2018-07-05
'
),
start
:
{
date
:
'
2018-07-06
'
}
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithoutAnyShifts
.
filter
(({
date
})
=>
date
<=
'
2018-07-05
'
),
start
:
{
date
:
'
2018-07-01
'
},
end
:
{
date
:
'
2018-07-05
'
}
})
expect
(
status
.
phases
.
periOvulatory
).
to
.
eql
({
cycleDays
:
cycleWithoutAnyShifts
.
filter
(({
date
})
=>
date
>=
'
2018-07-06
'
),
start
:
{
date
:
'
2018-07-06
'
}
})
})
it
(
'
with evaluation of temperature and cervix end on same day
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
tempAndCervixEvalEndOnSameDay
,
previousCycle
:
cycleWithFhmNoCervixShift
,
previousCycle
:
idealCycle
,
secondarySymptom
:
'
cervix
'
})
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
({
start
:
{
date
:
'
2018-06-01
'
},
end
:
{
date
:
'
2018-06-05
'
},
...
...
@@ -142,58 +134,90 @@ describe('sympto', () => {
start
:
{
date
:
'
2018-06-17
'
,
time
:
'
18:00
'
},
cycleDays
:
tempAndCervixEvalEndOnSameDay
.
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 cervix shift waits for temperature shift
'
,
()
=>
{
it
(
'
when temperature shift happens 3 days after cervix shift
'
,
()
=>
{
const
status
=
getSensiplanStatus
({
cycle
:
cervixShiftWaitsForTemp
Shift
,
previousCycle
:
cycleWithFhmNoCervixShift
,
cycle
:
tempShift3DaysAfterCervix
Shift
,
previousCycle
:
idealCycle
,
secondarySymptom
:
'
cervix
'
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
cervixShift
.
detected
).
to
.
be
.
true
()
})
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
'
)
it
(
'
when temperature shift waits for cervix shift
'
,
()
=>
{
expect
(
status
.
phases
.
preOvulatory
).
to
.
eql
({
start
:
{
date
:
'
2018-05-08
'
},
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
:
tempShiftWaitsForCervix
Shift
,
previousCycle
:
cycleWithFhmNoCervixShift
,
cycle
:
cervixShift2DaysAfterTemp
Shift
,
previousCycle
:
idealCycle
,
secondarySymptom
:
'
cervix
'
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
3
)
expect
(
status
.
cervixShift
.
detected
).
to
.
be
.
true
()
})
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
:
cycleWithFhmNoCervixShift
,
previousCycle
:
idealCycle
,
secondarySymptom
:
'
cervix
'
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
(
2
)
})
})
it
(
''
,
function
()
{
const
status
=
getSensiplanStatus
({
cycle
:
idealCycle
,
previousCycle
:
idealCycle
,
secondarySymptom
:
'
cervix
'
})
expect
(
Object
.
keys
(
status
.
phases
).
length
).
to
.
eql
()
expect
(
status
).
to
.
eql
({
phases
:
{
}
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
'
}
})
})
})
})
})
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