Commit 8f8736f2b588468bf358062ffd2da2f053f9b198

Authored by Daniel
1 parent 7048a0b6

Refactor ReadingGroup model visibility tests

Showing 1 changed file with 21 additions and 28 deletions   Show diff stats
spec/models/reading_group_spec.rb
... ... @@ -49,35 +49,26 @@ describe ReadingGroup, :type => :model do
49 49  
50 50 describe 'class methods' do
51 51 describe 'public_or_owned_by_user' do
52   - def build_attrs(rg_iter, *traits, **params)
53   - reading_group = rg_iter.next
54   - attr = FactoryGirl.build(:reading_group_attributes, *traits, params.merge(reading_group: reading_group))
55   - reading_group.stubs(:attributes).returns(attr)
56   - attr
57   - end
58   -
59   - let!(:reading_groups) { FactoryGirl.build_list(:reading_group, 4, :with_id) }
60   - let!(:rgs_iter) { reading_groups.each }
61   -
62   - let!(:one_user) { FactoryGirl.build(:user) }
63   - let!(:other_user) { FactoryGirl.build(:another_user) }
  52 + let!(:user) { FactoryGirl.build(:user) }
64 53  
65   - let!(:ones_private_attrs) { build_attrs(rgs_iter, :private, user: one_user) }
66   - let!(:others_private_attrs) { build_attrs(rgs_iter, :private, user: other_user) }
67   - let!(:ones_public_attrs) { build_attrs(rgs_iter, user: one_user) }
68   - let!(:others_public_attrs) { build_attrs(rgs_iter, user: other_user) }
  54 + let!(:owned_private_attrs) { FactoryGirl.build(:reading_group_attributes, :private, user_id: user.id) }
  55 + let!(:owned_public_attrs) { FactoryGirl.build(:reading_group_attributes, user_id: user.id) }
  56 + let!(:not_owned_private_attrs) { FactoryGirl.build(:reading_group_attributes, :private, user_id: user.id+1) }
  57 + let!(:not_owned_public_attrs) { FactoryGirl.build(:reading_group_attributes, user_id: user.id+1) }
69 58  
70   - let!(:public_attrs) { [ones_public_attrs, others_public_attrs] }
  59 + let!(:public_attrs) { [owned_public_attrs, not_owned_public_attrs] }
71 60 let(:public_reading_groups) { public_attrs.map(&:reading_group) }
72 61  
73   - let(:ones_or_public_attrs) { public_attrs + [ones_private_attrs] }
74   - let(:ones_or_public_reading_groups) { ones_or_public_attrs.map(&:reading_group) }
  62 + let!(:owned_or_public_attrs) { public_attrs + [owned_private_attrs] }
  63 + let!(:owned_or_public_reading_groups) { owned_or_public_attrs.map(&:reading_group) }
75 64  
76   - context 'when the reading group exists' do
  65 + let(:all_reading_groups) { owned_or_public_reading_groups + [not_owned_private_attrs.reading_group] }
  66 +
  67 + context 'when reading groups exist' do
77 68 before :each do
78   - # Map the reading group attributes to the corresponding Reading Group
79   - reading_groups.each do |rg|
80   - ReadingGroup.stubs(:find).with(rg.id).returns(rg)
  69 + # Make sure the reading groups are found when looked up by the Attributes by their id
  70 + all_reading_groups.each do |reading_group|
  71 + ReadingGroup.stubs(:find).with(reading_group.id).returns(reading_group)
81 72 end
82 73  
83 74 ReadingGroupAttributes.expects(:where).with(public: true).returns(public_attrs)
... ... @@ -91,20 +82,22 @@ describe ReadingGroup, :type => :model do
91 82  
92 83 context 'when user is provided' do
93 84 before do
94   - ReadingGroupAttributes.expects(:where).with(user_id: one_user.id, public: false).returns([ones_private_attrs])
  85 + ReadingGroupAttributes.expects(:where).with(user_id: user.id, public: false).returns([owned_private_attrs])
95 86 end
96 87  
97 88 it 'should find all public and owned reading groups' do
98   - expect(ReadingGroup.public_or_owned_by_user(one_user)).to eq(ones_or_public_reading_groups)
  89 + p all_reading_groups
  90 +
  91 + expect(ReadingGroup.public_or_owned_by_user(user)).to eq(owned_or_public_reading_groups)
99 92 end
100 93 end
101 94 end
102 95  
103   - context 'when the reading group does not' do
  96 + context 'when no reading groups exist' do
104 97 before :each do
105 98 # Map the reading group attributes to the corresponding Reading Group
106   - reading_groups.each do |rg|
107   - ReadingGroup.stubs(:find).with(rg.id).raises(KalibroClient::Errors::RecordNotFound)
  99 + all_reading_groups.each do |reading_group|
  100 + ReadingGroup.stubs(:find).with(reading_group.id).raises(KalibroClient::Errors::RecordNotFound)
108 101 end
109 102  
110 103 ReadingGroupAttributes.expects(:where).with(public: true).returns(public_attrs)
... ...