FIX: event serializer start and end date (#117)

When all events are finished (not pending) serializer is not sorting correctly and not taking the lastly updated event_date. That is causing an issue that even though the database is updated correctly, it is not reflected in UI
This commit is contained in:
Krzysztof Kotlarek 2021-04-08 10:10:55 +10:00 committed by GitHub
parent ece9fef84f
commit ac765a320c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View File

@ -65,12 +65,12 @@ module DiscoursePostEvent
def starts_at
event_dates.pending.order(:starts_at).last&.starts_at ||
event_dates.order(:starts_at).last&.starts_at
event_dates.order(:updated_at, :id).last&.starts_at
end
def ends_at
event_dates.pending.order(:starts_at).last&.ends_at ||
event_dates.order(:starts_at).last&.ends_at
event_dates.order(:updated_at, :id).last&.ends_at
end
validates :original_starts_at, presence: true

View File

@ -23,8 +23,8 @@ describe DiscoursePostEvent::Event do
let(:second_post) { Fabricate(:post, topic: topic) }
let!(:starts_at) { '2020-04-24 14:15:00' }
let!(:ends_at) { '2020-04-24 16:15:00' }
let!(:alt_starts_at) { '2020-04-25 17:15:25' }
let!(:alt_ends_at) { '2020-04-25 19:15:25' }
let!(:alt_starts_at) { '2020-04-24 14:14:25' }
let!(:alt_ends_at) { '2020-04-24 19:15:25' }
describe '#after_commit[:create, :update]' do
context 'a post event has been created' do
@ -84,6 +84,10 @@ describe DiscoursePostEvent::Event do
expect(first_event_date.finished_at).not_to be nil
expect(second_event_date.starts_at).to eq_time(DateTime.parse(alt_starts_at))
second_event_date.update_columns(finished_at: Time.current)
expect(post_event.starts_at).to eq_time(DateTime.parse(alt_starts_at))
expect(post_event.ends_at).to eq_time(DateTime.parse(alt_ends_at))
end
end