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:
Sam
2014-06-17 10:46:30 +10:00
parent 73a4309723
commit 56dcd00570
10 changed files with 133 additions and 146 deletions

View File

@ -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