From f52401d05db5f5f36e1149a7de3589d02fde28b4 Mon Sep 17 00:00:00 2001
From: Julia Friesel <julia.friesel@gmail.com>
Date: Mon, 23 Jul 2018 12:22:27 +0200
Subject: [PATCH] Add button to add dummy data

---
 components/home.js   |  6 ++--
 db/fixtures.js       | 73 ++++++++++++++++++++++++++++++++++++++++++++
 db.js => db/index.js | 35 ++++++++++++++++++---
 3 files changed, 106 insertions(+), 8 deletions(-)
 create mode 100644 db/fixtures.js
 rename db.js => db/index.js (76%)

diff --git a/components/home.js b/components/home.js
index 6c3795de..212ac512 100644
--- a/components/home.js
+++ b/components/home.js
@@ -7,7 +7,7 @@ import {
 import { LocalDate } from 'js-joda'
 import styles from '../styles/index'
 import cycleModule from '../lib/cycle'
-import { getOrCreateCycleDay, bleedingDaysSortedByDate, deleteAll } from '../db'
+import { getOrCreateCycleDay, bleedingDaysSortedByDate, fillWithDummyData } from '../db'
 
 const getCycleDayNumber = cycleModule().getCycleDayNumber
 
@@ -69,8 +69,8 @@ export default class Home extends Component {
           </View>
           <View style={styles.homeButton}>
             <Button
-              onPress={() => deleteAll()}
-              title="delete everything">
+              onPress={() => fillWithDummyData()}
+              title="fill with example data">
             </Button>
           </View>
         </View>
diff --git a/db/fixtures.js b/db/fixtures.js
new file mode 100644
index 00000000..a9075f78
--- /dev/null
+++ b/db/fixtures.js
@@ -0,0 +1,73 @@
+function convertToSymptoFormat(val) {
+  const sympto = { date: val.date }
+  if (val.temperature) sympto.temperature = { value: val.temperature, exclude: false }
+  if (val.mucus) sympto.mucus = {
+    value: val.mucus,
+    exclude: false,
+    feeling: val.mucus,
+    texture: val.mucus
+  }
+  if (val.bleeding) sympto.bleeding = { value: val.bleeding, exclude: false }
+  return sympto
+}
+
+export const cycleWithFhm = [
+  { date: '2018-07-01', bleeding: 2 },
+  { date: '2018-07-02', bleeding: 1 },
+  { date: '2018-07-06', temperature: 36.2},
+  { date: '2018-07-07', temperature: 36.35 },
+  { date: '2018-07-09', temperature: 36.6 },
+  { date: '2018-07-10', temperature: 36.45 },
+  { date: '2018-07-12', temperature: 36.7, mucus: 0 },
+  { date: '2018-07-13', temperature: 36.8, mucus: 4 },
+  { date: '2018-07-15', temperature: 36.9, mucus: 2 },
+  { date: '2018-07-16', temperature: 36.95, mucus: 2 },
+  { date: '2018-07-17', temperature: 36.9, mucus: 2 },
+  { date: '2018-07-18', temperature: 36.9, mucus: 2 }
+].map(convertToSymptoFormat).reverse()
+
+export const longAndComplicatedCycle = [
+  { 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, mucus: 0 },
+  { date: '2018-06-09', temperature: 36.5, mucus: 4 },
+  { date: '2018-06-10', temperature: 36.4, mucus: 2 },
+  { date: '2018-06-13', temperature: 36.45, mucus: 3 },
+  { date: '2018-06-14', temperature: 36.5, mucus: 4 },
+  { date: '2018-06-15', temperature: 36.55, mucus: 4 },
+  { date: '2018-06-16', temperature: 36.7, mucus: 3 },
+  { date: '2018-06-17', temperature: 36.65, mucus: 3 },
+  { date: '2018-06-18', temperature: 36.75, mucus: 4 },
+  { date: '2018-06-19', temperature: 36.8, mucus: 1 },
+  { date: '2018-06-20', temperature: 36.85, mucus: 2 },
+  { date: '2018-06-21', temperature: 36.8, mucus: 2 },
+  { date: '2018-06-22', temperature: 36.9, mucus: 2 },
+  { date: '2018-06-25', temperature: 36.9, mucus: 1 },
+  { date: '2018-06-26', temperature: 36.8, mucus: 1 },
+  { date: '2018-06-27', temperature: 36.9, mucus: 1 }
+].map(convertToSymptoFormat).reverse()
+
+export const cycleWithTempAndNoMucusShift = [
+  { date: '2018-05-01', temperature: 36.6, bleeding: 2 },
+  { date: '2018-05-02', temperature: 36.65 },
+  { date: '2018-05-05', temperature: 36.55 },
+  { date: '2018-05-06', temperature: 36.7, mucus: 0 },
+  { date: '2018-05-08', temperature: 36.45, mucus: 1 },
+  { date: '2018-05-09', temperature: 36.5, mucus: 4 },
+  { date: '2018-05-10', temperature: 36.4, mucus: 2 },
+  { date: '2018-05-11', temperature: 36.5, mucus: 3 },
+  { date: '2018-05-13', temperature: 36.45, mucus: 3 },
+  { date: '2018-05-14', temperature: 36.5, mucus: 4 },
+  { date: '2018-05-15', temperature: 36.55, mucus: 4 },
+  { date: '2018-05-16', temperature: 36.7, mucus: 3 },
+  { date: '2018-05-17', temperature: 36.65, mucus: 3 },
+  { date: '2018-05-18', temperature: 36.75, mucus: 4 },
+  { date: '2018-05-19', temperature: 36.8, mucus: 4 },
+  { date: '2018-05-20', temperature: 36.85, mucus: 4 },
+  { date: '2018-05-23', temperature: 36.9, mucus: 3 },
+  { date: '2018-05-24', temperature: 36.85, mucus: 4 },
+  { date: '2018-05-26', temperature: 36.8, mucus: 4 },
+  { date: '2018-05-27', temperature: 36.9, mucus: 4 }
+].map(convertToSymptoFormat).reverse()
\ No newline at end of file
diff --git a/db.js b/db/index.js
similarity index 76%
rename from db.js
rename to db/index.js
index 7f5e3e5c..b6971c7a 100644
--- a/db.js
+++ b/db/index.js
@@ -1,6 +1,10 @@
 import Realm from 'realm'
 import { LocalDate } from 'js-joda'
-
+import {
+  cycleWithTempAndNoMucusShift,
+  cycleWithFhm,
+  longAndComplicatedCycle
+} from './fixtures'
 
 const TemperatureSchema = {
   name: 'Temperature',
@@ -48,7 +52,7 @@ const CycleDaySchema = {
   }
 }
 
-const db = new Realm({
+const realmConfig = {
   schema: [
     CycleDaySchema,
     TemperatureSchema,
@@ -57,7 +61,9 @@ const db = new Realm({
   ],
   // we only want this in dev mode
   deleteRealmIfMigrationNeeded: true
-})
+}
+
+const db = new Realm(realmConfig)
 
 const bleedingDaysSortedByDate = db.objects('CycleDay').filtered('bleeding != null').sorted('date', true)
 const temperatureDaysSortedByDate = db.objects('CycleDay').filtered('temperature != null').sorted('date', true)
@@ -86,9 +92,28 @@ function getCycleDay(localDate) {
   return db.objectForPrimaryKey('CycleDay', localDate)
 }
 
-function deleteAll() {
+function fillWithDummyData() {
+  const dummyCycles = [
+    cycleWithFhm,
+    longAndComplicatedCycle,
+    cycleWithTempAndNoMucusShift
+  ]
+
   db.write(() => {
     db.deleteAll()
+    dummyCycles.forEach(cycle => {
+      cycle.forEach(day => {
+        const existing = getCycleDay(day.date)
+        if (existing) {
+          Object.keys(day).forEach(key => {
+            if (key === 'date') return
+            existing[key] = day[key]
+          })
+        } else {
+          db.create('CycleDay', day)
+        }
+      })
+    })
   })
 }
 
@@ -108,7 +133,7 @@ export {
   bleedingDaysSortedByDate,
   temperatureDaysSortedByDate,
   cycleDaysSortedByDate,
-  deleteAll,
+  fillWithDummyData,
   getPreviousTemperature,
   getCycleDay
 }
-- 
GitLab