Write test for getElectionResults
This commit is contained in:
@ -711,3 +711,75 @@ func TestCreateVotes_ExpiredElection(t *testing.T) {
|
||||
|
||||
assert.Equal(t, http.StatusUnprocessableEntity, code)
|
||||
}
|
||||
|
||||
func TestGetElectionResults(t *testing.T) {
|
||||
app := newTestApplication(t)
|
||||
server := newTestServer(t, app.routes())
|
||||
defer server.Close()
|
||||
|
||||
votes := []models.Vote{
|
||||
{
|
||||
VoterIdentity: "Voter1",
|
||||
ElectionID: 1,
|
||||
ChoiceText: "Choice1",
|
||||
Tokens: 2,
|
||||
CreatedAt: time.Now(),
|
||||
},
|
||||
{
|
||||
VoterIdentity: "Voter2",
|
||||
ElectionID: 1,
|
||||
ChoiceText: "Choice2",
|
||||
Tokens: 4,
|
||||
CreatedAt: time.Now(),
|
||||
},
|
||||
{
|
||||
VoterIdentity: "Voter3",
|
||||
ElectionID: 1,
|
||||
ChoiceText: "Choice3",
|
||||
Tokens: 6,
|
||||
CreatedAt: time.Now(),
|
||||
},
|
||||
{
|
||||
VoterIdentity: "Voter4",
|
||||
ElectionID: 1,
|
||||
ChoiceText: "Choice1",
|
||||
Tokens: 8,
|
||||
CreatedAt: time.Now(),
|
||||
},
|
||||
{
|
||||
VoterIdentity: "Voter5",
|
||||
ElectionID: 1,
|
||||
ChoiceText: "Choice2",
|
||||
Tokens: 10,
|
||||
CreatedAt: time.Now(),
|
||||
},
|
||||
}
|
||||
mockVotes := app.votes.(*mockVoteModel)
|
||||
mockVotes.
|
||||
On("GetByElection", mock.Anything).
|
||||
Return(&votes, nil)
|
||||
|
||||
path := "/api/election/1/results"
|
||||
code, _, body := server.get(t, path)
|
||||
|
||||
assert.Equal(t, http.StatusOK, code)
|
||||
|
||||
var response api.ElectionResultsResponse
|
||||
err := json.Unmarshal([]byte(body), &response)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
for _, result := range *response.Results {
|
||||
switch result.Choice {
|
||||
case "Choice1":
|
||||
assert.Equal(t, 3, result.Votes)
|
||||
case "Choice2":
|
||||
assert.Equal(t, 5, result.Votes)
|
||||
case "Choice3":
|
||||
assert.Equal(t, 2, result.Votes)
|
||||
default:
|
||||
t.Fatalf("Unexpected choice: %s", result.Choice)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user