Commit 8f8736f2b588468bf358062ffd2da2f053f9b198
1 parent
7048a0b6
Exists in
colab
and in
4 other branches
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,35 +49,26 @@ describe ReadingGroup, :type => :model do | ||
49 | 49 | ||
50 | describe 'class methods' do | 50 | describe 'class methods' do |
51 | describe 'public_or_owned_by_user' do | 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 | let(:public_reading_groups) { public_attrs.map(&:reading_group) } | 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 | before :each do | 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 | end | 72 | end |
82 | 73 | ||
83 | ReadingGroupAttributes.expects(:where).with(public: true).returns(public_attrs) | 74 | ReadingGroupAttributes.expects(:where).with(public: true).returns(public_attrs) |
@@ -91,20 +82,22 @@ describe ReadingGroup, :type => :model do | @@ -91,20 +82,22 @@ describe ReadingGroup, :type => :model do | ||
91 | 82 | ||
92 | context 'when user is provided' do | 83 | context 'when user is provided' do |
93 | before do | 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 | end | 86 | end |
96 | 87 | ||
97 | it 'should find all public and owned reading groups' do | 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 | end | 92 | end |
100 | end | 93 | end |
101 | end | 94 | end |
102 | 95 | ||
103 | - context 'when the reading group does not' do | 96 | + context 'when no reading groups exist' do |
104 | before :each do | 97 | before :each do |
105 | # Map the reading group attributes to the corresponding Reading Group | 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 | end | 101 | end |
109 | 102 | ||
110 | ReadingGroupAttributes.expects(:where).with(public: true).returns(public_attrs) | 103 | ReadingGroupAttributes.expects(:where).with(public: true).returns(public_attrs) |