easy-resources 0.7.4 → 0.8.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52de11a80227ac1ccf50a92b365c9ed226fe460f7ff13eb0f485ed166c5c1ab0
4
- data.tar.gz: 656e7e58dab64d3979db05348b633414fbaeca2223910f412d6f7592d2c7e1bd
3
+ metadata.gz: baa165cfc453f4d26f80848a0e3e7e62b53c55510865b0354d5bc610f5cd3651
4
+ data.tar.gz: f7dea1efcddaef350f4180d2752635928b55cc219b3bb653f51295b932841e4e
5
5
  SHA512:
6
- metadata.gz: c63cead321cbe4a14201e70f4caf9c20c5fe3939b6ca9793ad76e60623020c57f4e21d39fae87d4f5417fd327dd3d51d4519bd69373d13ea7ef94795847332b6
7
- data.tar.gz: 9660653b0d62472781970f05e15803fdb7c1ad157267bcb2202b5af2d70dce35122d135a923fe722d0f389f67acbfcaa67251c52ef9e76d05fbb911de48bd53e
6
+ metadata.gz: d74958dc95394cca13daed7e5d0e289d15c0d4f62dd766c651c5ee3ab4c66252eda81668f760789bdfe2a5ada66b1575d4d32aa7c7ef68c69b31420ec7e68061
7
+ data.tar.gz: '07800fff4965abf4b05f312649f9c8d236d5dcc210d6a966435a004e8b09b54b0feb61fc6c3cce9d2f8a8113ae6f1619b768f641251f114717b628f803742f61'
data/README.md CHANGED
@@ -13,7 +13,7 @@ Allow communicate via API with (Easy)Redmine applications.
13
13
  Add this line to your application's Gemfile:
14
14
 
15
15
  ```ruby
16
- gem 'easy_resources'
16
+ gem 'easy-resources'
17
17
  ```
18
18
 
19
19
  And then execute:
@@ -9,7 +9,10 @@ module Easy
9
9
  module Resources
10
10
  module Redmine
11
11
 
12
+ autoload :Errors, "easy/resources/redmine/errors"
13
+
12
14
  autoload :RedmineBase, "easy/resources/redmine/redmine_base"
15
+ autoload :EasyAttendance, "easy/resources/redmine/easy_attendance"
13
16
  autoload :EasyContact, "easy/resources/redmine/easy_contact"
14
17
  autoload :EasyCrmCase, "easy/resources/redmine/easy_crm_case"
15
18
  autoload :EasyServer, "easy/resources/redmine/easy_server"
@@ -19,6 +22,7 @@ module Easy
19
22
  autoload :Issue, "easy/resources/redmine/issue"
20
23
  autoload :Project, "easy/resources/redmine/project"
21
24
  autoload :User, "easy/resources/redmine/user"
25
+ autoload :TimeEntry, "easy/resources/redmine/time_entry"
22
26
 
23
27
  end
24
28
  end
@@ -0,0 +1,13 @@
1
+ module Easy
2
+ module Resources
3
+ module Redmine
4
+ class EasyAttendance < RedmineBase
5
+
6
+ self.element_name = 'easy_attendance'
7
+
8
+ belongs_to :user, class_name: 'Easy::Resources::Redmine::User'
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -7,10 +7,28 @@ module Easy
7
7
 
8
8
  has_many :easy_web_applications, class_name: 'Easy::Resources::Redmine::EasyWebApplication'
9
9
 
10
+ self.schema = {
11
+ host_name: :string,
12
+ server_type: :string,
13
+ server_status: :string
14
+ }
15
+ # Alias for +host_name+ attribute
16
+ # @return [String]
10
17
  def url
11
18
  host_name
12
19
  end
13
20
 
21
+ # Alias for +server_status+ attribute
22
+ # @return [String]
23
+ def status
24
+ server_status
25
+ end
26
+
27
+ # @param [String] name of status
28
+ def status=(name)
29
+ self.server_status = name
30
+ end
31
+
14
32
  end
15
33
  end
16
34
  end
@@ -11,7 +11,9 @@ module Easy
11
11
  git_branch: :string,
12
12
  issue_id: :integer,
13
13
  easy_crm_case_id: :integer,
14
- easy_contact_id: :integer
14
+ easy_contact_id: :integer,
15
+ aasm_event: :string,
16
+ notes: :string
15
17
  }
16
18
 
17
19
  belongs_to :easy_contact, class_name: 'Easy::Resources::Redmine::EasyContact'
@@ -0,0 +1,15 @@
1
+ module Easy
2
+ module Resources
3
+ module Redmine
4
+ class Errors < ::ActiveResource::Errors
5
+
6
+ # Redmine in XML responses specify type="array" on Errors
7
+ # It cause that `Hash.from_xml` already parsed errors as a Array
8
+ def from_xml(xml, save_cache = false)
9
+ array = Array.wrap(Hash.from_xml(xml)["errors"]) rescue []
10
+ from_array array, save_cache
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -26,10 +26,16 @@ module Easy
26
26
  h
27
27
  end
28
28
 
29
+ # Parse value of TOTAL amount of entities from headers or response
30
+ # @return [Integer]
31
+ def retrieve_total(response)
32
+ (response['Total'] || response.body[/total_count[:="]+(\d+)/] && $1).to_i
33
+ end
34
+
29
35
  def get_all(**params, &block)
30
36
  records = results = all(params: params)
31
37
  response = results.http_response
32
- total = response['Total'].to_i
38
+ total = retrieve_total(response)
33
39
  current_page = 1
34
40
 
35
41
  while records.any?
@@ -46,6 +52,10 @@ module Easy
46
52
  end
47
53
 
48
54
  end
55
+
56
+ def errors
57
+ @errors ||= Errors.new(self)
58
+ end
49
59
  end
50
60
  end
51
61
  end
@@ -0,0 +1,15 @@
1
+ module Easy
2
+ module Resources
3
+ module Redmine
4
+ class TimeEntry < RedmineBase
5
+
6
+ self.element_name = 'time_entry'
7
+
8
+ belongs_to :project, class_name: 'Easy::Resources::Redmine::Project'
9
+ belongs_to :issue, class_name: 'Easy::Resources::Redmine::Issue'
10
+ belongs_to :user, class_name: 'Easy::Resources::Redmine::User'
11
+
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  module Easy
2
2
  module Resources
3
- VERSION = '0.7.4'
3
+ VERSION = '0.8.2'
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8"?><easy_attendance><id>509</id><user id="17" name="Steve Helpdesk Dispatcher"/><arrival>2020-02-05T07:45:00+01:00</arrival><departure>2020-04-28T22:30:38+02:00</departure><easy_attendance_activity id="1" name="Office"/><locked>false</locked><arrival_user_ip>66.249.79.144</arrival_user_ip><departure_user_ip></departure_user_ip><range/><created_at>2020-02-05T07:32:19+01:00</created_at><updated_at>2020-02-05T07:32:19+01:00</updated_at><description/><need_approve>false</need_approve><limit_exceeded>false</limit_exceeded><hours>0.0</hours><easy_external_id/></easy_attendance>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <errors type="array">
3
+ <error>Projekt je neplatné</error>
4
+ </errors>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <time_entry>
3
+ <id>509</id>
4
+ <project id="110" name="Partner Program Implementation"/>
5
+ <user id="5" name="Manager Manager"/>
6
+ <activity id="1" name="Work"/>
7
+ <hours>4.0</hours>
8
+ <comments></comments>
9
+ <spent_on>2020-03-04</spent_on>
10
+ <easy_range_from/>
11
+ <easy_range_to/>
12
+ <easy_external_id/>
13
+ <entity_id>110</entity_id>
14
+ <entity_type>Project</entity_type>
15
+ <created_on>2020-03-04T15:03:56Z</created_on>
16
+ <updated_on>2020-03-04T15:03:56Z</updated_on>
17
+ <easy_is_billable>true</easy_is_billable>
18
+ <easy_billed>false</easy_billed>
19
+ <custom_fields type="array">
20
+ <custom_field id="105" name="test" internal_name="" field_format="list">
21
+ <value/>
22
+ </custom_field>
23
+ </custom_fields>
24
+ </time_entry>
@@ -0,0 +1,14 @@
1
+ RSpec.describe Easy::Resources::Redmine::EasyAttendance do
2
+ include_context "redmine active resource shares" do
3
+ let(:entity_name) { 'easy_attendance' }
4
+ end
5
+
6
+ it 'get' do
7
+ expect(find_entity.arrival).not_to be_empty
8
+ end
9
+
10
+ it 'has user' do
11
+ expect(find_entity.user).to be_a Easy::Resources::Redmine::User
12
+ end
13
+
14
+ end
@@ -0,0 +1,16 @@
1
+ RSpec.describe Easy::Resources::Redmine::EasyServer do
2
+ include_context "redmine active resource shares" do
3
+ let(:entity_name) { 'easy_server' }
4
+ end
5
+
6
+ it "#status" do
7
+ expect(find_entity.status).to eq "running"
8
+ end
9
+
10
+ it "#status=" do
11
+ subject = find_entity
12
+ subject.status = "stopped"
13
+ expect(subject.server_status).to eq "stopped"
14
+ end
15
+
16
+ end
@@ -0,0 +1,15 @@
1
+ RSpec.describe Easy::Resources::Redmine::Errors do
2
+ include_context "redmine active resource shares" do
3
+ let(:entity_name) { 'time_entry' }
4
+ end
5
+
6
+ it 'invalid request' do
7
+ stub_xml source_file: "invalid_update", path: "#{entity_name.pluralize}.xml", method: :post, status: 422, request_body: { hours: 8.0, user_id: 1 }.to_xml(root: "time_entry")
8
+
9
+ time_entry = Easy::Resources::Redmine::TimeEntry.new hours: 8.0, user_id: 1
10
+ expect(time_entry.save).to eq false
11
+ expect(time_entry.errors).to be_a described_class
12
+ expect(time_entry.errors.full_messages).to eq ["Projekt je neplatné"]
13
+ end
14
+
15
+ end
@@ -0,0 +1,14 @@
1
+ RSpec.describe Easy::Resources::Redmine::TimeEntry do
2
+ include_context "redmine active resource shares" do
3
+ let(:entity_name) { 'time_entry' }
4
+ end
5
+
6
+ it 'get' do
7
+ expect(find_entity.spent_on).not_to be_empty
8
+ end
9
+
10
+ it 'has project' do
11
+ expect(find_entity.project).to be_a Easy::Resources::Redmine::Project
12
+ end
13
+
14
+ end
@@ -17,13 +17,13 @@ RSpec.shared_context "active resource shares", shared_context: :metadata do
17
17
  # @param [Hash] options @see #stub_easy_resource_request
18
18
  def stub_json(**options)
19
19
  options[:format] = "json"
20
- stub_resource_request(options)
20
+ stub_resource_request(**options)
21
21
  end
22
22
 
23
23
  # @param [Hash] options @see #stub_easy_resource_request
24
24
  def stub_xml(**options)
25
25
  options[:format] = "xml"
26
- stub_resource_request(options)
26
+ stub_resource_request(**options)
27
27
  end
28
28
 
29
29
  # @param [String] format XML or JSON
@@ -9,13 +9,13 @@ RSpec.shared_context "redmine active resource shares", shared_context: :metadata
9
9
  # @param [Hash] options @see #stub_easy_resource_request
10
10
  def stub_json(**options)
11
11
  options[:format] = "json"
12
- stub_easy_resource_request(options)
12
+ stub_easy_resource_request(**options)
13
13
  end
14
14
 
15
15
  # @param [Hash] options @see #stub_easy_resource_request
16
16
  def stub_xml(**options)
17
17
  options[:format] = "xml"
18
- stub_easy_resource_request(options)
18
+ stub_easy_resource_request(**options)
19
19
  end
20
20
 
21
21
  def stub_easy_resource_request(format:, path:, **options)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - petr
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-02 00:00:00.000000000 Z
11
+ date: 2021-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -135,19 +135,23 @@ files:
135
135
  - lib/easy/resource.rb
136
136
  - lib/easy/resources.rb
137
137
  - lib/easy/resources/railtie.rb
138
+ - lib/easy/resources/redmine/easy_attendance.rb
138
139
  - lib/easy/resources/redmine/easy_contact.rb
139
140
  - lib/easy/resources/redmine/easy_crm_case.rb
140
141
  - lib/easy/resources/redmine/easy_server.rb
141
142
  - lib/easy/resources/redmine/easy_web_application.rb
142
143
  - lib/easy/resources/redmine/easy_web_application_activity.rb
143
144
  - lib/easy/resources/redmine/easy_web_hook.rb
145
+ - lib/easy/resources/redmine/errors.rb
144
146
  - lib/easy/resources/redmine/issue.rb
145
147
  - lib/easy/resources/redmine/project.rb
146
148
  - lib/easy/resources/redmine/redmine_base.rb
149
+ - lib/easy/resources/redmine/time_entry.rb
147
150
  - lib/easy/resources/redmine/user.rb
148
151
  - lib/easy/resources/spec_helper.rb
149
152
  - lib/easy/resources/version.rb
150
153
  - spec/easy_resources_spec.rb
154
+ - spec/fixtures/files/easy_attendance/show.xml
151
155
  - spec/fixtures/files/easy_contact.json
152
156
  - spec/fixtures/files/easy_contact/show.xml
153
157
  - spec/fixtures/files/easy_crm_case.json
@@ -165,14 +169,20 @@ files:
165
169
  - spec/fixtures/files/issue/show.xml
166
170
  - spec/fixtures/files/project.json
167
171
  - spec/fixtures/files/project/show.xml
172
+ - spec/fixtures/files/time_entry/invalid_update.xml
173
+ - spec/fixtures/files/time_entry/show.xml
168
174
  - spec/fixtures/files/user/show.xml
175
+ - spec/models/easy-resources/redmine/easy_attendance_spec.rb
169
176
  - spec/models/easy-resources/redmine/easy_contact_spec.rb
170
177
  - spec/models/easy-resources/redmine/easy_crm_case_spec.rb
178
+ - spec/models/easy-resources/redmine/easy_server_spec.rb
171
179
  - spec/models/easy-resources/redmine/easy_web_application_activity_spec.rb
172
180
  - spec/models/easy-resources/redmine/easy_web_application_spec.rb
181
+ - spec/models/easy-resources/redmine/errors_spec.rb
173
182
  - spec/models/easy-resources/redmine/issue_spec.rb
174
183
  - spec/models/easy-resources/redmine/project_spec.rb
175
184
  - spec/models/easy-resources/redmine/redmine_base_spec.rb
185
+ - spec/models/easy-resources/redmine/time_entry_spec.rb
176
186
  - spec/models/easy-resources/redmine/user_spec.rb
177
187
  - spec/models/easy-resources/resource_spec.rb
178
188
  - spec/spec_helper.rb
@@ -184,7 +194,7 @@ licenses:
184
194
  - MIT
185
195
  metadata:
186
196
  allowed_push_host: https://rubygems.org
187
- post_install_message:
197
+ post_install_message:
188
198
  rdoc_options: []
189
199
  require_paths:
190
200
  - lib
@@ -199,40 +209,47 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
209
  - !ruby/object:Gem::Version
200
210
  version: '0'
201
211
  requirements: []
202
- rubygems_version: 3.0.3
203
- signing_key:
212
+ rubygems_version: 3.0.8
213
+ signing_key:
204
214
  specification_version: 4
205
215
  summary: Summary of Easy::Resources.
206
216
  test_files:
207
- - spec/easy_resources_spec.rb
208
- - spec/support/active_resource.rb
209
- - spec/support/redmine_active_resource.rb
210
- - spec/support/fixtures.rb
211
- - spec/models/easy-resources/resource_spec.rb
212
- - spec/models/easy-resources/redmine/easy_web_application_spec.rb
213
- - spec/models/easy-resources/redmine/user_spec.rb
217
+ - spec/spec_helper.rb
218
+ - spec/models/easy-resources/redmine/project_spec.rb
214
219
  - spec/models/easy-resources/redmine/easy_crm_case_spec.rb
215
- - spec/models/easy-resources/redmine/redmine_base_spec.rb
216
220
  - spec/models/easy-resources/redmine/easy_contact_spec.rb
217
221
  - spec/models/easy-resources/redmine/issue_spec.rb
222
+ - spec/models/easy-resources/redmine/time_entry_spec.rb
223
+ - spec/models/easy-resources/redmine/redmine_base_spec.rb
218
224
  - spec/models/easy-resources/redmine/easy_web_application_activity_spec.rb
219
- - spec/models/easy-resources/redmine/project_spec.rb
220
- - spec/fixtures/files/project/show.xml
221
- - spec/fixtures/files/easy_server/show.xml
222
- - spec/fixtures/files/easy_server/index.xml
223
- - spec/fixtures/files/project.json
225
+ - spec/models/easy-resources/redmine/easy_web_application_spec.rb
226
+ - spec/models/easy-resources/redmine/easy_server_spec.rb
227
+ - spec/models/easy-resources/redmine/errors_spec.rb
228
+ - spec/models/easy-resources/redmine/user_spec.rb
229
+ - spec/models/easy-resources/redmine/easy_attendance_spec.rb
230
+ - spec/models/easy-resources/resource_spec.rb
231
+ - spec/support/active_resource.rb
232
+ - spec/support/fixtures.rb
233
+ - spec/support/redmine_active_resource.rb
234
+ - spec/easy_resources_spec.rb
224
235
  - spec/fixtures/files/easy_contact/show.xml
225
- - spec/fixtures/files/easy_crm_case/show.xml
236
+ - spec/fixtures/files/time_entry/show.xml
237
+ - spec/fixtures/files/time_entry/invalid_update.xml
226
238
  - spec/fixtures/files/easy_crm_case.json
239
+ - spec/fixtures/files/easy_crm_case/show.xml
240
+ - spec/fixtures/files/project.json
227
241
  - spec/fixtures/files/issue.json
228
242
  - spec/fixtures/files/user/show.xml
243
+ - spec/fixtures/files/project/show.xml
244
+ - spec/fixtures/files/issue/show.xml
229
245
  - spec/fixtures/files/easy_contact.json
246
+ - spec/fixtures/files/easy_server/index.xml
247
+ - spec/fixtures/files/easy_server/show.xml
248
+ - spec/fixtures/files/easy_attendance/show.xml
249
+ - spec/fixtures/files/easy_web_application/index.xml
230
250
  - spec/fixtures/files/easy_web_application/with_ewaa.xml
251
+ - spec/fixtures/files/easy_web_application/with_custom_fields.xml
231
252
  - spec/fixtures/files/easy_web_application/show.xml
232
253
  - spec/fixtures/files/easy_web_application/with_easy_contact.xml
233
- - spec/fixtures/files/easy_web_application/with_custom_fields.xml
234
- - spec/fixtures/files/easy_web_application/index.xml
235
- - spec/fixtures/files/easy_web_application/show.json
236
254
  - spec/fixtures/files/easy_web_application/with_easy_crm_case.xml
237
- - spec/fixtures/files/issue/show.xml
238
- - spec/spec_helper.rb
255
+ - spec/fixtures/files/easy_web_application/show.json