FEATURE: option to update default notification level of existing users. (#14084)
Previously, a group's `default_notification_level` change will only affect the users added after it. Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
This commit is contained in:
@@ -883,6 +883,67 @@ describe GroupsController do
|
||||
|
||||
context "user default notifications" do
|
||||
it "should update default notification preference for existing users" do
|
||||
group.update!(default_notification_level: NotificationLevels.all[:watching])
|
||||
user1 = Fabricate(:user)
|
||||
user2 = Fabricate(:user)
|
||||
group.add(user1)
|
||||
group.add(user2)
|
||||
group_user1 = user1.group_users.first
|
||||
group_user2 = user2.group_users.first
|
||||
|
||||
put "/groups/#{group.id}.json", params: {
|
||||
group: {
|
||||
default_notification_level: NotificationLevels.all[:tracking]
|
||||
}
|
||||
}
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
|
||||
expect(group_user1.reload.notification_level).to eq(NotificationLevels.all[:watching])
|
||||
expect(group_user2.reload.notification_level).to eq(NotificationLevels.all[:watching])
|
||||
|
||||
group_users = group.group_users
|
||||
expect(response.parsed_body["user_count"]).to eq(group_users.count)
|
||||
|
||||
group_user1.update!(notification_level: NotificationLevels.all[:regular])
|
||||
|
||||
put "/groups/#{group.id}.json", params: {
|
||||
group: {
|
||||
default_notification_level: NotificationLevels.all[:tracking]
|
||||
}
|
||||
}
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(response.parsed_body["user_count"]).to eq(group.group_users.count - 1)
|
||||
expect(group_user1.reload.notification_level).to eq(NotificationLevels.all[:regular])
|
||||
expect(group_user2.reload.notification_level).to eq(NotificationLevels.all[:watching])
|
||||
|
||||
put "/groups/#{group.id}.json", params: {
|
||||
group: {
|
||||
default_notification_level: NotificationLevels.all[:tracking]
|
||||
},
|
||||
update_existing_users: true
|
||||
}
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(response.parsed_body["success"]).to eq("OK")
|
||||
expect(group_user1.reload.notification_level).to eq(NotificationLevels.all[:regular])
|
||||
expect(group_user2.reload.notification_level).to eq(NotificationLevels.all[:tracking])
|
||||
|
||||
put "/groups/#{group.id}.json", params: {
|
||||
group: {
|
||||
default_notification_level: NotificationLevels.all[:regular]
|
||||
},
|
||||
update_existing_users: false
|
||||
}
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(response.parsed_body["success"]).to eq("OK")
|
||||
expect(group_user1.reload.notification_level).to eq(NotificationLevels.all[:regular])
|
||||
expect(group_user2.reload.notification_level).to eq(NotificationLevels.all[:tracking])
|
||||
end
|
||||
|
||||
it "should update category & tag notification preferences for existing users" do
|
||||
user1 = Fabricate(:user)
|
||||
user2 = Fabricate(:user)
|
||||
CategoryUser.create!(user: user1, category: category, notification_level: 4)
|
||||
|
||||
Reference in New Issue
Block a user