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:
parent
613f4d737a
commit
ad07e6e172
3 changed files with 88 additions and 1 deletions
|
@ -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')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue