2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-06 09:10:25 +08:00

FEATURE: group_removes_trust_level setting

By default in Discourse, if a group grants a user a particular trust
level that is locked even if they are removed from the group.

With this new setting, when a user is removed from a group their
trust level is set to either the next highest trust level based on group
membership, or they are unlocked and promoted based on the default
mechanisms.
This commit is contained in:
Robin Ward 2017-11-23 12:58:46 -05:00
parent 613f4d737a
commit ad07e6e172
3 changed files with 88 additions and 1 deletions

View file

@ -468,6 +468,67 @@ describe Group do
expect(u3.reload.trust_level).to eq(3)
end
describe "group_removes_trust_level" do
context "set to false" do
before do
SiteSetting.group_removes_trust_level = false
end
it "maintains the chosen trust level" do
g0 = Fabricate(:group, grant_trust_level: 2)
g1 = Fabricate(:group, grant_trust_level: 3)
user = Fabricate(:user, trust_level: 0)
g0.add(user)
expect(user.reload.trust_level).to eq(2)
g1.add(user)
expect(user.reload.trust_level).to eq(3)
g1.remove(user)
expect(user.reload.trust_level).to eq(3)
g0.remove(user)
expect(user.reload.trust_level).to eq(3)
end
end
context "set to true" do
before do
SiteSetting.group_removes_trust_level = true
end
it "adjusts the user trust level" do
g0 = Fabricate(:group, grant_trust_level: 2)
g1 = Fabricate(:group, grant_trust_level: 3)
g2 = Fabricate(:group)
# Add a group without one to consider `NULL` check
g2.add(user)
user = Fabricate(:user, trust_level: 0)
g0.add(user)
expect(user.reload.trust_level).to eq(2)
expect(user.trust_level_locked?).to eq(true)
g1.add(user)
expect(user.reload.trust_level).to eq(3)
expect(user.trust_level_locked?).to eq(true)
g1.remove(user)
expect(user.reload.trust_level).to eq(2)
expect(user.trust_level_locked?).to eq(true)
g0.remove(user)
expect(user.reload.trust_level).to eq(0)
expect(user.trust_level_locked?).to eq(false)
end
end
end
it 'should cook the bio' do
group = Fabricate(:group)
group.update_attributes!(bio_raw: 'This is a group for :unicorn: lovers')