Adding tests for adding votes
This commit is contained in:
@@ -393,4 +393,69 @@ func TestSetVote(t *testing.T) {
|
|||||||
if expected_non_member_votes != 5 || expected_member_votes != 4 {
|
if expected_non_member_votes != 5 || expected_member_votes != 4 {
|
||||||
t.Errorf("Expected %d non-member votes and %d member votes, but got %d non-member votes and %d member votes", 4+1, 3+1, expected_non_member_votes, expected_member_votes)
|
t.Errorf("Expected %d non-member votes and %d member votes, but got %d non-member votes and %d member votes", 4+1, 3+1, expected_non_member_votes, expected_member_votes)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestVoterAlreadyVoted(t *testing.T) {
|
||||||
|
// Preload the database with members, polls, and voters
|
||||||
|
tmp_db, err := os.CreateTemp("", "vote_test.*.db")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to create temporary database: %v", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(tmp_db.Name())
|
||||||
|
|
||||||
|
init_conf := &config.Config{
|
||||||
|
DBPath: string(tmp_db.Name()),
|
||||||
|
}
|
||||||
|
config.SetConfig(init_conf)
|
||||||
|
|
||||||
|
err = PreLoadDB()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to preload database: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a non-member vote
|
||||||
|
random_email := RandString(10) + "@mail.me"
|
||||||
|
vote := &models.Vote{
|
||||||
|
PollId: 1,
|
||||||
|
Email: random_email,
|
||||||
|
Vote: true,
|
||||||
|
}
|
||||||
|
err = SetVote(vote)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to set non-member vote: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a member vote
|
||||||
|
member_email := "test100@mail.me"
|
||||||
|
vote = &models.Vote{
|
||||||
|
PollId: 1,
|
||||||
|
Email: member_email,
|
||||||
|
Vote: true,
|
||||||
|
}
|
||||||
|
err = SetVote(vote)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to set member vote: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt to add another non-member vote
|
||||||
|
vote = &models.Vote{
|
||||||
|
PollId: 1,
|
||||||
|
Email: random_email,
|
||||||
|
Vote: true,
|
||||||
|
}
|
||||||
|
err = SetVote(vote)
|
||||||
|
if err != ErrVoterAlreadyVoted {
|
||||||
|
t.Fatalf("Expected ErrVoterAlreadyVoted, but got %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt to add another member vote
|
||||||
|
vote = &models.Vote{
|
||||||
|
PollId: 1,
|
||||||
|
Email: member_email,
|
||||||
|
Vote: true,
|
||||||
|
}
|
||||||
|
err = SetVote(vote)
|
||||||
|
if err != ErrVoterAlreadyVoted {
|
||||||
|
t.Fatalf("Expected ErrVoterAlreadyVoted, but got %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user