mirror of
https://github.com/discourse/discourse.git
synced 2025-05-31 01:17:16 +08:00
BUGFIX: trust_level_0 group not including trust_level_1
BUGFIX: manual trust level change not adding user to groups BUGFIX: system not in correct trust level groups
This commit is contained in:
@ -2,6 +2,14 @@ require 'spec_helper'
|
||||
|
||||
describe Group do
|
||||
|
||||
# UGLY but perf is horrible with this callback
|
||||
before do
|
||||
User.set_callback(:create, :after, :ensure_in_trust_level_group)
|
||||
end
|
||||
after do
|
||||
User.skip_callback(:create, :after, :ensure_in_trust_level_group)
|
||||
end
|
||||
|
||||
describe "validation" do
|
||||
let(:group) { build(:group) }
|
||||
|
||||
@ -71,19 +79,21 @@ describe Group do
|
||||
|
||||
it "Correctly updates automatic trust level groups" do
|
||||
user = Fabricate(:user)
|
||||
Group[:registered_users].user_ids.should include user.id
|
||||
|
||||
user.change_trust_level!(:basic)
|
||||
|
||||
Group[:trust_level_1].user_ids.should == [user.id]
|
||||
Group[:trust_level_1].user_ids.should include user.id
|
||||
|
||||
user.change_trust_level!(:regular)
|
||||
|
||||
Group[:trust_level_1].user_ids.should == []
|
||||
Group[:trust_level_2].user_ids.should == [user.id]
|
||||
Group[:trust_level_1].user_ids.should include user.id
|
||||
Group[:trust_level_2].user_ids.should include user.id
|
||||
|
||||
user2 = Fabricate(:coding_horror)
|
||||
user2.change_trust_level!(:regular)
|
||||
|
||||
Group[:trust_level_2].user_ids.sort.should == [user.id, user2.id].sort
|
||||
Group[:trust_level_2].user_ids.sort.should == [-1, user.id, user2.id].sort
|
||||
end
|
||||
|
||||
it "Correctly updates all automatic groups upon request" do
|
||||
@ -106,9 +116,16 @@ describe Group do
|
||||
g.users.count.should == 2
|
||||
g.user_count.should == 2
|
||||
|
||||
|
||||
g = groups.find{|g| g.id == Group::AUTO_GROUPS[:trust_level_1]}
|
||||
# admin, system and user
|
||||
g.users.count.should == 3
|
||||
g.user_count.should == 3
|
||||
|
||||
g = groups.find{|g| g.id == Group::AUTO_GROUPS[:trust_level_2]}
|
||||
g.users.count.should == 1
|
||||
g.user_count.should == 1
|
||||
# system and user
|
||||
g.users.count.should == 2
|
||||
g.user_count.should == 2
|
||||
|
||||
end
|
||||
|
||||
@ -136,7 +153,6 @@ describe Group do
|
||||
|
||||
it "correctly destroys groups" do
|
||||
|
||||
original_count = GroupUser.count
|
||||
g = Fabricate(:group)
|
||||
u1 = Fabricate(:user)
|
||||
g.add(u1)
|
||||
@ -145,7 +161,7 @@ describe Group do
|
||||
g.destroy
|
||||
|
||||
User.where(id: u1.id).count.should == 1
|
||||
GroupUser.count.should == original_count
|
||||
GroupUser.where(group_id: g.id).count.should == 0
|
||||
end
|
||||
|
||||
|
||||
@ -167,4 +183,20 @@ describe Group do
|
||||
group.id.should == Group[group.name.to_sym].id
|
||||
end
|
||||
|
||||
it "can find desired groups correctly" do
|
||||
Group.desired_trust_level_groups(2).sort.should == [10,11,12]
|
||||
end
|
||||
|
||||
|
||||
it "correctly handles trust level changes" do
|
||||
user = Fabricate(:user, trust_level: 2)
|
||||
Group.user_trust_level_change!(user.id, 2)
|
||||
|
||||
user.groups.map(&:name).sort.should == ["registered_users","trust_level_1", "trust_level_2"]
|
||||
|
||||
Group.user_trust_level_change!(user.id, 0)
|
||||
user.reload
|
||||
user.groups.map(&:name).sort.should == ["registered_users"]
|
||||
end
|
||||
|
||||
end
|
||||
|
Reference in New Issue
Block a user