scouting: Add support for /requests/request/data_scouting
Signed-off-by: Philipp Schrader <philipp.schrader@gmail.com>
Change-Id: I6a53ed395a187f04c889af506ce6ecacd0a75916
diff --git a/scouting/webserver/requests/requests_test.go b/scouting/webserver/requests/requests_test.go
index f6a06b9..e3650ff 100644
--- a/scouting/webserver/requests/requests_test.go
+++ b/scouting/webserver/requests/requests_test.go
@@ -12,6 +12,8 @@
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/error_response"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_matches"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_matches_response"
+ "github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_data_scouting"
+ "github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_data_scouting_response"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_matches_for_team"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_matches_for_team_response"
"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_data_scouting"
@@ -206,11 +208,73 @@
}
}
+// Validates that we can request the stats.
+func TestRequestDataScouting(t *testing.T) {
+ db := MockDatabase{
+ stats: []db.Stats{
+ {
+ TeamNumber: 971, MatchNumber: 1,
+ ShotsMissed: 1, UpperGoalShots: 2, LowerGoalShots: 3,
+ ShotsMissedAuto: 4, UpperGoalAuto: 5, LowerGoalAuto: 6,
+ PlayedDefense: 7, Climbing: 8,
+ },
+ {
+ TeamNumber: 972, MatchNumber: 1,
+ ShotsMissed: 2, UpperGoalShots: 3, LowerGoalShots: 4,
+ ShotsMissedAuto: 5, UpperGoalAuto: 6, LowerGoalAuto: 7,
+ PlayedDefense: 8, Climbing: 9,
+ },
+ },
+ }
+ scoutingServer := server.NewScoutingServer()
+ HandleRequests(&db, scoutingServer)
+ scoutingServer.Start(8080)
+ defer scoutingServer.Stop()
+
+ builder := flatbuffers.NewBuilder(1024)
+ builder.Finish((&request_data_scouting.RequestDataScoutingT{}).Pack(builder))
+
+ response, err := debug.RequestDataScouting("http://localhost:8080", builder.FinishedBytes())
+ if err != nil {
+ t.Fatal("Failed to request all matches: ", err)
+ }
+
+ expected := request_data_scouting_response.RequestDataScoutingResponseT{
+ StatsList: []*request_data_scouting_response.StatsT{
+ // Team, Match,
+ // MissedShotsAuto, UpperGoalAuto, LowerGoalAuto,
+ // MissedShotsTele, UpperGoalTele, LowerGoalTele,
+ // DefenseRating, Climbing,
+ {
+ 971, 1,
+ 4, 5, 6,
+ 1, 2, 3,
+ 7, 8,
+ },
+ {
+ 972, 1,
+ 5, 6, 7,
+ 2, 3, 4,
+ 8, 9,
+ },
+ },
+ }
+ 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])
+ }
+ }
+}
+
// A mocked database we can use for testing. Add functionality to this as
// needed for your tests.
type MockDatabase struct {
matches []db.Match
+ stats []db.Stats
}
func (database *MockDatabase) AddToMatch(db.Match) error {
@@ -226,7 +290,7 @@
}
func (database *MockDatabase) ReturnStats() ([]db.Stats, error) {
- return []db.Stats{}, nil
+ return database.stats, nil
}
func (database *MockDatabase) QueryMatches(requestedTeam int32) ([]db.Match, error) {