kalibro_configuration_spec.rb
2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
require 'rails_helper'
describe KalibroConfiguration, :type => :model do
describe 'methods' do
describe 'class methods' do
describe 'public_or_owned_by_user' do
def build_attrs(kc_iter, *traits, **params)
kalibro_configuration = kc_iter.next
attr = FactoryGirl.build(:kalibro_configuration_attributes, *traits, params.merge(kalibro_configuration: kalibro_configuration))
kalibro_configuration.stubs(:attributes).returns(attr)
attr
end
let!(:kalibro_configurations) { FactoryGirl.build_list(:kalibro_configuration, 4, :with_sequential_id) }
let!(:kc_iter) { kalibro_configurations.each }
let!(:one_user) { FactoryGirl.build(:user) }
let!(:other_user) { FactoryGirl.build(:another_user) }
let!(:ones_private_attrs) { build_attrs(kc_iter, :private, user: one_user) }
let!(:others_private_attrs) { build_attrs(kc_iter, :private, user: other_user) }
let!(:ones_public_attrs) { build_attrs(kc_iter, user: one_user) }
let!(:others_public_attrs) { build_attrs(kc_iter, user: other_user) }
let!(:public_attrs) { [ones_public_attrs, others_public_attrs] }
let(:public_kalibro_configurations) { public_attrs.map(&:kalibro_configuration) }
let(:ones_or_public_attrs) { public_attrs + [ones_private_attrs] }
let(:ones_or_public_kalibro_configurations) { ones_or_public_attrs.map(&:kalibro_configuration) }
before :each do
# Map the reading group attributes to the corresponding Reading Group
kalibro_configurations.each do |kc|
KalibroConfiguration.stubs(:find).with(kc.id).returns(kc)
end
end
context 'when user is not provided' do
before do
KalibroConfigurationAttributes.expects(:where).with(public: true).returns(public_attrs)
end
it 'should find all public reading groups' do
expect(KalibroConfiguration.public).to eq(public_kalibro_configurations)
end
end
context 'when user is provided' do
before do
KalibroConfigurationAttributes.expects(:where).with(kind_of(String), one_user.id).returns(ones_or_public_attrs)
end
it 'should find all public and owned reading groups' do
expect(KalibroConfiguration.public_or_owned_by_user(one_user)).to eq(ones_or_public_kalibro_configurations)
end
end
end
end
end
end