mavenlink 0.0.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +10 -3
  4. data/Gemfile.lock +38 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +69 -0
  7. data/Rakefile +50 -24
  8. data/TODO +18 -0
  9. data/VERSION +1 -0
  10. data/lib/mavenlink.rb +2 -134
  11. data/lib/mavenlink/base.rb +184 -0
  12. data/lib/mavenlink/client.rb +202 -96
  13. data/mavenlink.gemspec +85 -19
  14. data/spec/mavenlink/base_spec.rb +223 -0
  15. data/spec/mavenlink/client_spec.rb +183 -0
  16. data/spec/spec_helper.rb +13 -25
  17. metadata +243 -232
  18. checksums.yaml +0 -7
  19. data/.gitignore +0 -11
  20. data/.ruby-gemset +0 -1
  21. data/.ruby-version +0 -1
  22. data/README.md +0 -241
  23. data/bin/mavenlink-console +0 -18
  24. data/doc/ml_logo_lb-primary.png +0 -0
  25. data/lib/config/specification.yml +0 -1665
  26. data/lib/mavenlink/account_invitation.rb +0 -4
  27. data/lib/mavenlink/account_membership.rb +0 -4
  28. data/lib/mavenlink/additional_item.rb +0 -4
  29. data/lib/mavenlink/assignment.rb +0 -5
  30. data/lib/mavenlink/attachment.rb +0 -11
  31. data/lib/mavenlink/backup_approver_association.rb +0 -4
  32. data/lib/mavenlink/concerns/custom_fieldable.rb +0 -9
  33. data/lib/mavenlink/concerns/indestructible.rb +0 -11
  34. data/lib/mavenlink/concerns/locked_record.rb +0 -30
  35. data/lib/mavenlink/cost_rate.rb +0 -4
  36. data/lib/mavenlink/custom_field.rb +0 -4
  37. data/lib/mavenlink/custom_field_choice.rb +0 -5
  38. data/lib/mavenlink/custom_field_value.rb +0 -4
  39. data/lib/mavenlink/errors.rb +0 -47
  40. data/lib/mavenlink/expense.rb +0 -4
  41. data/lib/mavenlink/expense_category.rb +0 -4
  42. data/lib/mavenlink/expense_report_submission.rb +0 -7
  43. data/lib/mavenlink/external_payment.rb +0 -4
  44. data/lib/mavenlink/external_reference.rb +0 -24
  45. data/lib/mavenlink/fixed_fee_item.rb +0 -4
  46. data/lib/mavenlink/holiday.rb +0 -4
  47. data/lib/mavenlink/holiday_calendar.rb +0 -4
  48. data/lib/mavenlink/holiday_calendar_association.rb +0 -4
  49. data/lib/mavenlink/holiday_calendar_membership.rb +0 -4
  50. data/lib/mavenlink/invoice.rb +0 -4
  51. data/lib/mavenlink/logger.rb +0 -62
  52. data/lib/mavenlink/model.rb +0 -279
  53. data/lib/mavenlink/organization.rb +0 -4
  54. data/lib/mavenlink/organization_membership.rb +0 -4
  55. data/lib/mavenlink/participation.rb +0 -4
  56. data/lib/mavenlink/post.rb +0 -4
  57. data/lib/mavenlink/project_template.rb +0 -4
  58. data/lib/mavenlink/project_template_assignment.rb +0 -4
  59. data/lib/mavenlink/railtie.rb +0 -7
  60. data/lib/mavenlink/rate_card.rb +0 -4
  61. data/lib/mavenlink/rate_card_role.rb +0 -4
  62. data/lib/mavenlink/rate_card_set.rb +0 -4
  63. data/lib/mavenlink/rate_card_set_version.rb +0 -30
  64. data/lib/mavenlink/rate_card_version.rb +0 -4
  65. data/lib/mavenlink/request.rb +0 -241
  66. data/lib/mavenlink/resolution.rb +0 -4
  67. data/lib/mavenlink/response.rb +0 -22
  68. data/lib/mavenlink/role.rb +0 -5
  69. data/lib/mavenlink/settings.rb +0 -11
  70. data/lib/mavenlink/skill.rb +0 -4
  71. data/lib/mavenlink/skill_category.rb +0 -4
  72. data/lib/mavenlink/skill_membership.rb +0 -4
  73. data/lib/mavenlink/specificators/association.rb +0 -13
  74. data/lib/mavenlink/specificators/attribute.rb +0 -13
  75. data/lib/mavenlink/specificators/base.rb +0 -24
  76. data/lib/mavenlink/specificators/validation.rb +0 -27
  77. data/lib/mavenlink/status_report.rb +0 -4
  78. data/lib/mavenlink/story.rb +0 -8
  79. data/lib/mavenlink/story_allocation_day.rb +0 -5
  80. data/lib/mavenlink/story_dependency.rb +0 -5
  81. data/lib/mavenlink/story_task.rb +0 -5
  82. data/lib/mavenlink/tag.rb +0 -5
  83. data/lib/mavenlink/time_adjustment.rb +0 -4
  84. data/lib/mavenlink/time_entry.rb +0 -4
  85. data/lib/mavenlink/time_off_entry.rb +0 -4
  86. data/lib/mavenlink/timesheet_submission.rb +0 -4
  87. data/lib/mavenlink/user.rb +0 -5
  88. data/lib/mavenlink/vendor.rb +0 -4
  89. data/lib/mavenlink/workspace.rb +0 -21
  90. data/lib/mavenlink/workspace_group.rb +0 -5
  91. data/lib/mavenlink/workspace_invoice_preference.rb +0 -4
  92. data/lib/mavenlink/workweek.rb +0 -4
  93. data/lib/mavenlink/workweek_membership.rb +0 -4
  94. data/spec/lib/mavenlink/account_membership_spec.rb +0 -8
  95. data/spec/lib/mavenlink/assignment_spec.rb +0 -17
  96. data/spec/lib/mavenlink/attachment_spec.rb +0 -30
  97. data/spec/lib/mavenlink/backup_approver_association_spec.rb +0 -9
  98. data/spec/lib/mavenlink/client_spec.rb +0 -187
  99. data/spec/lib/mavenlink/concerns/indestructible_spec.rb +0 -13
  100. data/spec/lib/mavenlink/concerns/locked_record_spec.rb +0 -28
  101. data/spec/lib/mavenlink/cost_rate_spec.rb +0 -9
  102. data/spec/lib/mavenlink/custom_field_value_spec.rb +0 -10
  103. data/spec/lib/mavenlink/expense_report_submission_spec.rb +0 -16
  104. data/spec/lib/mavenlink/expense_spec.rb +0 -23
  105. data/spec/lib/mavenlink/external_references_spec.rb +0 -144
  106. data/spec/lib/mavenlink/holiday_calendar_association_spec.rb +0 -8
  107. data/spec/lib/mavenlink/holiday_calendar_membership_spec.rb +0 -8
  108. data/spec/lib/mavenlink/holiday_spec.rb +0 -7
  109. data/spec/lib/mavenlink/invalid_request_error_spec.rb +0 -9
  110. data/spec/lib/mavenlink/invoice_spec.rb +0 -176
  111. data/spec/lib/mavenlink/model_spec.rb +0 -439
  112. data/spec/lib/mavenlink/post_spec.rb +0 -23
  113. data/spec/lib/mavenlink/rate_card_set_version_spec.rb +0 -119
  114. data/spec/lib/mavenlink/record_invalid_error_spec.rb +0 -16
  115. data/spec/lib/mavenlink/record_not_found_error_spec.rb +0 -9
  116. data/spec/lib/mavenlink/request_spec.rb +0 -381
  117. data/spec/lib/mavenlink/response_spec.rb +0 -50
  118. data/spec/lib/mavenlink/role_spec.rb +0 -9
  119. data/spec/lib/mavenlink/settings_spec.rb +0 -23
  120. data/spec/lib/mavenlink/skill_category_spec.rb +0 -7
  121. data/spec/lib/mavenlink/skill_membership_spec.rb +0 -9
  122. data/spec/lib/mavenlink/skill_spec.rb +0 -8
  123. data/spec/lib/mavenlink/specificators/association_spec.rb +0 -25
  124. data/spec/lib/mavenlink/specificators/attribute_spec.rb +0 -25
  125. data/spec/lib/mavenlink/specificators/validation_spec.rb +0 -39
  126. data/spec/lib/mavenlink/story_allocation_day_spec.rb +0 -64
  127. data/spec/lib/mavenlink/story_dependency_spec.rb +0 -16
  128. data/spec/lib/mavenlink/story_spec.rb +0 -69
  129. data/spec/lib/mavenlink/time_adjustment_spec.rb +0 -13
  130. data/spec/lib/mavenlink/time_entry_spec.rb +0 -43
  131. data/spec/lib/mavenlink/time_off_entry_spec.rb +0 -9
  132. data/spec/lib/mavenlink/user_spec.rb +0 -138
  133. data/spec/lib/mavenlink/workspace_group_spec.rb +0 -25
  134. data/spec/lib/mavenlink/workspace_spec.rb +0 -431
  135. data/spec/lib/mavenlink_spec.rb +0 -43
  136. data/spec/support/shared_examples.rb +0 -148
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mavenlink::Post, stub_requests: true do
4
- it_should_behave_like 'model', 'posts'
5
-
6
- describe 'validations' do
7
- it { should validate_presence_of :message }
8
- it { should validate_presence_of :workspace_id }
9
- end
10
-
11
- describe 'associations' do
12
- it { should respond_to :subject }
13
- it { should respond_to :user }
14
- it { should respond_to :workspace }
15
- it { should respond_to :story }
16
- it { should respond_to :replies }
17
- it { should respond_to :newest_reply }
18
- it { should respond_to :newest_reply_user }
19
- it { should respond_to :recipients }
20
- it { should respond_to :google_documents }
21
- it { should respond_to :attachments }
22
- end
23
- end
@@ -1,119 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mavenlink::RateCardSetVersion, stub_requests: true do
4
- subject { described_class.new(id: "7", rate_card_set_id: "1") }
5
- let(:client) { double(Mavenlink::Client) }
6
-
7
- describe "#publish" do
8
- context "when the publish is successful" do
9
- let(:publish_response) { { "activated" => true } }
10
-
11
- before do
12
- allow(subject).to receive(:persisted?) { true }
13
- stub_request :put, "/api/v1/rate_card_set_versions/7/publish", publish_response
14
- end
15
-
16
- it "returns true" do
17
- expect(subject.publish).to eq(true)
18
- end
19
- end
20
-
21
- context "when the publish fails" do
22
- before do
23
- allow(subject).to receive(:client) { client }
24
- allow(client).to receive(:put).and_raise(Faraday::Error)
25
- end
26
-
27
- it "returns false" do
28
- expect(subject.publish).to eq(false)
29
- end
30
- end
31
-
32
- context "when the record is not persisted" do
33
- before do
34
- allow(subject).to receive(:persisted?) { false }
35
- end
36
-
37
- it "returns false" do
38
- expect(subject.publish).to eq(false)
39
- end
40
- end
41
- end
42
-
43
- describe "#clone" do
44
- context "when `clone` is successful" do
45
- let(:clone_response) { {
46
- "count" => 1,
47
- "results" => [
48
- {
49
- "key" => "rate_card_set_versions",
50
- "id" => "8"
51
- }
52
- ],
53
- "rate_card_set_versions" => {
54
- "8" => {
55
- "id" => "8",
56
- "effective_date" => "2018-09-04",
57
- "rate_card_set_id" => "1"
58
- }
59
- }
60
- } }
61
-
62
- before do
63
- stub_request :post, "/api/v1/rate_card_set_versions", clone_response
64
- end
65
-
66
- it "returns the new rate card set version" do
67
- expect_any_instance_of(Mavenlink::Client).to receive(:post).with("rate_card_set_versions",
68
- clone_id: subject.id,
69
- rate_card_set_version: {
70
- rate_card_set_id: subject.rate_card_set_id,
71
- effective_date: nil
72
- }).and_call_original
73
- expect(subject.clone_version).to eq(described_class.new(id: "8", effective_date: "2018-09-04", rate_card_set_id: "1"))
74
- end
75
-
76
- it "sends the effective_date parameter" do
77
- date = Date.new(2018, 9, 5)
78
- expect_any_instance_of(Mavenlink::Client).to receive(:post).with("rate_card_set_versions",
79
- clone_id: subject.id,
80
- rate_card_set_version: {
81
- rate_card_set_id: subject.rate_card_set_id,
82
- effective_date: date
83
- }).and_call_original
84
- subject.clone_version(date)
85
- end
86
- end
87
-
88
- context "when `clone` is not successful" do
89
- context "when the response is an error" do
90
- let(:clone_response) { {
91
- "errors" => [
92
- {
93
- "type" => "system",
94
- "message" => "not found"
95
- }
96
- ],
97
- } }
98
-
99
- before do
100
- stub_request :post, "/api/v1/rate_card_set_versions", clone_response
101
- end
102
-
103
- it "returns false" do
104
- expect(subject.clone_version).to eq(false)
105
- end
106
- end
107
-
108
- context "when the record is not persisted" do
109
- before do
110
- allow(subject).to receive(:persisted?) { false }
111
- end
112
-
113
- it "returns false" do
114
- expect(subject.clone_version).to eq(false)
115
- end
116
- end
117
- end
118
- end
119
- end
@@ -1,16 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mavenlink::RecordInvalidError do
4
- let(:client) { Object.new }
5
- let(:record) { Mavenlink::Workspace.new({ title: nil }, nil, client) }
6
- before { record.valid? }
7
-
8
- subject { described_class.new(record) }
9
-
10
- its(:record) { should == record }
11
- its(:message) { should == "Title can't be blank" }
12
-
13
- specify do
14
- expect { raise subject }.to raise_error described_class, /Title.*blank/
15
- end
16
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mavenlink::RecordNotFoundError do
4
- subject { described_class.new({response: :data}) }
5
-
6
- specify do
7
- expect { raise subject }.to raise_error Mavenlink::RecordNotFoundError, /response.*data/
8
- end
9
- end
@@ -1,381 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mavenlink::Request, stub_requests: true do
4
- let(:collection_name) { 'workspaces' }
5
- let(:client) { Mavenlink.client }
6
-
7
- subject(:request) { described_class.new(collection_name, client) }
8
-
9
- let(:response) {
10
- {
11
- 'count' => 2,
12
- 'results' => [{'key' => 'workspaces', 'id' => '7'}, {'key' => 'workspaces', 'id' => '9'}],
13
- 'workspaces' => {
14
- '7' => {'title' => 'My new project'},
15
- '9' => {'title' => 'My second project'},
16
- }
17
- }
18
- }
19
-
20
- let(:one_record_response) {
21
- {
22
- 'count' => 1,
23
- 'results' => [{'key' => 'workspaces', 'id' => '7'}],
24
- 'workspaces' => {
25
- '7' => {'title' => 'My new project'}
26
- }
27
- }
28
- }
29
-
30
- let(:first_page) {
31
- {
32
- 'count' => 3,
33
- 'results' => [{'key' => 'workspaces', 'id' => '7'}, {'key' => 'workspaces', 'id' => '9'}],
34
- 'workspaces' => {
35
- '7' => {'title' => 'My new project!'},
36
- '9' => {'title' => 'My second project!'},
37
- }
38
- }
39
- }
40
-
41
- let(:second_page) {
42
- {
43
- 'count' => 3,
44
- 'results' => [{'key' => 'workspaces', 'id' => '10'}],
45
- 'workspaces' => {
46
- '10' => {'title' => 'My last project!'}
47
- }
48
- }
49
- }
50
-
51
- let(:third_invalid_page) {
52
- {
53
- 'count' => 3,
54
- 'results' => [{'key' => 'workspaces', 'id' => '11'}],
55
- 'workspaces' => {
56
- '11' => {'title' => 'Not existed project'}
57
- }
58
- }
59
- }
60
-
61
- before do
62
- stub_request :get, '/api/v1/workspaces?page=1', first_page
63
- stub_request :get, '/api/v1/workspaces?page=2', second_page
64
- stub_request :get, '/api/v1/workspaces?page=3', third_invalid_page
65
- stub_request :get, '/api/v1/workspaces?only=7', one_record_response
66
- stub_request :get, '/api/v1/workspaces?only=8', { 'count' => 0, 'results' => [] }
67
- stub_request :put, '/api/v1/workspaces/7', one_record_response
68
- stub_request :delete, '/api/v1/workspaces/7', {}
69
- stub_request :get, '/api/v1/workspaces', response
70
- stub_request :post, '/api/v1/workspaces', one_record_response
71
- end
72
-
73
- describe '#initialize' do
74
- let(:client) { double('client') }
75
-
76
- its(:collection_name) { should == 'workspaces' }
77
- its(:client) { should == client }
78
- its(:scope) { should == {} }
79
-
80
- context 'no client specified' do
81
- subject { described_class.new(collection_name) }
82
- its(:client) { should == Mavenlink.client }
83
- end
84
- end
85
-
86
- describe '#current_page' do
87
- specify do
88
- expect(request.current_page).to eq(1)
89
- end
90
-
91
- specify do
92
- expect(request.page(2).current_page).to eq(2)
93
- end
94
- end
95
-
96
- describe '#chain' do
97
- specify do
98
- expect(request.chain({})).to be_a described_class
99
- end
100
-
101
- specify do
102
- expect(request.chain({})).not_to eq(request)
103
- end
104
-
105
- it 'does not change source scope' do
106
- expect { request.chain({changed: true}) }.not_to change { request.scope }
107
- end
108
-
109
- it 'merges passed scope' do
110
- expect(request.chain(changed: true).scope).to have_key(:changed)
111
- expect(request.chain(changed: true).scope).to have_key('changed')
112
- end
113
-
114
- it 'assigns the same collection name' do
115
- expect(request.chain({}).collection_name).to eq(request.collection_name)
116
- end
117
-
118
- it 'assigns the same client' do
119
- expect(request.chain({}).client).to eq(request.client)
120
- end
121
- end
122
-
123
- describe '#only' do
124
- context 'empty input' do
125
- it 'resets the scope' do
126
- expect(request.only(1).only([]).scope).not_to have_key(:only)
127
- end
128
- end
129
- end
130
-
131
- describe '#without' do
132
- it 'removes condition from the scope' do
133
- expect(subject.only(1).without(:only).scope).not_to have_key(:only)
134
- end
135
- end
136
-
137
- describe '#find' do
138
- context 'existed record' do
139
- it 'returns record wrapped in a model' do
140
- expect(request.find(7)).to be_a Mavenlink::Workspace
141
- end
142
- end
143
-
144
- context 'record does not exist' do
145
- specify do
146
- expect(request.find(8)).to be_nil
147
- end
148
- end
149
- end
150
-
151
- describe '#search' do
152
- specify do
153
- expect(request.search('text').scope).to include(search: 'text')
154
- end
155
- end
156
-
157
- describe '#filter' do
158
- specify do
159
- expect(request.filter(recent: true).scope).to include(recent: true)
160
- end
161
- end
162
-
163
- describe '#include' do
164
- specify do
165
- expect(request.include(:users).scope).to include(include: 'users')
166
- end
167
-
168
- specify do
169
- expect(request.include('users').scope).to include(include: 'users')
170
- end
171
-
172
- specify do
173
- expect(request.include(%w(users clients)).scope).to include(include: 'users,clients')
174
- end
175
-
176
- specify do
177
- expect(request.include('users', 'clients').scope).to include(include: 'users,clients')
178
- end
179
- end
180
-
181
- describe '#page' do
182
- specify do
183
- expect(request.page(5).scope).to include(page: 5)
184
- end
185
- end
186
-
187
- describe '#per_page' do
188
- specify do
189
- expect(request.per_page(5).scope).to include(per_page: 5)
190
- end
191
- end
192
-
193
- describe '#limit' do
194
- specify do
195
- expect(request.limit(5).scope).to include(limit: 5)
196
- end
197
- end
198
-
199
- describe '#offset' do
200
- specify do
201
- expect(request.offset(5).scope).to include(offset: 5)
202
- end
203
- end
204
-
205
- describe '#order' do
206
- specify do
207
- expect(request.order(:id, :desc).scope).to include(order: 'id:desc')
208
- end
209
-
210
- specify do
211
- expect(request.order(:id, 'desc').scope).to include(order: 'id:desc')
212
- end
213
-
214
- specify do
215
- expect(request.order(:id, 'DESC').scope).to include(order: 'id:desc')
216
- end
217
-
218
- specify do
219
- expect(request.order(:id, true).scope).to include(order: 'id:desc')
220
- end
221
-
222
- specify do
223
- expect(request.order(:id, false).scope).to include(order: 'id')
224
- end
225
-
226
- specify do
227
- expect(request.order(:id, 'asc').scope).to include(order: 'id')
228
- end
229
-
230
- specify do
231
- expect(request.order(:id, 'ASC').scope).to include(order: 'id')
232
- end
233
-
234
- specify do
235
- expect(request.order(:id, :asc).scope).to include(order: 'id')
236
- end
237
- end
238
-
239
- describe '#build' do
240
- it 'returns a model object of the same type as the collection name' do
241
- expect(request.build(title: 'New Workspace')).to be_a Mavenlink::Workspace
242
- end
243
- end
244
-
245
- describe '#create' do
246
- specify do
247
- expect(request.create({})).to be_a Mavenlink::Response
248
- end
249
-
250
- specify do
251
- expect(request.create({})).to eq(one_record_response)
252
- end
253
- end
254
-
255
- describe '#update' do
256
- specify do
257
- expect(request.only(7).update(title: 'New title')).to be_a Mavenlink::Response
258
- end
259
-
260
- specify do
261
- expect(request.only(7).update(title: 'New title')).to eq(one_record_response)
262
- end
263
-
264
- context 'no id specified' do
265
- specify do
266
- # NOTE(SZ): should we raise InvalidRequestError instead?
267
- expect { request.update(title: 'New one') }.to raise_error ArgumentError, /route.*ID/
268
- end
269
- end
270
- end
271
-
272
- describe '#delete' do
273
- specify do
274
- expect(request.only(7).delete).to be_blank
275
- end
276
-
277
- context 'no id specified' do
278
- specify do
279
- # NOTE(SZ): should we raise InvalidRequestError instead?
280
- expect { request.delete }.to raise_error ArgumentError, /route.*ID/
281
- end
282
- end
283
- end
284
-
285
- describe '#response' do
286
- subject { request.response }
287
-
288
- specify do
289
- expect(subject).to be_a Mavenlink::Response
290
- end
291
-
292
- specify do
293
- expect(subject).to eq(response)
294
- end
295
- end
296
-
297
- describe '#perform' do
298
- specify do
299
- expect(request.perform).to be_a Mavenlink::Response
300
- end
301
-
302
- specify do
303
- expect(request.perform).to eq(response)
304
- end
305
-
306
- specify do
307
- expect(request.perform { one_record_response }).to be_a Mavenlink::Response
308
- end
309
-
310
- specify do
311
- expect(request.perform { one_record_response }).to eq(one_record_response)
312
- end
313
- end
314
-
315
- describe '#results' do
316
- specify do
317
- expect(request.results).to have(2).workspaces
318
- end
319
-
320
- # NOTE(SZ): missing specs
321
- end
322
-
323
- describe '#reload' do
324
- specify do
325
- expect(request.reload).to have(2).workspaces
326
- end
327
-
328
- # NOTE(SZ): missing specs
329
- end
330
-
331
- describe '#total_pages' do
332
- specify do
333
- expect(request.total_pages).to eq(1)
334
- end
335
-
336
- # NOTE(SZ): missing specs
337
- end
338
-
339
- describe '#limit_value' do
340
- specify do
341
- expect(request.limit_value).to eq(2)
342
- end
343
-
344
- specify do
345
- expect(request.limit(5).limit_value).to eq(5)
346
- end
347
- end
348
-
349
- describe '#scoped' do
350
- specify do
351
- expect(request.scoped).to eq(request)
352
- end
353
- end
354
-
355
- describe '#to_hash' do
356
- specify do
357
- expect(request.to_hash).to eq(request.scope)
358
- end
359
- end
360
-
361
- describe '#inspect' do
362
- specify do
363
- expect(request.inspect).to eq('#<Mavenlink::Request [<Mavenlink::Workspace:>, <Mavenlink::Workspace:>]>')
364
- end
365
- end
366
-
367
- describe '#each_page' do
368
- specify do
369
- expect(subject.each_page.to_a).to eq [[{"title"=>"My new project!"}, {"title"=>"My second project!"}],
370
- [{"title"=>"My last project!"}]]
371
- end
372
-
373
- specify do
374
- subject.each_page.to_a.flatten.tap do |records|
375
- expect(records[0]).to be_a Mavenlink::Model
376
- expect(records[1]).to be_a Mavenlink::Model
377
- expect(records[2]).to be_a Mavenlink::Model
378
- end
379
- end
380
- end
381
- end