kalibro_entities 0.0.1.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +21 -0
  6. data/AUTHORS +4 -0
  7. data/COPYING +674 -0
  8. data/COPYING.LESSER +165 -0
  9. data/Gemfile +4 -0
  10. data/README.md +77 -0
  11. data/Rakefile +6 -0
  12. data/cucumber.yml +1 -0
  13. data/features/base_tool/all_names.feature +8 -0
  14. data/features/base_tool/find_by_name.feature +12 -0
  15. data/features/configuration/all.feature +10 -0
  16. data/features/metric_configuration/find.feature +18 -0
  17. data/features/metric_configuration/metric_configurations_of.feature +18 -0
  18. data/features/metric_result/descendant_results.feature +19 -0
  19. data/features/metric_result/history_of.feature +20 -0
  20. data/features/metric_result/metric_results_of.feature +19 -0
  21. data/features/module_result/children.feature +18 -0
  22. data/features/module_result/find.feature +15 -0
  23. data/features/module_result/history_of.feature +11 -0
  24. data/features/processing/first_processing_after.feature +18 -0
  25. data/features/processing/first_processing_of.feature +18 -0
  26. data/features/processing/has_processing.feature +18 -0
  27. data/features/processing/has_processing_after.feature +18 -0
  28. data/features/processing/has_processing_before.feature +18 -0
  29. data/features/processing/has_ready_processing.feature +18 -0
  30. data/features/processing/last_processing_before.feature +18 -0
  31. data/features/processing/last_processing_of.feature +18 -0
  32. data/features/processing/last_processing_state_of.feature +18 -0
  33. data/features/processing/last_ready_processing_of.feature +18 -0
  34. data/features/processing/processing_of.feature +32 -0
  35. data/features/processing/processing_with_date_of.feature +32 -0
  36. data/features/project/all.feature +10 -0
  37. data/features/project/creation.feature +9 -0
  38. data/features/project/destroy.feature +10 -0
  39. data/features/project/exists.feature +9 -0
  40. data/features/project/find.feature +10 -0
  41. data/features/range/ranges_of.feature +22 -0
  42. data/features/range/save.feature +32 -0
  43. data/features/reading/find.feature +11 -0
  44. data/features/reading/readings_of.feature +11 -0
  45. data/features/reading_group/all.feature +10 -0
  46. data/features/repository/all.feature +14 -0
  47. data/features/repository/cancel_processing.feature +14 -0
  48. data/features/repository/find.feature +14 -0
  49. data/features/repository/of.feature +15 -0
  50. data/features/repository/process.feature +16 -0
  51. data/features/repository/types.feature +9 -0
  52. data/features/step_definitions/base_tool_steps.rb +28 -0
  53. data/features/step_definitions/configuration_steps.rb +11 -0
  54. data/features/step_definitions/metric_configuration_steps.rb +52 -0
  55. data/features/step_definitions/metric_result_steps.rb +29 -0
  56. data/features/step_definitions/metric_steps.rb +3 -0
  57. data/features/step_definitions/module_result_steps.rb +30 -0
  58. data/features/step_definitions/processing_steps.rb +91 -0
  59. data/features/step_definitions/project_steps.rb +48 -0
  60. data/features/step_definitions/range_steps.rb +41 -0
  61. data/features/step_definitions/reading_group_steps.rb +19 -0
  62. data/features/step_definitions/reading_steps.rb +20 -0
  63. data/features/step_definitions/repository_steps.rb +57 -0
  64. data/features/support/env.rb +25 -0
  65. data/features/support/kalibro_cucumber_helpers.yml.sample +10 -0
  66. data/kalibro_entities.gemspec +48 -0
  67. data/lib/kalibro_entities.rb +61 -0
  68. data/lib/kalibro_entities/entities.rb +37 -0
  69. data/lib/kalibro_entities/entities/base_tool.rb +54 -0
  70. data/lib/kalibro_entities/entities/configuration.rb +33 -0
  71. data/lib/kalibro_entities/entities/date_metric_result.rb +39 -0
  72. data/lib/kalibro_entities/entities/date_module_result.rb +39 -0
  73. data/lib/kalibro_entities/entities/metric.rb +21 -0
  74. data/lib/kalibro_entities/entities/metric_configuration.rb +70 -0
  75. data/lib/kalibro_entities/entities/metric_configuration_snapshot.rb +57 -0
  76. data/lib/kalibro_entities/entities/metric_result.rb +63 -0
  77. data/lib/kalibro_entities/entities/model.rb +162 -0
  78. data/lib/kalibro_entities/entities/module.rb +27 -0
  79. data/lib/kalibro_entities/entities/module_result.rb +69 -0
  80. data/lib/kalibro_entities/entities/process_time.rb +31 -0
  81. data/lib/kalibro_entities/entities/processing.rb +113 -0
  82. data/lib/kalibro_entities/entities/project.rb +34 -0
  83. data/lib/kalibro_entities/entities/range.rb +75 -0
  84. data/lib/kalibro_entities/entities/range_snapshot.rb +37 -0
  85. data/lib/kalibro_entities/entities/reading.rb +51 -0
  86. data/lib/kalibro_entities/entities/reading_group.rb +43 -0
  87. data/lib/kalibro_entities/entities/repository.rb +78 -0
  88. data/lib/kalibro_entities/entities/repository_observer.rb +50 -0
  89. data/lib/kalibro_entities/entities/stack_trace_element.rb +31 -0
  90. data/lib/kalibro_entities/entities/throwable.rb +42 -0
  91. data/lib/kalibro_entities/errors.rb +18 -0
  92. data/lib/kalibro_entities/errors/record_not_found.rb +22 -0
  93. data/lib/kalibro_entities/errors/standard.rb +24 -0
  94. data/lib/kalibro_entities/helpers/aggregation_options.rb +25 -0
  95. data/lib/kalibro_entities/helpers/hash_converters.rb +48 -0
  96. data/lib/kalibro_entities/helpers/request_methods.rb +47 -0
  97. data/lib/kalibro_entities/helpers/xml_converters.rb +20 -0
  98. data/lib/kalibro_entities/kalibro_cucumber_helpers.rb +40 -0
  99. data/lib/kalibro_entities/kalibro_cucumber_helpers/configuration.rb +39 -0
  100. data/lib/kalibro_entities/kalibro_cucumber_helpers/hooks.rb +50 -0
  101. data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/delete_all_kalibro_entries.sh +23 -0
  102. data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/prepare_kalibro_query_file.sh +38 -0
  103. data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/put_kalibro_on_test_mode.sh +35 -0
  104. data/lib/kalibro_entities/kalibro_cucumber_helpers/scripts/return_kalibro_from_test_mode.sh +26 -0
  105. data/lib/kalibro_entities/version.rb +19 -0
  106. data/lib/rake/test_task.rb +57 -0
  107. data/spec/entities/base_tool_spec.rb +168 -0
  108. data/spec/entities/configuration_spec.rb +61 -0
  109. data/spec/entities/date_metric_result_spec.rb +62 -0
  110. data/spec/entities/date_module_result_spec.rb +61 -0
  111. data/spec/entities/metric_configuration_snapshot_spec.rb +107 -0
  112. data/spec/entities/metric_configuration_spec.rb +149 -0
  113. data/spec/entities/metric_result_spec.rb +193 -0
  114. data/spec/entities/metric_spec.rb +47 -0
  115. data/spec/entities/model_spec.rb +275 -0
  116. data/spec/entities/module_result_spec.rb +135 -0
  117. data/spec/entities/process_time_spec.rb +33 -0
  118. data/spec/entities/processing_spec.rb +334 -0
  119. data/spec/entities/project_spec.rb +68 -0
  120. data/spec/entities/range_snapshot_spec.rb +50 -0
  121. data/spec/entities/range_spec.rb +181 -0
  122. data/spec/entities/reading_group_spec.rb +90 -0
  123. data/spec/entities/reading_spec.rb +106 -0
  124. data/spec/entities/repository_observer_spec.rb +123 -0
  125. data/spec/entities/repository_spec.rb +167 -0
  126. data/spec/entities/stack_trace_element_spec.rb +26 -0
  127. data/spec/entities/throwable_spec.rb +51 -0
  128. data/spec/factories/base_tools.rb +31 -0
  129. data/spec/factories/configurations.rb +29 -0
  130. data/spec/factories/date_metric_results.rb +28 -0
  131. data/spec/factories/date_module_results.rb +22 -0
  132. data/spec/factories/metric_configurations.rb +28 -0
  133. data/spec/factories/metric_configurations_snapshot.rb +26 -0
  134. data/spec/factories/metric_results.rb +24 -0
  135. data/spec/factories/metrics.rb +35 -0
  136. data/spec/factories/models.rb +20 -0
  137. data/spec/factories/module_results.rb +33 -0
  138. data/spec/factories/modules.rb +22 -0
  139. data/spec/factories/process_times.rb +27 -0
  140. data/spec/factories/processings.rb +25 -0
  141. data/spec/factories/projects.rb +29 -0
  142. data/spec/factories/ranges.rb +30 -0
  143. data/spec/factories/ranges_snapshot.rb +26 -0
  144. data/spec/factories/reading_groups.rb +23 -0
  145. data/spec/factories/readings.rb +25 -0
  146. data/spec/factories/repositories.rb +34 -0
  147. data/spec/factories/repository_observers.rb +24 -0
  148. data/spec/factories/stack_trace_elements.rb +24 -0
  149. data/spec/factories/throwables.rb +23 -0
  150. data/spec/helpers/aggregation_options_spec.rb +31 -0
  151. data/spec/helpers/hash_converters_spec.rb +111 -0
  152. data/spec/helpers/xml_converters_spec.rb +64 -0
  153. data/spec/kalibro_entities_spec.rb +108 -0
  154. data/spec/savon/fixtures/config.yml +1 -0
  155. data/spec/savon/fixtures/invalid_config.yml +2 -0
  156. data/spec/savon/fixtures/project/does_not_exists.xml +1 -0
  157. data/spec/savon/savon_test_helper.rb +14 -0
  158. data/spec/spec_helper.rb +60 -0
  159. metadata +461 -0
@@ -0,0 +1,181 @@
1
+ # This file is part of KalibroEntities
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require 'spec_helper'
18
+
19
+ describe KalibroEntities::Entities::Range do
20
+ subject { FactoryGirl.build(:range) }
21
+
22
+ describe 'id=' do
23
+ it 'should set the value of the attribute id as an integer' do
24
+ subject.id = "4"
25
+ subject.id.should eq(4)
26
+ end
27
+ end
28
+
29
+ describe 'reading_id=' do
30
+ it 'should set the value of the attribute reading_id as an integer' do
31
+ subject.reading_id = "12"
32
+ subject.reading_id.should eq(12)
33
+ end
34
+ end
35
+
36
+ describe 'beginning=' do
37
+ it 'should set the value of the attribute as a float' do
38
+ subject.beginning = "12.3"
39
+ subject.beginning.should eq(12.3)
40
+ end
41
+
42
+ it 'should set beginning to infinity' do
43
+ subject.beginning = "-INF"
44
+ subject.beginning.should eq("-INF")
45
+ end
46
+ end
47
+
48
+ describe 'end=' do
49
+ it 'should set the value of the attribute as a float' do
50
+ subject.end = "23.4"
51
+ subject.end.should eq(23.4)
52
+ end
53
+
54
+ it 'should set end to infinity' do
55
+ subject.end = "INF"
56
+ subject.end.should eq("INF")
57
+ end
58
+ end
59
+
60
+ describe 'getting reading attribute' do
61
+ subject { FactoryGirl.build(:range) }
62
+ let(:reading) { FactoryGirl.build(:reading) }
63
+
64
+ before :each do
65
+ KalibroEntities::Entities::Reading.
66
+ expects(:find).
67
+ with(subject.reading_id).
68
+ returns(reading)
69
+ end
70
+
71
+ context 'label' do
72
+ it 'should get the label of the reading' do
73
+ subject.label.should eq(reading.label)
74
+ end
75
+ end
76
+
77
+ context 'grade' do
78
+ it 'should get the grade of the reading' do
79
+ subject.grade.should eq(reading.grade)
80
+ end
81
+ end
82
+
83
+ context 'color' do
84
+ it 'should get the color of the reading' do
85
+ subject.color.should eq(reading.color)
86
+ end
87
+ end
88
+ end
89
+
90
+ describe 'ranges_of' do
91
+ let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
92
+
93
+ context 'when does not exists the asked range' do
94
+ before :each do
95
+ KalibroEntities::Entities::Range.
96
+ expects(:request).
97
+ with(:ranges_of, {metric_configuration_id: metric_configuration.id}).
98
+ returns({range: nil})
99
+ end
100
+
101
+ it 'should return a list with the ranges' do
102
+ KalibroEntities::Entities::Range.ranges_of(metric_configuration.id).should eq([])
103
+ end
104
+ end
105
+
106
+ context 'when exist only one range for the given metric configuration' do
107
+ before :each do
108
+ KalibroEntities::Entities::Range.
109
+ expects(:request).
110
+ with(:ranges_of, {metric_configuration_id: metric_configuration.id}).
111
+ returns({range: subject.to_hash})
112
+ end
113
+
114
+ it 'should return a list with the range' do
115
+ KalibroEntities::Entities::Range.ranges_of(metric_configuration.id).
116
+ first.beginning.should eq(subject.beginning)
117
+ end
118
+ end
119
+
120
+ context 'when exists many ranges for the given metric configuration' do
121
+ let(:another_range) { FactoryGirl.build(:another_range) }
122
+
123
+ before :each do
124
+ KalibroEntities::Entities::Range.
125
+ expects(:request).
126
+ with(:ranges_of, {metric_configuration_id: metric_configuration.id}).
127
+ returns({range: [subject.to_hash, another_range.to_hash]})
128
+ end
129
+
130
+ it 'should return a list with the ranges' do
131
+ ranges = KalibroEntities::Entities::Range.ranges_of(metric_configuration.id)
132
+ ranges.first.comments.should eq(subject.comments)
133
+ ranges.last.comments.should eq(another_range.comments)
134
+ end
135
+ end
136
+ end
137
+
138
+ describe 'save' do
139
+ let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
140
+
141
+ context 'when kalibro does not save' do
142
+ before :each do
143
+ any_error_message = ""
144
+ any_code = rand(Time.now.to_i)
145
+
146
+ KalibroEntities::Entities::Range.
147
+ expects(:request).
148
+ with(:save_range, {:range => subject.to_hash, :metric_configuration_id => metric_configuration.id}).
149
+ raises(Savon::SOAPFault.new(any_error_message, any_code))
150
+ end
151
+
152
+ it 'should returns false' do
153
+ subject.save(metric_configuration.id).should eq(false)
154
+ end
155
+
156
+ it 'should set the error on kalibro_errors attribute' do
157
+ subject.save(metric_configuration.id)
158
+ subject.kalibro_errors.should_not eq([])
159
+ end
160
+ end
161
+
162
+ context 'when kalibro saves the range' do
163
+ let(:new_id) { rand(Time.now.to_i) }
164
+ before :each do
165
+ KalibroEntities::Entities::Range.
166
+ expects(:request).
167
+ with(:save_range, {:range => subject.to_hash, :metric_configuration_id => metric_configuration.id}).
168
+ returns({range_id: new_id})
169
+ end
170
+
171
+ it 'should returns true' do
172
+ subject.save(metric_configuration.id).should eq(true)
173
+ end
174
+
175
+ it 'should set the id attribute' do
176
+ subject.save(metric_configuration.id)
177
+ subject.id.should eq(new_id)
178
+ end
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,90 @@
1
+ # This file is part of KalibroEntities
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require 'spec_helper'
18
+
19
+ describe KalibroEntities::Entities::ReadingGroup do
20
+ describe "id=" do
21
+ subject { FactoryGirl.build(:reading_group) }
22
+
23
+ it 'should set the id attribute values as an integer' do
24
+ subject.id = "222"
25
+ subject.id.should eq(222)
26
+ end
27
+ end
28
+
29
+ describe 'all' do
30
+ context 'with no reading_groups' do
31
+ before :each do
32
+ KalibroEntities::Entities::ReadingGroup.
33
+ expects(:request).
34
+ with(:all_reading_groups).
35
+ returns({:reading_group => nil})
36
+ end
37
+
38
+ it 'should return nil' do
39
+ KalibroEntities::Entities::ReadingGroup.all.should be_empty
40
+ end
41
+ end
42
+
43
+ context 'with many reading_groups' do
44
+ let(:reading_group) { FactoryGirl.build(:reading_group) }
45
+ before :each do
46
+ KalibroEntities::Entities::ReadingGroup.
47
+ expects(:request).
48
+ with(:all_reading_groups).
49
+ returns({:reading_group => [reading_group.to_hash, reading_group.to_hash]})
50
+ end
51
+
52
+ it 'should return nil' do
53
+ reading_groups = KalibroEntities::Entities::ReadingGroup.all
54
+
55
+ reading_groups.first.name.should eq(reading_group.name)
56
+ reading_groups.last.name.should eq(reading_group.name)
57
+ end
58
+ end
59
+ end
60
+
61
+ # The only purpose of this test is to cover the overrided destroy_params private method
62
+ describe 'destroy' do
63
+ context 'when it gets successfully destroyed' do
64
+ before :each do
65
+ subject.expects(:id).at_least_once.returns(42)
66
+ KalibroEntities::Entities::ReadingGroup.
67
+ expects(:request).
68
+ with(:delete_reading_group,{:group_id => subject.id})
69
+ end
70
+
71
+ it 'should remain with the errors array empty' do
72
+ subject.destroy
73
+ subject.kalibro_errors.should be_empty
74
+ end
75
+ end
76
+ end
77
+
78
+ # The only purpose of this test is to cover the overrided id_params private method
79
+ describe 'exists?' do
80
+ context 'with an inexistent id' do
81
+ it 'should return false' do
82
+ KalibroEntities::Entities::ReadingGroup.
83
+ expects(:request).
84
+ with(:reading_group_exists,{:group_id=>0}).
85
+ returns({:exists => false})
86
+ KalibroEntities::Entities::ReadingGroup.exists?(0)
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,106 @@
1
+ # This file is part of KalibroEntities
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require 'spec_helper'
18
+
19
+ describe KalibroEntities::Entities::Reading do
20
+ describe "id=" do
21
+ it 'should set the id attribute as an integer' do
22
+ subject.id = "44"
23
+ subject.id.should eq(44)
24
+ end
25
+ end
26
+
27
+ describe "grade=" do
28
+ it 'should set the grade attribute as a float' do
29
+ subject.grade = "44.7"
30
+ subject.grade.should eq(44.7)
31
+ end
32
+ end
33
+
34
+ context 'static methods' do
35
+ let(:reading) { FactoryGirl.build(:reading) }
36
+
37
+ describe 'find' do
38
+ context 'when the reading exists' do
39
+ before :each do
40
+ KalibroEntities::Entities::Reading.
41
+ expects(:request).
42
+ with(:get_reading, {:reading_id => reading.id}).
43
+ returns({:reading => reading.to_hash})
44
+ end
45
+
46
+ it 'should return a reading object' do
47
+ response = KalibroEntities::Entities::Reading.find reading.id
48
+ response.label.should eq(reading.label)
49
+ end
50
+ end
51
+
52
+ context "when the reading doesn't exists" do
53
+ before :each do
54
+ any_code = rand(Time.now.to_i)
55
+ any_error_message = ""
56
+
57
+ KalibroEntities::Entities::Reading.
58
+ expects(:request).
59
+ with(:get_reading, {:reading_id => reading.id}).
60
+ raises(Savon::SOAPFault.new(any_error_message, any_code))
61
+ end
62
+
63
+ it 'should return a reading object' do
64
+ expect {KalibroEntities::Entities::Reading.find(reading.id) }.
65
+ to raise_error(KalibroEntities::Errors::RecordNotFound)
66
+ end
67
+ end
68
+ end
69
+
70
+ describe 'readings_of' do
71
+ let(:reading_group) { FactoryGirl.build(:reading_group) }
72
+
73
+ before do
74
+ KalibroEntities::Entities::Reading.
75
+ expects(:request).
76
+ with(:readings_of, {:group_id => reading_group.id}).
77
+ returns({:reading => [reading.to_hash, reading.to_hash]})
78
+ end
79
+
80
+ it 'should returns a list of readings that belongs to the given reading group' do
81
+ response = KalibroEntities::Entities::Reading.readings_of reading_group.id
82
+ response.first.label.should eq(reading.label)
83
+ response.last.label.should eq(reading.label)
84
+ end
85
+ end
86
+ end
87
+
88
+ # The only purpose of this test is to cover the overrided save_params method
89
+ describe 'save' do
90
+ let(:reading) { FactoryGirl.build(:reading, {id: nil, group_id: FactoryGirl.build(:reading_group).id}) }
91
+ let(:reading_id) { 73 }
92
+
93
+ before :each do
94
+ KalibroEntities::Entities::Reading.
95
+ expects(:request).
96
+ with(:save_reading, {reading: reading.to_hash, group_id: reading.group_id}).
97
+ returns({:reading_id => reading_id})
98
+ end
99
+
100
+ it 'should make a request to save model with id and return true without errors' do
101
+ reading.save.should be(true)
102
+ reading.id.should eq(reading_id)
103
+ reading.kalibro_errors.should be_empty
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,123 @@
1
+ # This file is part of KalibroEntities
2
+ # Copyright (C) 2013 it's respectives authors (please see the AUTHORS file)
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require 'spec_helper'
18
+
19
+ describe KalibroEntities::Entities::RepositoryObserver do
20
+ describe 'id=' do
21
+ it 'should set the value of the attribute id' do
22
+ subject.id = 42
23
+ subject.id.should eq(42)
24
+ end
25
+ end
26
+
27
+ describe 'all' do
28
+ context 'with no repository observers' do
29
+ before :each do
30
+ KalibroEntities::Entities::RepositoryObserver.
31
+ expects(:request).
32
+ with(:all_repository_observers).
33
+ returns({:repository_observer => nil})
34
+ end
35
+
36
+ it 'should return nil' do
37
+ KalibroEntities::Entities::RepositoryObserver.all.should be_empty
38
+ end
39
+ end
40
+
41
+ context 'with many repository observers' do
42
+ let(:repository_observer) { FactoryGirl.build(:repository_observer) }
43
+ before :each do
44
+ KalibroEntities::Entities::RepositoryObserver.
45
+ expects(:request).
46
+ with(:all_repository_observers).
47
+ returns({:repository_observer => [repository_observer.to_hash, repository_observer.to_hash]})
48
+ end
49
+
50
+ it 'should return the two elements' do
51
+ repository_observers = KalibroEntities::Entities::RepositoryObserver.all
52
+ repository_observers.size.should eq(2)
53
+ repository_observers.first.name.should eq(repository_observer.to_hash[:name])
54
+ repository_observers.last.name.should eq(repository_observer.to_hash[:name])
55
+ end
56
+ end
57
+ end
58
+
59
+ # FIXME: the index of the second parameter of the request of repository_observers of will be altered someday.
60
+ describe 'repository_observers_of' do
61
+ context 'with no repository observers' do
62
+ let(:repository_without_observers) { FactoryGirl.build(:repository).to_hash }
63
+ before :each do
64
+ KalibroEntities::Entities::RepositoryObserver.expects(:request).
65
+ with(:repository_observers_of, {:repository_observer_id => repository_without_observers[:id]}).
66
+ returns({:repository_observer => []})
67
+ end
68
+
69
+ it 'should get an empty array' do
70
+ KalibroEntities::Entities::RepositoryObserver.
71
+ repository_observers_of(repository_without_observers[:id]).should eq []
72
+ end
73
+ end
74
+
75
+ context 'with many repository observers' do
76
+ let(:repository) { FactoryGirl.build(:repository) }
77
+ let(:repository_observer) { FactoryGirl.build(:repository_observer) }
78
+
79
+ before :each do
80
+ KalibroEntities::Entities::RepositoryObserver.expects(:request).
81
+ with(:repository_observers_of, {:repository_observer_id => repository.id}).
82
+ returns({:repository_observer => [repository_observer.to_hash, repository_observer.to_hash]})
83
+ end
84
+
85
+ it 'should return the two elements' do
86
+ repository_observers = KalibroEntities::Entities::RepositoryObserver.
87
+ repository_observers_of(repository.id)
88
+
89
+ repository_observers.size.should eq(2)
90
+ repository_observers.first.name.should eq(repository_observer.name)
91
+ repository_observers.last.name.should eq(repository_observer.name)
92
+ end
93
+ end
94
+ end
95
+
96
+ describe 'id=' do
97
+ it 'should set the value of the attribute id' do
98
+ subject.id = 65
99
+ subject.id.should eq(65)
100
+ end
101
+ end
102
+
103
+ describe 'repository_id=' do
104
+ it 'should set the value of the attribute repository_id' do
105
+ subject.repository_id = 91
106
+ subject.repository_id.should eq(91)
107
+ end
108
+ end
109
+
110
+ describe 'name=' do
111
+ it 'should set the value of the attribute name' do
112
+ subject.name = 'William'
113
+ subject.name.should eq('William')
114
+ end
115
+ end
116
+
117
+ describe 'email=' do
118
+ it 'should set the value of the attribute email' do
119
+ subject.email = 'william@email.com'
120
+ subject.email.should eq('william@email.com')
121
+ end
122
+ end
123
+ end