mirror of
https://github.com/discourse/discourse.git
synced 2025-09-06 10:50:21 +08:00
FEATURE: remove the timecop gem
We should only have one way of mocking time, misuse of timecop was causing build stability issues
This commit is contained in:
parent
40174962e2
commit
045a2abcec
35 changed files with 459 additions and 473 deletions
|
@ -1164,68 +1164,60 @@ describe Topic do
|
|||
before { Discourse.stubs(:system_user).returns(admin) }
|
||||
|
||||
it 'can take a number of hours as an integer' do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], 72, by_user: admin)
|
||||
expect(topic.topic_timers.first.execute_at).to eq(3.days.from_now)
|
||||
end
|
||||
freeze_time now
|
||||
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], 72, by_user: admin)
|
||||
expect(topic.topic_timers.first.execute_at).to eq(3.days.from_now)
|
||||
end
|
||||
|
||||
it 'can take a number of hours as an integer, with timezone offset' do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], 72, {by_user: admin, timezone_offset: 240})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(3.days.from_now)
|
||||
end
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], 72, {by_user: admin, timezone_offset: 240})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(3.days.from_now)
|
||||
end
|
||||
|
||||
it 'can take a number of hours as a string' do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '18', by_user: admin)
|
||||
expect(topic.topic_timers.first.execute_at).to eq(18.hours.from_now)
|
||||
end
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '18', by_user: admin)
|
||||
expect(topic.topic_timers.first.execute_at).to eq(18.hours.from_now)
|
||||
end
|
||||
|
||||
it 'can take a number of hours as a string, with timezone offset' do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '18', {by_user: admin, timezone_offset: 240})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(18.hours.from_now)
|
||||
end
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '18', {by_user: admin, timezone_offset: 240})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(18.hours.from_now)
|
||||
end
|
||||
|
||||
it 'can take a number of hours as a string and can handle based on last post' do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '18', {by_user: admin, based_on_last_post: true})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(18.hours.from_now)
|
||||
end
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '18', {by_user: admin, based_on_last_post: true})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(18.hours.from_now)
|
||||
end
|
||||
|
||||
it "can take a timestamp for a future time" do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-22 5:00', {by_user: admin})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.zone.local(2013,11,22,5,0))
|
||||
end
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-22 5:00', {by_user: admin})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.zone.local(2013,11,22,5,0))
|
||||
end
|
||||
|
||||
it "can take a timestamp for a future time, with timezone offset" do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-22 5:00', {by_user: admin, timezone_offset: 240})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.zone.local(2013,11,22,9,0))
|
||||
end
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-22 5:00', {by_user: admin, timezone_offset: 240})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.zone.local(2013,11,22,9,0))
|
||||
end
|
||||
|
||||
it "sets a validation error when given a timestamp in the past" do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-19 5:00', {by_user: admin})
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-19 5:00', {by_user: admin})
|
||||
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.zone.local(2013,11,19,5,0))
|
||||
expect(topic.topic_timers.first.errors[:execute_at]).to be_present
|
||||
end
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.zone.local(2013,11,19,5,0))
|
||||
expect(topic.topic_timers.first.errors[:execute_at]).to be_present
|
||||
end
|
||||
|
||||
it "can take a timestamp with timezone" do
|
||||
Timecop.freeze(now) do
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-25T01:35:00-08:00', {by_user: admin})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.utc(2013,11,25,9,35))
|
||||
end
|
||||
freeze_time now
|
||||
topic.set_or_create_timer(TopicTimer.types[:close], '2013-11-25T01:35:00-08:00', {by_user: admin})
|
||||
expect(topic.topic_timers.first.execute_at).to eq(Time.utc(2013,11,25,9,35))
|
||||
end
|
||||
|
||||
it 'sets topic status update user to given user if it is a staff or TL4 user' do
|
||||
|
@ -1267,20 +1259,19 @@ describe Topic do
|
|||
end
|
||||
|
||||
it 'updates topic status update execute_at if it was already set to close' do
|
||||
Timecop.freeze(now) do
|
||||
closing_topic.set_or_create_timer(TopicTimer.types[:close], 48)
|
||||
expect(closing_topic.reload.public_topic_timer.execute_at).to eq(2.days.from_now)
|
||||
end
|
||||
freeze_time now
|
||||
closing_topic.set_or_create_timer(TopicTimer.types[:close], 48)
|
||||
expect(closing_topic.reload.public_topic_timer.execute_at).to eq(2.days.from_now)
|
||||
end
|
||||
|
||||
it 'should allow status_type to be updated' do
|
||||
Timecop.freeze do
|
||||
topic_timer = closing_topic.set_or_create_timer(
|
||||
TopicTimer.types[:publish_to_category], 72, by_user: admin
|
||||
)
|
||||
freeze_time
|
||||
|
||||
expect(topic_timer.execute_at).to eq(3.days.from_now)
|
||||
end
|
||||
topic_timer = closing_topic.set_or_create_timer(
|
||||
TopicTimer.types[:publish_to_category], 72, by_user: admin
|
||||
)
|
||||
|
||||
expect(topic_timer.execute_at).to eq(3.days.from_now)
|
||||
end
|
||||
|
||||
it "does not update topic's topic status created_at it was already set to close" do
|
||||
|
@ -1300,10 +1291,10 @@ describe Topic do
|
|||
|
||||
expect(topic.reload.closed).to eq(false)
|
||||
|
||||
Timecop.travel(3.hours.from_now) do
|
||||
TopicTimer.ensure_consistency!
|
||||
expect(topic.reload.closed).to eq(true)
|
||||
end
|
||||
freeze_time 3.hours.from_now
|
||||
|
||||
TopicTimer.ensure_consistency!
|
||||
expect(topic.reload.closed).to eq(true)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1320,14 +1311,14 @@ describe Topic do
|
|||
end
|
||||
|
||||
it "can update a user's existing record" do
|
||||
Timecop.freeze(now) do
|
||||
reminder
|
||||
expect {
|
||||
topic.set_or_create_timer(TopicTimer.types[:reminder], 11, by_user: admin)
|
||||
}.to_not change { TopicTimer.count }
|
||||
reminder.reload
|
||||
expect(reminder.execute_at).to eq(11.hours.from_now)
|
||||
end
|
||||
freeze_time now
|
||||
|
||||
reminder
|
||||
expect {
|
||||
topic.set_or_create_timer(TopicTimer.types[:reminder], 11, by_user: admin)
|
||||
}.to_not change { TopicTimer.count }
|
||||
reminder.reload
|
||||
expect(reminder.execute_at).to eq(11.hours.from_now)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1510,16 +1501,15 @@ describe Topic do
|
|||
|
||||
describe '#listable_count_per_day' do
|
||||
before(:each) do
|
||||
Timecop.freeze
|
||||
freeze_time
|
||||
|
||||
Fabricate(:topic)
|
||||
Fabricate(:topic, created_at: 1.day.ago)
|
||||
Fabricate(:topic, created_at: 1.day.ago)
|
||||
Fabricate(:topic, created_at: 2.days.ago)
|
||||
Fabricate(:topic, created_at: 4.days.ago)
|
||||
end
|
||||
after(:each) do
|
||||
Timecop.return
|
||||
end
|
||||
|
||||
let(:listable_topics_count_per_day) { {1.day.ago.to_date => 2, 2.days.ago.to_date => 1, Time.now.utc.to_date => 1 } }
|
||||
|
||||
it 'collect closed interval listable topics count' do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue