From 1c2c45f8c67a224ec5f886f26fdc8bb45ce11e92 Mon Sep 17 00:00:00 2001
From: emelko <ml.kochsiek@mailbox.org>
Date: Wed, 5 Sep 2018 15:27:04 +0200
Subject: [PATCH] Changes cervix value to check for opening and firmness value

---
 lib/sympto/cervix.js                |   4 +-
 lib/sympto/index.js                 |   7 +-
 test/sympto/cervix-temp-fixtures.js | 275 ++++++++++++++--------------
 3 files changed, 148 insertions(+), 138 deletions(-)

diff --git a/lib/sympto/cervix.js b/lib/sympto/cervix.js
index 01abe367..2e0dff42 100644
--- a/lib/sympto/cervix.js
+++ b/lib/sympto/cervix.js
@@ -36,6 +36,6 @@ export default function (cycleDays, tempEvalEndIndex) {
   return { detected: false }
 }
 
-function isClosedAndHard (cervixValue) {
-  return cervixValue.isClosed && cervixValue.isHard
+function isClosedAndHard (cervix) {
+  return cervix.value.opening === 0 && cervix.value.firmness === 0
 }
diff --git a/lib/sympto/index.js b/lib/sympto/index.js
index ccfbf323..c50fcbb2 100644
--- a/lib/sympto/index.js
+++ b/lib/sympto/index.js
@@ -112,8 +112,11 @@ function throwIfArgsAreNotInRequiredFormat(cycles) {
       if (day.mucus) assert.equal(typeof day.mucus.value, 'number')
       if (day.mucus) assert.ok(day.mucus.value >= 0)
       if (day.mucus) assert.ok(day.mucus.value < 5)
-      if (day.cervix) assert.equal(typeof day.cervix.isClosed, 'boolean')
-      if (day.cervix) assert.equal(typeof day.cervix.isHard, 'boolean')
+      if (day.cervix) assert.equal(typeof day.cervix.value, 'object')
+      if (day.cervix) assert.ok(day.cervix.value.opening >= 0, "cervix opening value must be 0 or bigger")
+      if (day.cervix) assert.ok(day.cervix.value.opening <= 2, "cervix opening value must be 2 or smaller")
+      if (day.cervix) assert.ok(day.cervix.value.firmness >= 0, "cervix firmness value must be 0 or bigger")
+      if (day.cervix) assert.ok(day.cervix.value.firmness <= 1, "cervix firmness value must be 1 or smaller")
     })
   })
 }
diff --git a/test/sympto/cervix-temp-fixtures.js b/test/sympto/cervix-temp-fixtures.js
index 66239e5d..d5b85a5f 100644
--- a/test/sympto/cervix-temp-fixtures.js
+++ b/test/sympto/cervix-temp-fixtures.js
@@ -17,72 +17,79 @@ function convertToSymptoFormat(val) {
 }
 
 export const idealCycle = [
-  { date: '2018-08-01', bleeding: 1, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-08-02', bleeding: 2, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-08-03', temperature: 36.6, bleeding: 2, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-08-04', temperature: 36.55, bleeding: 1, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-08-05', temperature: 36.6, bleeding: null, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-08-06', temperature: 36.65, bleeding: null, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-08-07', temperature: 36.7, bleeding: null, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-08-08', temperature: 36.6, bleeding: null, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-08-09', temperature: 36.8, bleeding: null, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-08-10', temperature: 36.75, bleeding: null, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-08-11', temperature: 36.9, bleeding: null, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-08-12', temperature: 36.95, bleeding: null, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-08-13', temperature: 36.95, bleeding: null, cervix: { isClosed: true, isHard: true } }
+  { 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-06', temperature: 36.65, cervix: { opening: 0, firmness: 1 } },
+  { date: '2018-08-07', temperature: 36.71, cervix: { opening: 1, firmness: 0 } },
+  { date: '2018-08-08', temperature: 36.69, cervix: { opening: 1, firmness: 0 } },
+  { date: '2018-08-09', temperature: 36.64, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-08-10', temperature: 36.66, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-08-11', temperature: 36.61, cervix: { opening: 1, firmness: 0 } },
+  { date: '2018-08-12', temperature: 36.6, cervix: { opening: 0, firmness: 1 } },
+  { date: '2018-08-13', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-08-14', temperature: 36.85, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-08-15', temperature: 36.9, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-08-16', temperature: 36.95, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-08-17', temperature: 36.95, cervix: { opening: 0, firmness: 0 } }
 ].map(convertToSymptoFormat)
 
 export const cycleWithFhmNoCervixShift = [
-  { date: '2018-06-01', temperature: 36.6, bleeding: 2 },
-  { 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, 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 } }
+  { 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-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 } },
+  { date: '2018-08-09', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-08-10', temperature: 36.85, cervix: { opening: 2, firmness: 0 } },
+  { date: '2018-08-11', temperature: 36.9, cervix: { opening: 1, firmness: 0 } },
+  { date: '2018-08-12', temperature: 36.95, cervix: { opening: 0, firmness: 1 } },
+  { date: '2018-08-13', temperature: 36.95, cervix: { opening: 0, firmness: 0 } }
 ].map(convertToSymptoFormat)
 
-export const cycleWithoutFhm = [
+export const cycleWithoutFhmNoCervixShift = [
   { date: '2018-06-02', temperature: 36.6, bleeding: 2 },
   { date: '2018-06-03', temperature: 36.65 },
   { date: '2018-06-04', temperature: 36.6 },
   { date: '2018-06-05', temperature: 36.55 },
-  { date: '2018-06-06', temperature: 36.7, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-09', temperature: 36.8, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-06-10', temperature: 36.9, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-06-13', temperature: 36.9, cervix: { isClosed: false, isHard: false } }
+  { date: '2018-06-06', temperature: 36.7, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-09', temperature: 36.8 },
+  { date: '2018-06-10', temperature: 36.9, cervix: { opening: 2, firmness: 0 } },
+  { date: '2018-06-13', temperature: 36.9, cervix: { opening: 1, firmness: 1 } }
 ].map(convertToSymptoFormat)
 
 export const cycleWithoutAnyShifts = [
-  { date: '2018-07-01', temperature: 36.65, bleeding: 2, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-02', temperature: 36.45, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-03', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-04', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-05', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-06', temperature: 36.85, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-07-07', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-08', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-09', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-10', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-11', temperature: 36.35, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-07-12', temperature: 36.65, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-07-13', temperature: 36.25, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-14', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-15', temperature: 36.65, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-07-16', temperature: 36.15, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-17', temperature: 36.65, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-07-18', temperature: 36.25, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-19', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-20', temperature: 36.45, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-21', temperature: 36.5, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-07-22', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-23', temperature: 36.75, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-24', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-07-25', temperature: 36.65, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-07-26', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
+  { 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-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 } },
+  { date: '2018-07-09', temperature: 36.65, cervix: { opening: 2, firmness: 1 } },
+  { date: '2018-07-10', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-07-11', temperature: 36.35, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-07-12', temperature: 36.65, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-07-13', temperature: 36.25, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-07-14', temperature: 36.65, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-07-15', temperature: 36.65, cervix: { opening: 2, firmness: 0 } },
+  { date: '2018-07-16', temperature: 36.15, cervix: { opening: 2, firmness: 1 } },
+  { date: '2018-07-17', temperature: 36.65, cervix: { opening: 0, firmness: 1 } },
+  { 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-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 } },
+  { date: '2018-07-25', temperature: 36.65, cervix: { opening: 0, firmness: 1 } },
+  { date: '2018-07-26', temperature: 36.65, cervix: { opening: 2, firmness: 1 } },
 ].map(convertToSymptoFormat)
 
 export const longAndComplicatedCycle = [
@@ -90,22 +97,22 @@ export const longAndComplicatedCycle = [
   { 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, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-09', temperature: 36.5, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-10', temperature: 36.4, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-13', temperature: 36.45, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-14', temperature: 36.5, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-15', temperature: 36.55, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-16', temperature: 36.7, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-17', temperature: 36.65, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-18', temperature: 36.75, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-19', temperature: 36.8, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-20', temperature: 36.85, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-21', temperature: 36.8, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-22', temperature: 36.9, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-25', temperature: 36.9, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-26', temperature: 36.8, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-27', temperature: 36.9, cervix: { isClosed: true, isHard: true } }
+  { date: '2018-06-06', temperature: 36.7, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-09', temperature: 36.5, cervix: { opening: 2, firmness: 1 } },
+  { date: '2018-06-10', temperature: 36.4, cervix: { opening: 2, firmness: 1 } },
+  { date: '2018-06-13', temperature: 36.45, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-06-14', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-06-15', temperature: 36.55, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-06-16', temperature: 36.7, cervix: { opening: 2, firmness: 1 } },
+  { date: '2018-06-17', temperature: 36.65, cervix: { opening: 2, firmness: 1 } },
+  { date: '2018-06-18', temperature: 36.75, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-06-19', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-20', temperature: 36.85, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-06-21', temperature: 36.8, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-06-22', temperature: 36.9, cervix: { opening: 2, firmness: 1 } },
+  { date: '2018-06-25', temperature: 36.9, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-26', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-27', temperature: 36.9, cervix: { opening: 0, firmness: 0 } }
 ].map(convertToSymptoFormat)
 
 export const tempAndCervixEvalEndOnSameDay = [
@@ -115,25 +122,25 @@ export const tempAndCervixEvalEndOnSameDay = [
   { date: '2018-06-04', bleeding: 2 },
   { date: '2018-06-05', bleeding: 1 },
   { date: '2018-06-06', bleeding: 1 },
-  { date: '2018-06-07', cervix: { isClosed: false, isHard: true } },
-  { date: '2018-06-08', temperature: 36.45, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-06-09', temperature: 36.5, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-10', temperature: 36.30, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-06-11', temperature: 36.30, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-06-12', temperature: 36.4, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-13', temperature: 36.3, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-14', temperature: 36.4, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-06-15', temperature: 36.8, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-16', temperature: 36.8, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-17', temperature: 36.9, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-18', temperature: 36.9, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-19', temperature: 36.95, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-20', temperature: 37.0, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-21', temperature: 37.0, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-22', temperature: 37.0, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-23', cervix: { isClosed: true, isHard: true } },
-  { date: '2018-06-24', cervix: { isClosed: true, isHard: true }},
-  { date: '2018-06-25', cervix: { isClosed: false, isHard: false } }
+  { date: '2018-06-07', cervix: { opening: 2, firmness: 0 } },
+  { date: '2018-06-08', temperature: 36.45, cervix: { opening: 0, firmness: 1 } },
+  { 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-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 } },
+  { date: '2018-06-16', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-17', temperature: 36.9, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-18', temperature: 36.9, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-19', temperature: 36.95, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-20', temperature: 37.0, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-21', temperature: 37.0, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-22', temperature: 37.0, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-23', cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-06-24', cervix: { opening: 0, firmness: 0 }},
+  { date: '2018-06-25', cervix: { opening: 1, firmness: 1 } }
 ].map(convertToSymptoFormat)
 
 export const cervixShiftWaitsForTempShift = [
@@ -141,23 +148,23 @@ export const cervixShiftWaitsForTempShift = [
   { 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: { isClosed: false, isHard: false } },
-  { date: '2018-05-13', temperature: 36.4, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-05-14', temperature: 36.3, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-05-15', temperature: 36.2, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-05-16', temperature: 36.3, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-17', temperature: 36.3, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-18', temperature: 36.55, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-19', temperature: 36.65, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-20', temperature: 36.7, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-21', temperature: 36.6, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-22', temperature: 36.85, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-23', temperature: 36.8, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-24', temperature: 36.85, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-25', temperature: 36.95, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-05-26', temperature: 36.85, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-05-27', temperature: 36.8, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-05-28', temperature: 36.6, cervix: { isClosed: false, isHard: true } },
+  { date: '2018-05-12', temperature: 36.3, cervix: { opening: 1, firmness: 1 } },
+  { 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.55, 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 } },
+  { date: '2018-05-22', temperature: 36.85, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-05-23', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-05-24', temperature: 36.85, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-05-25', temperature: 36.95, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-05-26', temperature: 36.85, cervix: { opening: 0, firmness: 1 } },
+  { date: '2018-05-27', temperature: 36.8, cervix: { opening: 1, firmness: 0 } },
+  { date: '2018-05-28', temperature: 36.6, cervix: { opening: 1, firmness: 0 } },
   { date: '2018-05-29', bleeding: 2 }
 ].map(convertToSymptoFormat)
 
@@ -166,22 +173,22 @@ export const tempShiftWaitsForCervixShift = [
   { 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: { isClosed: false, isHard: false } },
-  { date: '2018-04-10', temperature: 36.5, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-11', temperature: 36.55, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-12', temperature: 36.5, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-13', temperature: 36.35, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-14', temperature: 36.35, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-15', temperature: 36.6, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-16', temperature: 36.8, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-17', cervix: { isClosed: false, isHard: false } },
-  { date: '2018-04-18', temperature: 36.8, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-04-19', temperature: 36.85, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-04-20', temperature: 37.0, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-04-21', temperature: 36.9, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-04-22', temperature: 36.9, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-04-23', temperature: 37.1, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-04-24', temperature: 36.75, cervix: { isClosed: false, isHard: false } }
+  { date: '2018-04-09', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
+  { 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 } },
+  { date: '2018-04-13', temperature: 36.35, cervix: { opening: 1, firmness: 1 } },
+  { 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-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 } }
 ].map(convertToSymptoFormat)
 
 export const noInfertilePhaseDetected = [
@@ -189,18 +196,18 @@ 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: { isClosed: true, isHard: false } },
-  { date: '2018-03-13', temperature: 36.5, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-03-14', temperature: 36.45, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-03-15', temperature: 36.4, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-03-16', temperature: 36.2, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-03-17', temperature: 36.5, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-03-18', temperature: 36.6, cervix: { isClosed: false, isHard: false } },
-  { date: '2018-03-19', temperature: 36.35, cervix: { isClosed: false, isHard: true } },
-  { date: '2018-03-20', temperature: 36.8, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-03-21', temperature: 36.7, cervix: { isClosed: true, isHard: true } },
-  { date: '2018-03-22', temperature: 36.7, cervix: { isClosed: true, isHard: false } },
-  { date: '2018-03-23', temperature: 36.7, cervix: { isClosed: true, isHard: true } }
+  { date: '2018-03-12', temperature: 36.3, cervix: { opening: 0, firmness: 1 } },
+  { 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 } },
+  { date: '2018-03-16', temperature: 36.2, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-03-17', temperature: 36.5, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-03-18', temperature: 36.6, cervix: { opening: 1, firmness: 1 } },
+  { date: '2018-03-19', temperature: 36.35, cervix: { opening: 1, firmness: 0 } },
+  { date: '2018-03-20', temperature: 36.8, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-03-21', temperature: 36.7, cervix: { opening: 0, firmness: 0 } },
+  { date: '2018-03-22', temperature: 36.7, cervix: { opening: 0, firmness: 1 } },
+  { date: '2018-03-23', temperature: 36.7, cervix: { opening: 0, firmness: 0 } }
 ].map(convertToSymptoFormat)
 
 export const fiveDayCycle = [
-- 
GitLab