Skip to content

Commit

Permalink
FIX: min setting should be greater than 0 for multiple type polls.
Browse files Browse the repository at this point in the history
  • Loading branch information
tgxworld committed Jun 7, 2016
1 parent cc66bff commit 2f14a81
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 3 deletions.
5 changes: 3 additions & 2 deletions plugins/poll/lib/polls_validator.rb
Expand Up @@ -92,10 +92,11 @@ def valid_number_of_options?(poll)

def valid_multiple_choice_settings?(poll)
if poll["type"] == "multiple"
num_of_options = poll["options"].size
min = (poll["min"].presence || 1).to_i
max = (poll["max"].presence || poll["options"].size).to_i
max = (poll["max"].presence || num_of_options).to_i

if min > max || max <= 0 || max > poll["options"].size || min >= poll["options"].size
if min > max || min <= 0 || max <= 0 || max > num_of_options || min >= num_of_options
if poll["name"] == ::DiscoursePoll::DEFAULT_POLL_NAME
@post.errors.add(:base, I18n.t("poll.default_poll_with_multiple_choices_has_invalid_parameters"))
else
Expand Down
34 changes: 33 additions & 1 deletion plugins/poll/spec/lib/polls_validator_spec.rb
Expand Up @@ -193,7 +193,37 @@
)
end

it "should ensure that min settings is smaller than the number of options" do
it "should ensure that min settings is not negative" do
raw = <<-RAW.strip_heredoc
[poll type=multiple min=-1]
* 1
* 2
[/poll]
RAW

expect(post.update_attributes(raw: raw)).to eq(false)

expect(post.errors[:base]).to include(
I18n.t("poll.default_poll_with_multiple_choices_has_invalid_parameters")
)
end

it "should ensure that min settings it not equal to zero" do
raw = <<-RAW.strip_heredoc
[poll type=multiple min=0]
* 1
* 2
[/poll]
RAW

expect(post.update_attributes(raw: raw)).to eq(false)

expect(post.errors[:base]).to include(
I18n.t("poll.default_poll_with_multiple_choices_has_invalid_parameters")
)
end

it "should ensure that min settings is not equal to the number of options" do
raw = <<-RAW.strip_heredoc
[poll type=multiple min=2]
* 1
Expand All @@ -206,7 +236,9 @@
expect(post.errors[:base]).to include(
I18n.t("poll.default_poll_with_multiple_choices_has_invalid_parameters")
)
end

it "should ensure that min settings is not greater than the number of options" do
raw = <<-RAW.strip_heredoc
[poll type=multiple min=3]
* 1
Expand Down

0 comments on commit 2f14a81

Please sign in to comment.