scouting: setting up database support for shift schedule tab

Signed-off-by: Milo Lin <100027790@mvla.net>
Change-Id: I3df77bada351e831dd05c4d6030e57c536830237
diff --git a/scouting/db/db_test.go b/scouting/db/db_test.go
index 391f336..f19b68c 100644
--- a/scouting/db/db_test.go
+++ b/scouting/db/db_test.go
@@ -261,6 +261,41 @@
 	}
 }
 
+func TestQueryShiftDB(t *testing.T) {
+	fixture := createDatabase(t)
+	defer fixture.TearDown()
+
+	testDatabase := []Shift{
+		Shift{
+			MatchNumber: 1,
+			R1scouter:   "Bob1", R2scouter: "Bob2", R3scouter: "Bob3", B1scouter: "Alice1", B2scouter: "Alice2", B3scouter: "Alice3",
+		},
+		Shift{
+			MatchNumber: 2,
+			R1scouter:   "Bob1", R2scouter: "Bob2", R3scouter: "Bob3", B1scouter: "Alice1", B2scouter: "Alice2", B3scouter: "Alice3",
+		},
+	}
+
+	for i := 0; i < len(testDatabase); i++ {
+		err := fixture.db.AddToShift(testDatabase[i])
+		check(t, err, fmt.Sprint("Failed to add shift", i))
+	}
+
+	correct := []Shift{
+		Shift{
+			MatchNumber: 1,
+			R1scouter:   "Bob1", R2scouter: "Bob2", R3scouter: "Bob3", B1scouter: "Alice1", B2scouter: "Alice2", B3scouter: "Alice3",
+		},
+	}
+
+	got, err := fixture.db.QueryAllShifts(1)
+	check(t, err, "Failed to query shift for match 1")
+
+	if !reflect.DeepEqual(correct, got) {
+		t.Fatalf("Got %#v,\nbut expected %#v.", got, correct)
+	}
+}
+
 func TestQueryStatsDB(t *testing.T) {
 	fixture := createDatabase(t)
 	defer fixture.TearDown()
@@ -475,6 +510,34 @@
 	}
 }
 
+func TestAddReturnShiftDB(t *testing.T) {
+	fixture := createDatabase(t)
+	defer fixture.TearDown()
+
+	correct := []Shift{
+		Shift{
+			MatchNumber: 1,
+			R1scouter:   "Bob1", R2scouter: "Bob2", R3scouter: "Bob3", B1scouter: "Alice1", B2scouter: "Alice2", B3scouter: "Alice3",
+		},
+		Shift{
+			MatchNumber: 2,
+			R1scouter:   "Bob1", R2scouter: "Bob2", R3scouter: "Bob3", B1scouter: "Alice1", B2scouter: "Alice2", B3scouter: "Alice3",
+		},
+	}
+
+	for i := 0; i < len(correct); i++ {
+		err := fixture.db.AddToShift(correct[i])
+		check(t, err, fmt.Sprint("Failed to add shift", i))
+	}
+
+	got, err := fixture.db.ReturnAllShifts()
+	check(t, err, "Failed ReturnAllShifts()")
+
+	if !reflect.DeepEqual(correct, got) {
+		t.Errorf("Got %#v,\nbut expected %#v.", got, correct)
+	}
+}
+
 func TestReturnRankingsDB(t *testing.T) {
 	fixture := createDatabase(t)
 	defer fixture.TearDown()