FIX: `min` setting should be greater than 0 for multiple type polls.
This commit is contained in:
parent
cc66bff730
commit
2f14a81fa4
|
@ -92,10 +92,11 @@ module DiscoursePoll
|
|||
|
||||
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
|
||||
|
|
|
@ -193,7 +193,37 @@ describe ::DiscoursePoll::PollsValidator do
|
|||
)
|
||||
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
|
||||
|
@ -206,7 +236,9 @@ describe ::DiscoursePoll::PollsValidator do
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue