diff --git a/db/migrations/20140526225924_CreateRankings.sql b/db/migrations/20140526225924_CreateRankings.sql index d8a498d..835b2e4 100644 --- a/db/migrations/20140526225924_CreateRankings.sql +++ b/db/migrations/20140526225924_CreateRankings.sql @@ -1,6 +1,7 @@ -- +goose Up CREATE TABLE rankings ( teamid INTEGER PRIMARY KEY, + rank int, qualificationscore int, assistpoints int, autopoints int, diff --git a/ranking.go b/ranking.go index 3db8234..5500313 100644 --- a/ranking.go +++ b/ranking.go @@ -7,6 +7,7 @@ package main type Ranking struct { TeamId int + Rank int QualificationScore int AssistPoints int AutoPoints int @@ -50,6 +51,6 @@ func (database *Database) TruncateRankings() error { func (database *Database) GetAllRankings() ([]Ranking, error) { var rankings []Ranking - err := database.rankingMap.Select(&rankings, "SELECT * FROM rankings ORDER BY id") + err := database.rankingMap.Select(&rankings, "SELECT * FROM rankings ORDER BY rank") return rankings, err } diff --git a/ranking_test.go b/ranking_test.go new file mode 100644 index 0000000..d632544 --- /dev/null +++ b/ranking_test.go @@ -0,0 +1,84 @@ +// Copyright 2014 Team 254. All Rights Reserved. +// Author: pat@patfairbank.com (Patrick Fairbank) + +package main + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestGetNonexistentRanking(t *testing.T) { + clearDb() + defer clearDb() + db, err := OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + + ranking, err := db.GetRankingForTeam(1114) + assert.Nil(t, err) + assert.Nil(t, ranking) +} + +func TestRankingCrud(t *testing.T) { + clearDb() + defer clearDb() + db, err := OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + + ranking := Ranking{254, 1, 20, 1100, 625, 90, 554, 0.254, 10, 0, 0, 0, 10} + db.CreateRanking(&ranking) + ranking2, err := db.GetRankingForTeam(254) + assert.Nil(t, err) + assert.Equal(t, ranking, *ranking2) + + ranking.Random = 0.1114 + db.SaveRanking(&ranking) + ranking2, err = db.GetRankingForTeam(254) + assert.Nil(t, err) + assert.Equal(t, ranking.Random, ranking2.Random) + + db.DeleteRanking(&ranking) + ranking2, err = db.GetRankingForTeam(254) + assert.Nil(t, err) + assert.Nil(t, ranking2) +} + +func TestTruncateRankings(t *testing.T) { + clearDb() + defer clearDb() + db, err := OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + + ranking := Ranking{254, 1, 20, 1100, 625, 90, 554, 0.254, 10, 0, 0, 0, 10} + db.CreateRanking(&ranking) + db.TruncateRankings() + ranking2, err := db.GetRankingForTeam(254) + assert.Nil(t, err) + assert.Nil(t, ranking2) +} + +func TestGetAllRankings(t *testing.T) { + clearDb() + defer clearDb() + db, err := OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + + rankings, err := db.GetAllRankings() + assert.Nil(t, err) + assert.Empty(t, rankings) + + numRankings := 20 + for i := 1; i <= numRankings; i++ { + db.CreateRanking(&Ranking{TeamId:i}) + } + rankings, err = db.GetAllRankings() + assert.Nil(t, err) + assert.Equal(t, numRankings, len(rankings)) + for i := 0; i < numRankings; i++ { + assert.Equal(t, i+1, rankings[i].TeamId) + } +}