Scouting: add function to request 2023 stats
Signed-off-by: Emily Markova <emily.markova@gmail.com>
Change-Id: I5b5763f89ea1f6a4876be5af20553756f303b919
diff --git a/scouting/webserver/requests/requests_test.go b/scouting/webserver/requests/requests_test.go
index ee22022..6df15de 100644
--- a/scouting/webserver/requests/requests_test.go
+++ b/scouting/webserver/requests/requests_test.go
@@ -10,6 +10,8 @@
"github.com/frc971/971-Robot-Code/scouting/db"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/debug"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/error_response"
+ "github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting"
+ "github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting_response"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_driver_rankings"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_driver_rankings_response"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_matches"
@@ -316,6 +318,79 @@
}
}
+// Validates that we can request the 2023 stats.
+func TestRequest2023DataScouting(t *testing.T) {
+ db := MockDatabase{
+ stats2023: []db.Stats2023{
+ {
+ TeamNumber: "3634", MatchNumber: 1, SetNumber: 2,
+ CompLevel: "quals", StartingQuadrant: 3, LowCubesAuto: 10,
+ MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 0,
+ LowConesAuto: 1, MiddleConesAuto: 2, HighConesAuto: 1,
+ ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 1,
+ HighCubes: 2, CubesDropped: 1, LowCones: 1,
+ MiddleCones: 2, HighCones: 0, ConesDropped: 1,
+ AvgCycle: 34, CollectedBy: "isaac",
+ },
+ {
+ TeamNumber: "2343", MatchNumber: 1, SetNumber: 2,
+ CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
+ MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 2,
+ LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 0,
+ ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 0,
+ HighCubes: 1, CubesDropped: 0, LowCones: 0,
+ MiddleCones: 2, HighCones: 1, ConesDropped: 1,
+ AvgCycle: 53, CollectedBy: "unknown",
+ },
+ },
+ }
+ scoutingServer := server.NewScoutingServer()
+ HandleRequests(&db, scoutingServer)
+ scoutingServer.Start(8080)
+ defer scoutingServer.Stop()
+
+ builder := flatbuffers.NewBuilder(1024)
+ builder.Finish((&request_2023_data_scouting.Request2023DataScoutingT{}).Pack(builder))
+
+ response, err := debug.Request2023DataScouting("http://localhost:8080", builder.FinishedBytes())
+ if err != nil {
+ t.Fatal("Failed to request all matches: ", err)
+ }
+
+ expected := request_2023_data_scouting_response.Request2023DataScoutingResponseT{
+ StatsList: []*request_2023_data_scouting_response.Stats2023T{
+ {
+ TeamNumber: "3634", MatchNumber: 1, SetNumber: 2,
+ CompLevel: "quals", StartingQuadrant: 3, LowCubesAuto: 10,
+ MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 0,
+ LowConesAuto: 1, MiddleConesAuto: 2, HighConesAuto: 1,
+ ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 1,
+ HighCubes: 2, CubesDropped: 1, LowCones: 1,
+ MiddleCones: 2, HighCones: 0, ConesDropped: 1,
+ AvgCycle: 34, CollectedBy: "isaac",
+ },
+ {
+ TeamNumber: "2343", MatchNumber: 1, SetNumber: 2,
+ CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
+ MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 2,
+ LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 0,
+ ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 0,
+ HighCubes: 1, CubesDropped: 0, LowCones: 0,
+ MiddleCones: 2, HighCones: 1, ConesDropped: 1,
+ AvgCycle: 53, CollectedBy: "unknown",
+ },
+ },
+ }
+ if len(expected.StatsList) != len(response.StatsList) {
+ t.Fatal("Expected ", expected, ", but got ", *response)
+ }
+ for i, match := range expected.StatsList {
+ if !reflect.DeepEqual(*match, *response.StatsList[i]) {
+ t.Fatal("Expected for stats", i, ":", *match, ", but got:", *response.StatsList[i])
+ }
+ }
+}
+
func TestSubmitNotes(t *testing.T) {
database := MockDatabase{}
scoutingServer := server.NewScoutingServer()
@@ -665,6 +740,7 @@
notes []db.NotesData
shiftSchedule []db.Shift
driver_ranking []db.DriverRankingData
+ stats2023 []db.Stats2023
}
func (database *MockDatabase) AddToMatch(match db.TeamMatch) error {
@@ -677,6 +753,10 @@
return nil
}
+func (database *MockDatabase) AddToStats2023(stats2023 db.Stats2023) error {
+ database.stats2023 = append(database.stats2023, stats2023)
+ return nil
+}
func (database *MockDatabase) ReturnMatches() ([]db.TeamMatch, error) {
return database.matches, nil
}
@@ -685,6 +765,10 @@
return database.stats, nil
}
+func (database *MockDatabase) ReturnStats2023() ([]db.Stats2023, error) {
+ return database.stats2023, nil
+}
+
func (database *MockDatabase) QueryStats(int) ([]db.Stats, error) {
return []db.Stats{}, nil
}