kalibro_configuration_spec.rb
4.52 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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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) }
context 'when the kalibro configuration exists' do
before :each do
# Map the kalibro_configuration attributes to the corresponding Kalibro Configuration
kalibro_configurations.each do |kc|
KalibroConfiguration.stubs(:find).with(kc.id).returns(kc)
end
KalibroConfigurationAttributes.expects(:where).with(public: true).returns(public_attrs)
end
context 'when user is not provided' do
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(user_id: one_user.id, public: false).returns([ones_private_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
context 'when the kalibro configuration does not' do
before :each do
# Map the kalibro_configuration attributes to the corresponding Kalibro Configuration
kalibro_configurations.each do |kc|
KalibroConfiguration.stubs(:find).with(kc.id).raises(KalibroClient::Errors::RecordNotFound)
end
KalibroConfigurationAttributes.expects(:where).with(public: true).returns(public_attrs)
end
it 'is expected to be empty' do
expect(KalibroConfiguration.public).to be_empty
end
end
end
end
describe 'destroy' do
context 'when attributes exist' do
let!(:kalibro_configuration_attributes) { FactoryGirl.build(:kalibro_configuration_attributes) }
let!(:kalibro_configuration) { kalibro_configuration_attributes.kalibro_configuration }
it 'should be destroyed' do
kalibro_configuration.expects(:attributes).twice.returns(kalibro_configuration_attributes)
kalibro_configuration_attributes.expects(:destroy)
KalibroClient::Entities::Configurations::KalibroConfiguration.any_instance.expects(:destroy).returns(kalibro_configuration)
kalibro_configuration.destroy
end
it 'is expected to clean the attributes memoization' do
# Call attributes once so it memoizes
KalibroConfigurationAttributes.expects(:find_by).with(kalibro_configuration_id: kalibro_configuration.id).returns(kalibro_configuration_attributes)
expect(kalibro_configuration.attributes).to eq(kalibro_configuration_attributes)
# Destroying
kalibro_configuration.destroy
# The expectation call will try to find the attributes on the database which should be nil since it was destroyed
KalibroConfigurationAttributes.expects(:find_by).with(kalibro_configuration_id: kalibro_configuration.id).returns(nil)
expect(kalibro_configuration.attributes).to be_nil
end
end
end
end
end