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