Use validation matchers for PollExpirationValidator spec (#37616)
This commit is contained in:
parent
1d4c2c5670
commit
a28ccf2950
@ -119,6 +119,7 @@ RSpec.configure do |config|
|
|||||||
config.include SignedRequestHelpers, type: :request
|
config.include SignedRequestHelpers, type: :request
|
||||||
config.include CommandLineHelpers, type: :cli
|
config.include CommandLineHelpers, type: :cli
|
||||||
config.include SystemHelpers, type: :system
|
config.include SystemHelpers, type: :system
|
||||||
|
config.include Shoulda::Matchers::ActiveModel, type: :validator
|
||||||
|
|
||||||
# TODO: Remove when Devise fixes https://github.com/heartcombo/devise/issues/5705
|
# TODO: Remove when Devise fixes https://github.com/heartcombo/devise/issues/5705
|
||||||
config.before do
|
config.before do
|
||||||
|
|||||||
@ -3,35 +3,23 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe PollExpirationValidator do
|
RSpec.describe PollExpirationValidator do
|
||||||
describe '#validate' do
|
subject { Fabricate.build :poll }
|
||||||
before do
|
|
||||||
validator.validate(poll)
|
|
||||||
end
|
|
||||||
|
|
||||||
let(:validator) { described_class.new }
|
context 'when poll expires in far future' do
|
||||||
let(:poll) { instance_double(Poll, options: options, expires_at: expires_at, errors: errors) }
|
let(:far_future) { 6.months.from_now }
|
||||||
let(:errors) { instance_double(ActiveModel::Errors, add: nil) }
|
|
||||||
let(:options) { %w(foo bar) }
|
|
||||||
let(:expires_at) { 1.day.from_now }
|
|
||||||
|
|
||||||
it 'has no errors' do
|
it { is_expected.to_not allow_value(far_future).for(:expires_at).with_message(I18n.t('polls.errors.duration_too_long')) }
|
||||||
expect(errors).to_not have_received(:add)
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context 'when the poll expires in 5 min from now' do
|
context 'when poll expires in far past' do
|
||||||
let(:expires_at) { 5.minutes.from_now }
|
let(:past_date) { 6.days.ago }
|
||||||
|
|
||||||
it 'has no errors' do
|
it { is_expected.to_not allow_value(past_date).for(:expires_at).with_message(I18n.t('polls.errors.duration_too_short')) }
|
||||||
expect(errors).to_not have_received(:add)
|
end
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when the poll expires in the past' do
|
context 'when poll expires in medium future' do
|
||||||
let(:expires_at) { 5.minutes.ago }
|
let(:allowed_future) { 10.minutes.from_now }
|
||||||
|
|
||||||
it 'has errors' do
|
it { is_expected.to allow_value(allowed_future).for(:expires_at) }
|
||||||
expect(errors).to have_received(:add)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user