Fixed broken tests.

This commit is contained in:
Patrick Fairbank
2015-08-22 15:40:16 -07:00
parent 32088da0a1
commit 6ff087546d
5 changed files with 80 additions and 31 deletions

View File

@@ -95,7 +95,7 @@ func AllianceStationDisplayWebsocketHandler(w http.ResponseWriter, r *http.Reque
data = struct {
AllianceStation string
Teams map[string]*Team
Rankings map[string]*Ranking
Rankings map[string]*Ranking
}{station, map[string]*Team{"R1": mainArena.AllianceStations["R1"].team,
"R2": mainArena.AllianceStations["R2"].team, "R3": mainArena.AllianceStations["R3"].team,
"B1": mainArena.AllianceStations["B1"].team, "B2": mainArena.AllianceStations["B2"].team,
@@ -143,7 +143,7 @@ func AllianceStationDisplayWebsocketHandler(w http.ResponseWriter, r *http.Reque
message = struct {
AllianceStation string
Teams map[string]*Team
Rankings map[string]*Ranking
Rankings map[string]*Ranking
}{station, map[string]*Team{"R1": mainArena.AllianceStations["R1"].team,
"R2": mainArena.AllianceStations["R2"].team, "R3": mainArena.AllianceStations["R3"].team,
"B1": mainArena.AllianceStations["B1"].team, "B2": mainArena.AllianceStations["B2"].team,

View File

@@ -113,16 +113,13 @@ func TestRefereeDisplayWebsocket(t *testing.T) {
mainArena.MatchState = POST_MATCH
ws.Write("signalReset", nil)
time.Sleep(time.Millisecond * 10)
assert.True(t, mainArena.redRealtimeScore.FieldReset)
assert.True(t, mainArena.blueRealtimeScore.FieldReset)
assert.Equal(t, "fieldReset", mainArena.allianceStationDisplayScreen)
assert.False(t, mainArena.redRealtimeScore.FoulsCommitted)
assert.False(t, mainArena.blueRealtimeScore.FoulsCommitted)
mainArena.redRealtimeScore.FieldReset = false
mainArena.blueRealtimeScore.FieldReset = false
mainArena.allianceStationDisplayScreen = "logo"
ws.Write("commitMatch", nil)
readWebsocketType(t, ws, "reload")
assert.True(t, mainArena.redRealtimeScore.FieldReset)
assert.True(t, mainArena.blueRealtimeScore.FieldReset)
assert.Equal(t, "fieldReset", mainArena.allianceStationDisplayScreen)
assert.True(t, mainArena.redRealtimeScore.FoulsCommitted)
assert.True(t, mainArena.blueRealtimeScore.FoulsCommitted)

View File

@@ -19,8 +19,6 @@ import (
const wpaKeyLength = 8
var officialTeamInfoUrl = "http://www.thebluealliance.com/api/v2/team/"
// Shows the team list.
func TeamsGetHandler(w http.ResponseWriter, r *http.Request) {
renderTeams(w, r, false)
@@ -236,7 +234,10 @@ func getOfficialTeamInfo(teamId int) (*Team, error) {
// If team info download is enabled, download the current teams data (caching isn't easy with the new paging system in the api)
if eventSettings.TBADownloadEnabled {
var tbaTeam *TbaTeam = getTeamFromTba(teamId)
tbaTeam, err := getTeamFromTba(teamId)
if err != nil {
return nil, err
}
// Check if the result is valid. If a team is not found, just return a basic team
if tbaTeam == nil {
@@ -246,7 +247,10 @@ func getOfficialTeamInfo(teamId int) (*Team, error) {
var recentAwards []TbaAward
if eventSettings.TBAAwardsDownloadEnabled {
recentAwards = getTeamAwardsFromTba(teamId)
recentAwards, err = getTeamAwardsFromTba(teamId)
if err != nil {
return nil, err
}
}
var accomplishmentsBuffer bytes.Buffer

View File

@@ -26,14 +26,53 @@ func TestSetupTeams(t *testing.T) {
assert.Contains(t, recorder.Body.String(), "0 teams")
// Mock the URL to download team info from.
teamInfoBody := "<PRE>\nID_team\tteam_number\tteam_name\tteam_name_short\tteam_city\tteam_stateprov\t" +
"team_country\tteam_nickname team_rookieyear robot_name\n1\t254\tNASA\tChezy\tThe Cheesy Poofs\t" +
"San Jose\tCA\tUSA\t1999\tBarrage\n</PRE>"
teamInfoBody := `{
"website": "http://www.team254.com",
"name": "NASA Ames Research Center",
"locality": "San Jose",
"rookie_year": 1999,
"region": "CA",
"team_number": 254,
"location": "San Jose, CA, USA",
"key": "frc254",
"country_name": "USA",
"nickname": "The Cheesy Poofs"
}`
teamInfoServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, teamInfoBody)
}))
defer teamInfoServer.Close()
officialTeamInfoUrl = teamInfoServer.URL
tbaTeamBaseUrl = teamInfoServer.URL
teamAwardsBody := `[{
"event_key": "2014cmp",
"award_type": 1,
"name": "Championship Winners",
"recipient_list": [
{
"team_number": 254,
"awardee": null
},
{
"team_number": 2848,
"awardee": null
},
{
"team_number": 469,
"awardee": null
},
{
"team_number": 74,
"awardee": null
}
],
"year": 2014
}]`
teamAwardsServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, teamAwardsBody)
}))
defer teamAwardsServer.Close()
tbaTeamAwardsBaseUrl = teamAwardsServer.URL
// Add some teams.
recorder = postHttpResponse("/setup/teams", "teamNumbers=254\r\nnotateam\r\n1114\r\n")

39
tba.go
View File

@@ -15,7 +15,10 @@ import (
"strconv"
)
// Distinct endpoints are necessary for testing.
var tbaBaseUrl = "http://www.thebluealliance.com"
var tbaTeamBaseUrl = tbaBaseUrl
var tbaTeamAwardsBaseUrl = tbaBaseUrl
// MODELS
@@ -71,38 +74,44 @@ type TbaAward struct {
}
// DATA RETRIEVAL
func getTeamFromTba(teamNumber int) *TbaTeam {
url := fmt.Sprint("/api/v2/team/", string(getTbaTeam(teamNumber)))
resp, _ := getTbaRequest(url)
func getTeamFromTba(teamNumber int) (*TbaTeam, error) {
url := fmt.Sprintf("%s/api/v2/team/%s", tbaTeamBaseUrl, getTbaTeam(teamNumber))
resp, err := getTbaRequest(url)
if err != nil {
return nil, err
}
// Get the response and handle errors
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil
return nil, err
}
var teamData TbaTeam
json.Unmarshal(body, &teamData)
err = json.Unmarshal(body, &teamData)
return &teamData
return &teamData, err
}
func getTeamAwardsFromTba(teamNumber int) []TbaAward {
url := fmt.Sprint("/api/v2/team/", string(getTbaTeam(teamNumber)), "/history/awards")
resp, _ := getTbaRequest(url)
func getTeamAwardsFromTba(teamNumber int) ([]TbaAward, error) {
url := fmt.Sprintf("%s/api/v2/team/%s/history/awards", tbaTeamAwardsBaseUrl, getTbaTeam(teamNumber))
resp, err := getTbaRequest(url)
if err != nil {
return nil, err
}
// Get the response and handle errors
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil
return nil, err
}
var awardData []TbaAward
json.Unmarshal(body, &awardData)
err = json.Unmarshal(body, &awardData)
return awardData
return awardData, err
}
// PUBLISHING
@@ -212,7 +221,7 @@ func PublishRankings() error {
}
// Build a JSON object of TBA-format rankings.
breakdowns := []string{"QS", "Assist", "Auto", "T&C", "G&F", "wins", "losses", "ties"}
breakdowns := []string{"QA", "Coopertition", "Auto", "Container", "Tote", "Litter"}
tbaRankings := make([]TbaRanking, len(rankings))
for i, ranking := range rankings {
tbaRankings[i] = TbaRanking{getTbaTeam(ranking.TeamId), ranking.Rank, ranking.QualificationAverage,
@@ -290,10 +299,10 @@ func postTbaRequest(resource string, body []byte) (*http.Response, error) {
}
// Sends a GET request to the TBA API
func getTbaRequest(path string) (*http.Response, error) {
func getTbaRequest(url string) (*http.Response, error) {
// Make an HTTP GET request with the TBA auth headers
client := &http.Client{}
req, err := http.NewRequest("GET", fmt.Sprint(tbaBaseUrl, path), nil)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return nil, err
}