Fix maxVoters check and add unit tests
This commit is contained in:
@ -72,13 +72,16 @@ func (r *createElectionRequestWithValidator) isValid() bool {
|
|||||||
r.CheckField(validator.After(r.ExpiresAt, time.Now()), "expiresAt", "must expire in a future date")
|
r.CheckField(validator.After(r.ExpiresAt, time.Now()), "expiresAt", "must expire in a future date")
|
||||||
r.CheckField(validator.GreaterThan(len(r.Choices), 1), "choices", "there must be more than 1 choice")
|
r.CheckField(validator.GreaterThan(len(r.Choices), 1), "choices", "there must be more than 1 choice")
|
||||||
r.CheckField(validator.UniqueValues(r.Choices), "choices", "must not contain duplicate values")
|
r.CheckField(validator.UniqueValues(r.Choices), "choices", "must not contain duplicate values")
|
||||||
r.CheckField(validator.LesserThan(r.MaxVoters, 101), "maxVoters", "cannot create a known-voters election with more than 100 voters")
|
|
||||||
|
|
||||||
for _, choice := range r.Choices {
|
for _, choice := range r.Choices {
|
||||||
r.CheckField(validator.NotBlank(choice), "choice", "must not be blank")
|
r.CheckField(validator.NotBlank(choice), "choice", "must not be blank")
|
||||||
}
|
}
|
||||||
|
|
||||||
if r.AreVotersKnown {
|
if r.AreVotersKnown {
|
||||||
|
r.CheckField(validator.LesserThan(r.MaxVoters, 101),
|
||||||
|
"maxVoters",
|
||||||
|
"cannot create a known-voters election with more than 100 voters",
|
||||||
|
)
|
||||||
r.CheckField(
|
r.CheckField(
|
||||||
validator.GreaterThan(r.MaxVoters, 0),
|
validator.GreaterThan(r.MaxVoters, 0),
|
||||||
"maxVoters",
|
"maxVoters",
|
||||||
|
@ -82,7 +82,7 @@ func TestCreateElection(t *testing.T) {
|
|||||||
Choices: []string{"Gandhi", "Buddha"},
|
Choices: []string{"Gandhi", "Buddha"},
|
||||||
ExpiresAt: time.Now().Add(24 * time.Hour),
|
ExpiresAt: time.Now().Add(24 * time.Hour),
|
||||||
AreVotersKnown: false,
|
AreVotersKnown: false,
|
||||||
MaxVoters: 10,
|
MaxVoters: 1000,
|
||||||
Name: "Guy of the year",
|
Name: "Guy of the year",
|
||||||
Tokens: 100,
|
Tokens: 100,
|
||||||
},
|
},
|
||||||
@ -179,6 +179,19 @@ func TestCreateElection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expectedCode: http.StatusUnprocessableEntity,
|
expectedCode: http.StatusUnprocessableEntity,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Invalid request for known voters election (max voters greater than 100)",
|
||||||
|
urlPath: path,
|
||||||
|
body: api.CreateElectionRequest{
|
||||||
|
Choices: []string{"Gandhi", "Buddha", ""},
|
||||||
|
ExpiresAt: time.Now().Add(24 * time.Hour),
|
||||||
|
AreVotersKnown: true,
|
||||||
|
MaxVoters: 101,
|
||||||
|
Name: "Guy of the year",
|
||||||
|
Tokens: 100,
|
||||||
|
},
|
||||||
|
expectedCode: http.StatusUnprocessableEntity,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
Reference in New Issue
Block a user