Files
cheesy-arena-lite/web/scores_test.go

123 lines
4.8 KiB
Go
Raw Normal View History

2020-04-17 20:44:22 -05:00
// Copyright 2020 Team 254. All Rights Reserved.
// Author: kenschenke@gmail.com (Ken Schenke)
package web
import (
"encoding/json"
"github.com/Team254/cheesy-arena/field"
"github.com/Team254/cheesy-arena/game"
"github.com/stretchr/testify/assert"
"net/http/httptest"
"testing"
)
func TestGetScores(t *testing.T) {
web := setupTestWeb(t)
score1 := game.TestScore1()
score2 := game.TestScore2()
web.arena.RedScore.AutoPoints = score1.AutoPoints
web.arena.RedScore.TeleopPoints = score1.TeleopPoints
web.arena.RedScore.EndgamePoints = score1.EndgamePoints
web.arena.BlueScore.AutoPoints = score2.AutoPoints
web.arena.BlueScore.TeleopPoints = score2.TeleopPoints
web.arena.BlueScore.EndgamePoints = score2.EndgamePoints
recorder := web.getHttpResponse("/api/scores")
assert.Equal(t, 200, recorder.Code)
var reqScores jsonScore
json.Unmarshal(recorder.Body.Bytes(), &reqScores)
assert.Equal(t, score1.AutoPoints, reqScores.Red.Auto)
assert.Equal(t, score1.TeleopPoints, reqScores.Red.Teleop)
assert.Equal(t, score1.EndgamePoints, reqScores.Red.Endgame)
assert.Equal(t, score2.AutoPoints, reqScores.Blue.Auto)
assert.Equal(t, score2.TeleopPoints, reqScores.Blue.Teleop)
assert.Equal(t, score2.EndgamePoints, reqScores.Blue.Endgame)
}
func TestPatchScores(t *testing.T) {
web := setupTestWeb(t)
var recorder *httptest.ResponseRecorder
web.arena.MatchState = field.PreMatch
recorder = web.patchHttpResponse("/api/scores", "{}")
assert.Equal(t, 200, recorder.Code)
assert.Equal(t, recorder.Body.String(), "Score cannot be updated in this match state")
score1 := game.TestScore1()
score2 := game.TestScore2()
web.arena.RedScore.AutoPoints = score1.AutoPoints
web.arena.RedScore.TeleopPoints = score1.TeleopPoints
web.arena.RedScore.EndgamePoints = score1.EndgamePoints
web.arena.BlueScore.AutoPoints = score2.AutoPoints
web.arena.BlueScore.TeleopPoints = score2.TeleopPoints
web.arena.BlueScore.EndgamePoints = score2.EndgamePoints
web.arena.MatchState = field.PostMatch
recorder = web.patchHttpResponse("/api/scores",
"{\"red\":{\"auto\":5,\"teleop\":10,\"endgame\":15}}")
assert.Equal(t, 200, recorder.Code)
assert.Equal(t, score1.AutoPoints + 5, web.arena.RedScore.AutoPoints)
assert.Equal(t, score1.TeleopPoints + 10, web.arena.RedScore.TeleopPoints)
assert.Equal(t, score1.EndgamePoints + 15, web.arena.RedScore.EndgamePoints)
assert.Equal(t, score2.AutoPoints, web.arena.BlueScore.AutoPoints)
assert.Equal(t, score2.TeleopPoints, web.arena.BlueScore.TeleopPoints)
assert.Equal(t, score2.EndgamePoints, web.arena.BlueScore.EndgamePoints)
recorder = web.patchHttpResponse("/api/scores",
"{\"blue\":{\"auto\":-5,\"teleop\":-10,\"endgame\":-15}}")
assert.Equal(t, 200, recorder.Code)
assert.Equal(t, score1.AutoPoints + 5, web.arena.RedScore.AutoPoints)
assert.Equal(t, score1.TeleopPoints + 10, web.arena.RedScore.TeleopPoints)
assert.Equal(t, score1.EndgamePoints + 15, web.arena.RedScore.EndgamePoints)
assert.Equal(t, score2.AutoPoints - 5, web.arena.BlueScore.AutoPoints)
assert.Equal(t, score2.TeleopPoints - 10, web.arena.BlueScore.TeleopPoints)
assert.Equal(t, score2.EndgamePoints - 15, web.arena.BlueScore.EndgamePoints)
}
func TestPutScores(t *testing.T) {
web := setupTestWeb(t)
var recorder *httptest.ResponseRecorder
web.arena.MatchState = field.PreMatch
recorder = web.putHttpResponse("/api/scores", "{}")
assert.Equal(t, 200, recorder.Code)
assert.Equal(t, recorder.Body.String(), "Score cannot be updated in this match state")
score1 := game.TestScore1()
score2 := game.TestScore2()
web.arena.RedScore.AutoPoints = score1.AutoPoints
web.arena.RedScore.TeleopPoints = score1.TeleopPoints
web.arena.RedScore.EndgamePoints = score1.EndgamePoints
web.arena.BlueScore.AutoPoints = score2.AutoPoints
web.arena.BlueScore.TeleopPoints = score2.TeleopPoints
web.arena.BlueScore.EndgamePoints = score2.EndgamePoints
web.arena.MatchState = field.PostMatch
recorder = web.putHttpResponse("/api/scores",
"{\"red\":{\"auto\":5,\"teleop\":10,\"endgame\":15}}")
assert.Equal(t, 200, recorder.Code)
assert.Equal(t, 5, web.arena.RedScore.AutoPoints)
assert.Equal(t, 10, web.arena.RedScore.TeleopPoints)
assert.Equal(t, 15, web.arena.RedScore.EndgamePoints)
assert.Equal(t, 0, web.arena.BlueScore.AutoPoints)
assert.Equal(t, 0, web.arena.BlueScore.TeleopPoints)
assert.Equal(t, 0, web.arena.BlueScore.EndgamePoints)
recorder = web.putHttpResponse("/api/scores",
"{\"blue\":{\"auto\":5,\"teleop\":10,\"endgame\":15}}")
assert.Equal(t, 200, recorder.Code)
assert.Equal(t, 0, web.arena.RedScore.AutoPoints)
assert.Equal(t, 0, web.arena.RedScore.TeleopPoints)
assert.Equal(t, 0, web.arena.RedScore.EndgamePoints)
assert.Equal(t, 5, web.arena.BlueScore.AutoPoints)
assert.Equal(t, 10, web.arena.BlueScore.TeleopPoints)
assert.Equal(t, 15, web.arena.BlueScore.EndgamePoints)
}