FIX: Adding a public topic timer deletes a private topic timer.

This commit is contained in:
Guo Xiang Tan 2017-10-04 16:31:40 +08:00
parent 5881355006
commit 1310181664
2 changed files with 11 additions and 2 deletions

View File

@ -1022,8 +1022,9 @@ SQL
def set_or_create_timer(status_type, time, by_user: nil, timezone_offset: 0, based_on_last_post: false, category_id: SiteSetting.uncategorized_category_id)
return delete_topic_timer(status_type, by_user: by_user) if time.blank?
topic_timer_options = { topic: self }
topic_timer_options.merge!(user: by_user) unless TopicTimer.public_types[status_type]
public_topic_timer = !!TopicTimer.public_types[status_type]
topic_timer_options = { topic: self, public_type: public_topic_timer }
topic_timer_options.merge!(user: by_user) unless public_topic_timer
topic_timer = TopicTimer.find_or_initialize_by(topic_timer_options)
topic_timer.status_type = status_type

View File

@ -1333,6 +1333,14 @@ describe Topic do
}.to change { TopicTimer.count }.by(1)
end
it 'should not be override when setting a public topic timer' do
reminder
expect do
topic.set_or_create_timer(TopicTimer.types[:close], 3, by_user: reminder.user)
end.to change { TopicTimer.count }.by(1)
end
it "can update a user's existing record" do
freeze_time now