easy-resources 0.7.3 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6911d742df6d657ec2f11f1f6f4fe56f6a780464c6fba1195008a4ff73eb3abf
4
- data.tar.gz: de84ee01b7785c88f0d5a7862fc4bbac8976b16503936d0aa1df3f38453d02b9
3
+ metadata.gz: fdaa3a94f0e1549a33bfe6e3c9401824ed0ae9937b8be66e75efb2c1bb64c89e
4
+ data.tar.gz: bda0af2d019e2e28ea1236344d038b3fd59a2459da0b0bb83bbcd73a204ed8ee
5
5
  SHA512:
6
- metadata.gz: fc12ce5706d3deee0a380fba982cac4936c27c37d0aa9681efd79fffd08f7d8552be037b66640a0789b8cd73ac9bcde6b4feb21b365a039678d5735d0ffe0ba3
7
- data.tar.gz: c4363f09ad9ed472490fe9945fdcef6010009d8867b336e82ae8a4867de6e5fc76ce68273945e36eabad58d384abddf83b38d4e65dafb8c8b17ed21408956fbf
6
+ metadata.gz: d02e7009079481c7b40730e126826f0288fec9f2abd454e05ab5ed1268c5c794802095fc63ed077be184ae7a0894f682b64aea716c30e31dccf4a2766fb7dc00
7
+ data.tar.gz: cbd2cc87d9d53f70367fb2b6604b67cda4c73becd7dbecebae5fc5c6a48f78bdf4637fcf679fe3be92531883146afb13af231f859967b9cd11f3db6a368a01a0
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
@@ -9,13 +9,17 @@ module Easy
9
9
  url: :string,
10
10
  git_repository: :string,
11
11
  git_branch: :string,
12
+ issue_id: :integer,
12
13
  easy_crm_case_id: :integer,
13
- easy_contact_id: :integer
14
+ easy_contact_id: :integer,
15
+ aasm_event: :string,
16
+ notes: :string
14
17
  }
15
18
 
16
- belongs_to :easy_server, class_name: 'Easy::Resources::Redmine::EasyServer'
17
19
  belongs_to :easy_contact, class_name: 'Easy::Resources::Redmine::EasyContact'
18
20
  belongs_to :easy_crm_case, class_name: 'Easy::Resources::Redmine::EasyCrmCase'
21
+ belongs_to :easy_server, class_name: 'Easy::Resources::Redmine::EasyServer'
22
+ belongs_to :issue, class_name: 'Easy::Resources::Redmine::Issue'
19
23
 
20
24
  has_many :easy_web_application_activities, class_name: 'Easy::Resources::Redmine::EasyWebApplicationActivity'
21
25
  has_one :easy_web_application_activity, class_name: 'Easy::Resources::Redmine::EasyWebApplicationActivity'
@@ -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.3'
3
+ VERSION = '0.8.1'
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
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.3
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - petr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-29 00:00:00.000000000 Z
11
+ date: 2020-06-04 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
@@ -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
212
+ rubygems_version: 3.0.6
203
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