X-Git-Url: https://git.octo.it/?p=kraftakt.git;a=blobdiff_plain;f=fitbit%2Fsleep_test.go;fp=fitbit%2Fsleep_test.go;h=5d8385832926f805f37d016a43f3ead09057d9d9;hp=0000000000000000000000000000000000000000;hb=0760c07303a8b8a78a4858e7331d3189f3d83af3;hpb=0b5456de50f3e76354cb3222fa16a7dfd5b066bf diff --git a/fitbit/sleep_test.go b/fitbit/sleep_test.go new file mode 100644 index 0000000..5d83858 --- /dev/null +++ b/fitbit/sleep_test.go @@ -0,0 +1,116 @@ +package fitbit + +import ( + "context" + "reflect" + "testing" + "time" +) + +func TestParseSleep(t *testing.T) { + ctx := context.Background() + + input := `{ + "dateOfSleep": "2017-04-02", + "duration": 42000, + "efficiency": 42, + "isMainSleep": true, + "levels": { + "summary": { + "deep": { + "count": 42, + "minutes": 42, + "thirtyDayAvgMinutes": 42 + }, + "light": { + "count": 42, + "minutes": 42, + "thirtyDayAvgMinutes": 42 + }, + "rem": { + "count": 42, + "minutes": 42, + "thirtyDayAvgMinutes": 42 + }, + "wake": { + "count": 42, + "minutes": 42, + "thirtyDayAvgMinutes": 42 + } + }, + "data": [ + { + "datetime": "2017-04-01T23:58:30.000", + "level": "wake", + "seconds": 1080 + }, + { + "datetime": "2017-04-02T00:16:30.000", + "level": "rem", + "seconds": 2000 + } + ], + "shortData": [ + { + "datetime": "2017-04-01T23:58:30.000", + "level": "wake", + "seconds": 1080 + }, + { + "datetime": "2017-04-02T00:16:30.000", + "level": "deep", + "seconds": 100 + }, + { + "datetime": "2017-04-02T00:18:10.000", + "level": "rem", + "seconds": 1900 + } + ] + }, + "logId": 42, + "minutesAfterWakeup": 42, + "minutesAsleep": 42, + "minutesAwake": 42, + "minutesToFallAsleep": 0, + "startTime": "2017-04-01T23:58:30.000", + "timeInBed": 42, + "type": "stages" +}` + + want := &Sleep{ + Stages: []SleepStage{ + SleepStage{ + StartTime: time.Date(2017, time.April, 1, 23, 58, 30, 0, time.UTC), + EndTime: time.Date(2017, time.April, 2, 0, 16, 30, 0, time.UTC), + Level: SleepLevelWake, + }, + SleepStage{ + StartTime: time.Date(2017, time.April, 2, 0, 16, 30, 0, time.UTC), + EndTime: time.Date(2017, time.April, 2, 0, 18, 10, 0, time.UTC), + Level: SleepLevelDeep, + }, + SleepStage{ + StartTime: time.Date(2017, time.April, 2, 0, 18, 10, 0, time.UTC), + EndTime: time.Date(2017, time.April, 2, 0, 49, 50, 0, time.UTC), + Level: SleepLevelREM, + }, + }, + } + + got, err := parseSleep(ctx, []byte(input), time.UTC) + if err != nil { + t.Errorf("parseSleep() = %v", err) + } + + for i, stg := range got.Stages { + t.Logf("got.Stages[%d] = %+v", i, stg) + } + for i, stg := range want.Stages { + t.Logf("want.Stages[%d] = %+v", i, stg) + } + + if !reflect.DeepEqual(got, want) { + t.Errorf("parseSleep() = %+v, want %+v", got, want) + } +}