FIX: Don't set holiday user status for non-holiday calendars (#425)

This commit is contained in:
Jan Cernik 2023-08-01 10:18:05 -03:00 committed by GitHub
parent dc32b1f6a5
commit 6309490901
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View File

@ -6,7 +6,7 @@ class CalendarEvent < ActiveRecord::Base
belongs_to :user
after_save do
if SiteSetting.enable_user_status && underway?
if SiteSetting.enable_user_status && is_holiday? && underway?
DiscourseCalendar::HolidayStatus.set!(user, ends_at)
end
end
@ -22,6 +22,10 @@ class CalendarEvent < ActiveRecord::Base
start_date <= now && now < ends_at
end
def is_holiday?
SiteSetting.holiday_calendar_topic_id.to_i == topic_id
end
def in_future?
start_date > Time.zone.now
end

View File

@ -589,6 +589,20 @@ describe Post do
expect(status.emoji).to eq(custom_status[:emoji])
end
context "when using multiple calendars" do
let(:regular_calendar_post) { create_post(raw: "[calendar]\n[/calendar]") }
it "doesn't set holiday user status for a non-holiday calendar" do
freeze_time Time.utc(2018, 6, 5, 10, 30)
raw = 'Meeting [date="2018-06-05" time="10:20:00"] to [date="2018-06-06" time="10:20:00"]'
post = create_post(raw: raw, topic: regular_calendar_post.topic, user: user)
# a holiday status wasn't set:
expect(post.user.user_status).to be_nil
end
end
context "when custom emoji is set" do
custom_emoji = "palm_tree"