Skip to content
This repository was archived by the owner on Jul 15, 2025. It is now read-only.

Commit 764e306

Browse files
committed
DEV: Make specs compatible with upcoming Rails 8 upgrade
Rails 8 changes a bit how are handled time objects. When rendering them to a string, they now always include their timezone even for UTC.
1 parent b1ace0a commit 764e306

File tree

1 file changed

+43
-37
lines changed

1 file changed

+43
-37
lines changed

spec/models/discourse_post_event/event_spec.rb

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
let(:topic) { Fabricate(:topic, user: user) }
1515
let!(:first_post) { Fabricate(:post, topic: topic) }
1616
let(:second_post) { Fabricate(:post, topic: topic) }
17-
let!(:starts_at) { "2020-04-24 14:15:00" }
18-
let!(:ends_at) { "2020-04-24 16:15:00" }
19-
let!(:alt_starts_at) { "2020-04-24 14:14:25" }
20-
let!(:alt_ends_at) { "2020-04-24 19:15:25" }
17+
let!(:starts_at) { Time.zone.parse("2020-04-24 14:15:00") }
18+
let!(:ends_at) { Time.zone.parse("2020-04-24 16:15:00") }
19+
let!(:alt_starts_at) { Time.zone.parse("2020-04-24 14:14:25") }
20+
let!(:alt_ends_at) { Time.zone.parse("2020-04-24 19:15:25") }
2121
let(:event) do
2222
DiscoursePostEvent::Event.create!(
2323
id: first_post.id,
@@ -32,6 +32,14 @@
3232
original_ends_at: Time.now - 8.hours,
3333
)
3434
end
35+
let(:first_post_starts_at) do
36+
Time.zone.parse(
37+
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
38+
)
39+
end
40+
let(:first_post_ends_at) do
41+
Time.zone.parse(first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT])
42+
end
3543

3644
describe "#after_commit[:create, :update]" do
3745
context "when a post event has been created" do
@@ -49,16 +57,10 @@
4957
}.to change { DiscoursePostEvent::EventDate.count }
5058
first_post.topic.reload
5159

52-
expect(
53-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
54-
).to eq(starts_at)
55-
expect(
56-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
57-
).to eq(ends_at)
58-
expect(DiscoursePostEvent::EventDate.last.starts_at).to eq_time(
59-
DateTime.parse(starts_at),
60-
)
61-
expect(DiscoursePostEvent::EventDate.last.ends_at).to eq_time(DateTime.parse(ends_at))
60+
expect(first_post_starts_at).to eq_time(starts_at)
61+
expect(first_post_ends_at).to eq_time(ends_at)
62+
expect(DiscoursePostEvent::EventDate.last.starts_at).to eq_time(starts_at)
63+
expect(DiscoursePostEvent::EventDate.last.ends_at).to eq_time(ends_at)
6264
end
6365
end
6466

@@ -108,15 +110,11 @@
108110
first_post.topic.reload
109111

110112
expect(first_post.is_first_post?).to be(true)
111-
expect(
112-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
113-
).to eq(starts_at)
114-
expect(
115-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
116-
).to eq(ends_at)
113+
expect(first_post_starts_at).to eq_time(starts_at)
114+
expect(first_post_ends_at).to eq_time(ends_at)
117115

118116
first_event_date = post_event.event_dates.last
119-
expect(first_event_date.starts_at).to eq_time(DateTime.parse(starts_at))
117+
expect(first_event_date.starts_at).to eq_time(starts_at)
120118
expect(first_event_date.finished_at).to be nil
121119

122120
post_event.update_with_params!(
@@ -129,18 +127,22 @@
129127
second_event_date = post_event.event_dates.last
130128

131129
expect(
132-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
130+
Time.zone.parse(
131+
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
132+
),
133133
).to eq(alt_starts_at)
134134
expect(
135-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
135+
Time.zone.parse(
136+
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
137+
),
136138
).to eq(alt_ends_at)
137139

138140
expect(first_event_date.finished_at).not_to be nil
139-
expect(second_event_date.starts_at).to eq_time(DateTime.parse(alt_starts_at))
141+
expect(second_event_date.starts_at).to eq_time(alt_starts_at)
140142

141143
second_event_date.update_columns(finished_at: Time.current)
142-
expect(post_event.starts_at).to eq_time(DateTime.parse(alt_starts_at))
143-
expect(post_event.ends_at).to eq_time(DateTime.parse(alt_ends_at))
144+
expect(post_event.starts_at).to eq_time(alt_starts_at)
145+
expect(post_event.ends_at).to eq_time(alt_ends_at)
144146
end
145147
end
146148

@@ -161,7 +163,7 @@
161163
).to be_blank
162164

163165
second_event_date = post_event.event_dates.last
164-
expect(second_event_date.starts_at).to eq_time(DateTime.parse(alt_starts_at))
166+
expect(second_event_date.starts_at).to eq_time(alt_starts_at)
165167
end
166168
end
167169
end
@@ -183,12 +185,8 @@
183185
first_post.topic.reload
184186

185187
expect(first_post.is_first_post?).to be(true)
186-
expect(
187-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
188-
).to eq(starts_at)
189-
expect(
190-
first_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
191-
).to eq(ends_at)
188+
expect(first_post_starts_at).to eq_time(starts_at)
189+
expect(first_post_ends_at).to eq_time(ends_at)
192190

193191
post_event.destroy!
194192
first_post.topic.reload
@@ -225,21 +223,29 @@
225223

226224
expect(first_post.is_first_post?).to be(true)
227225
expect(
228-
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
226+
Time.zone.parse(
227+
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
228+
),
229229
).to eq(starts_at)
230230
expect(
231-
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
231+
Time.zone.parse(
232+
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
233+
),
232234
).to eq(ends_at)
233235
expect(second_post.is_first_post?).to be(false)
234236

235237
second_post_event.destroy!
236238
second_post.topic.reload
237239

238240
expect(
239-
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
241+
Time.zone.parse(
242+
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_STARTS_AT],
243+
),
240244
).to eq(starts_at)
241245
expect(
242-
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
246+
Time.zone.parse(
247+
second_post.topic.custom_fields[DiscoursePostEvent::TOPIC_POST_EVENT_ENDS_AT],
248+
),
243249
).to eq(ends_at)
244250
end
245251
end

0 commit comments

Comments
 (0)