easy-resources 0.8.2 → 0.9.0
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 +4 -4
- data/CHANGELOG.md +60 -0
- data/lib/easy/resource.rb +10 -7
- data/lib/easy/resources.rb +3 -0
- data/lib/easy/resources/redmine/custom_field.rb +36 -0
- data/lib/easy/resources/redmine/easy_attendance.rb +0 -1
- data/lib/easy/resources/redmine/easy_contact.rb +0 -1
- data/lib/easy/resources/redmine/easy_crm_case.rb +0 -1
- data/lib/easy/resources/redmine/easy_server.rb +1 -1
- data/lib/easy/resources/redmine/easy_web_application.rb +14 -2
- data/lib/easy/resources/redmine/easy_web_application_activity.rb +0 -1
- data/lib/easy/resources/redmine/easy_web_hook.rb +0 -1
- data/lib/easy/resources/redmine/errors.rb +7 -2
- data/lib/easy/resources/redmine/issue.rb +0 -1
- data/lib/easy/resources/redmine/project.rb +0 -1
- data/lib/easy/resources/redmine/redmine_base.rb +3 -3
- data/lib/easy/resources/redmine/time_entry.rb +0 -1
- data/lib/easy/resources/redmine/user.rb +0 -1
- data/lib/easy/resources/spec_helper.rb +2 -2
- data/lib/easy/resources/version.rb +3 -1
- data/spec/easy_resources_spec.rb +0 -3
- data/spec/fixtures/files/custom_field/bool.xml +4 -0
- data/spec/fixtures/files/custom_field/date.xml +4 -0
- data/spec/fixtures/files/custom_field/datetime.xml +5 -0
- data/spec/fixtures/files/custom_field/float.xml +4 -0
- data/spec/fixtures/files/custom_field/int.xml +4 -0
- data/spec/fixtures/files/custom_field/string.xml +4 -0
- data/spec/fixtures/files/easy_web_application/show.xml +8 -0
- data/spec/fixtures/files/easy_web_hook/index.xml +26 -0
- data/spec/fixtures/files/easy_web_hook/show.xml +11 -0
- data/spec/models/easy-resources/redmine/custom_field_spec.rb +31 -0
- data/spec/models/easy-resources/redmine/easy_attendance_spec.rb +0 -1
- data/spec/models/easy-resources/redmine/easy_contact_spec.rb +0 -1
- data/spec/models/easy-resources/redmine/easy_crm_case_spec.rb +0 -2
- data/spec/models/easy-resources/redmine/easy_server_spec.rb +0 -1
- data/spec/models/easy-resources/redmine/easy_web_application_activity_spec.rb +0 -1
- data/spec/models/easy-resources/redmine/easy_web_application_spec.rb +13 -3
- data/spec/models/easy-resources/redmine/easy_web_hook_spec.rb +9 -0
- data/spec/models/easy-resources/redmine/errors_spec.rb +0 -1
- data/spec/models/easy-resources/redmine/issue_spec.rb +0 -2
- data/spec/models/easy-resources/redmine/project_spec.rb +0 -2
- data/spec/models/easy-resources/redmine/redmine_base_spec.rb +0 -2
- data/spec/models/easy-resources/redmine/time_entry_spec.rb +0 -1
- data/spec/models/easy-resources/redmine/user_spec.rb +0 -2
- data/spec/models/easy-resources/resource_spec.rb +2 -2
- data/spec/spec_helper.rb +4 -4
- data/spec/support/active_resource.rb +1 -1
- data/spec/support/redmine_active_resource.rb +1 -1
- metadata +71 -32
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92eda89013e1a2ec9408d3bdcf01887646a4873974e1e0ff5688ce588872e3d6
|
|
4
|
+
data.tar.gz: 8ff8f00de0fe5691eba2b604413a21592d6feb57ea7c8818233319c843369412
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9d6e022176f9f63387bf93f72d335e6c7cfe8fd3859d7d6fe41cbb10fcf9b650fa8342c98ce7eaf6366c4e0991fd5e24eaf10356e35477323c1bfa39ff907210
|
|
7
|
+
data.tar.gz: e3ca719a309508ee046b4a98aaf0a15ece961bf2c08bf0f1c1ddb5b5664f190b07f75964bd5bceea98b35d2c78a40ecf3e7af0d4f93ae50c4ba3c45c898b9c59
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
## [0.9.0] - 2021-06-08
|
|
9
|
+
### Added
|
|
10
|
+
- CustomField resource
|
|
11
|
+
- rubocop linter
|
|
12
|
+
- improve gemspec metadata
|
|
13
|
+
### Changed
|
|
14
|
+
- dummy upgrade to rails 6
|
|
15
|
+
- update dev dependencies
|
|
16
|
+
|
|
17
|
+
## [0.8.2] - 2021-03-05
|
|
18
|
+
### Added
|
|
19
|
+
- ruby 3 compatibility
|
|
20
|
+
|
|
21
|
+
## [0.8.1] - 2020-06-08
|
|
22
|
+
### Fixed
|
|
23
|
+
- Retrieve (Easy)Redmine total entities from response if headers missing
|
|
24
|
+
- Validation error messages parser from XML
|
|
25
|
+
|
|
26
|
+
## [0.8.0] - 2020-04-28
|
|
27
|
+
### Added
|
|
28
|
+
- TimeEntry
|
|
29
|
+
- EasyAttendance
|
|
30
|
+
## [0.7.5] - 2020-03-06
|
|
31
|
+
### Added
|
|
32
|
+
- EasyServer `status` alias for `server_status`
|
|
33
|
+
## [0.7.5] - 2020-01-17
|
|
34
|
+
### Added
|
|
35
|
+
- aasm_event into EasyWebApplication scheme
|
|
36
|
+
- notes into EasyWebApplication scheme
|
|
37
|
+
## [0.7.4] - 2019-09-02
|
|
38
|
+
### Added
|
|
39
|
+
- Easy Web Application add belongs_to Issue
|
|
40
|
+
## [0.7.2] - 2019-08-29
|
|
41
|
+
### Added
|
|
42
|
+
- Easy Web Hook model
|
|
43
|
+
## [0.7.1] - 2019-07-11
|
|
44
|
+
### Added
|
|
45
|
+
- configuration from Oauth2 token
|
|
46
|
+
### Fixed
|
|
47
|
+
- api_key is changed to class_attribute
|
|
48
|
+
## [0.6.3] - 2019-07-08
|
|
49
|
+
### Fixed
|
|
50
|
+
- cached headers
|
|
51
|
+
## [0.6.2] - 2019-05-14
|
|
52
|
+
### Added
|
|
53
|
+
- alias url in server resource
|
|
54
|
+
## [0.6.1] - 2019-04-03
|
|
55
|
+
### Added
|
|
56
|
+
- this file
|
|
57
|
+
- User resource in Redmine
|
|
58
|
+
- 100% code coverage :)
|
|
59
|
+
### Changed
|
|
60
|
+
- README
|
data/lib/easy/resource.rb
CHANGED
|
@@ -2,26 +2,29 @@ module Easy
|
|
|
2
2
|
class Resource < ActiveResource::Base
|
|
3
3
|
|
|
4
4
|
def self.configure(conf)
|
|
5
|
-
|
|
5
|
+
case conf
|
|
6
|
+
when ::Hash
|
|
6
7
|
if conf[:url].present? && conf[:token].present?
|
|
7
8
|
configure_bearer(conf[:url], conf[:token])
|
|
8
9
|
elsif conf[:url].present?
|
|
9
10
|
self.site = conf[:url]
|
|
10
11
|
end
|
|
11
|
-
|
|
12
|
+
when ::OAuth2::AccessToken
|
|
12
13
|
configure_bearer(conf.client.site, conf.token)
|
|
14
|
+
else
|
|
15
|
+
# do nothing, unknown configuration
|
|
13
16
|
end
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
def self.configure_bearer(url, token)
|
|
17
|
-
self.site
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
self.site = url
|
|
21
|
+
connection.auth_type = :bearer
|
|
22
|
+
connection.bearer_token = token
|
|
20
23
|
end
|
|
21
24
|
|
|
22
25
|
def becomes(entity_class)
|
|
23
|
-
model
|
|
24
|
-
model.attributes =
|
|
26
|
+
model = entity_class.new
|
|
27
|
+
model.attributes = attributes
|
|
25
28
|
model
|
|
26
29
|
end
|
|
27
30
|
|
data/lib/easy/resources.rb
CHANGED
|
@@ -4,6 +4,7 @@ require "activeresource-response"
|
|
|
4
4
|
require "easy/resources/railtie"
|
|
5
5
|
|
|
6
6
|
module Easy
|
|
7
|
+
|
|
7
8
|
autoload :Resource, "easy/resource"
|
|
8
9
|
|
|
9
10
|
module Resources
|
|
@@ -11,6 +12,7 @@ module Easy
|
|
|
11
12
|
|
|
12
13
|
autoload :Errors, "easy/resources/redmine/errors"
|
|
13
14
|
|
|
15
|
+
autoload :CustomField, "easy/resources/redmine/custom_field"
|
|
14
16
|
autoload :RedmineBase, "easy/resources/redmine/redmine_base"
|
|
15
17
|
autoload :EasyAttendance, "easy/resources/redmine/easy_attendance"
|
|
16
18
|
autoload :EasyContact, "easy/resources/redmine/easy_contact"
|
|
@@ -26,4 +28,5 @@ module Easy
|
|
|
26
28
|
|
|
27
29
|
end
|
|
28
30
|
end
|
|
31
|
+
|
|
29
32
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Easy
|
|
2
|
+
module Resources
|
|
3
|
+
module Redmine
|
|
4
|
+
class CustomField < RedmineBase
|
|
5
|
+
self.element_name = 'custom_field'
|
|
6
|
+
|
|
7
|
+
self.schema = {
|
|
8
|
+
id: :integer,
|
|
9
|
+
name: :string,
|
|
10
|
+
internal_name: :string,
|
|
11
|
+
value: :string,
|
|
12
|
+
field_format: :string,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
# @return formatted value based on **field_format**
|
|
16
|
+
def cast_value
|
|
17
|
+
case field_format
|
|
18
|
+
when "bool"
|
|
19
|
+
value.to_s =~ /1|true/i ? true : false
|
|
20
|
+
when "float", "amount"
|
|
21
|
+
value.to_f
|
|
22
|
+
when "int"
|
|
23
|
+
value.to_i
|
|
24
|
+
when "date"
|
|
25
|
+
Date.parse value
|
|
26
|
+
when "datetime"
|
|
27
|
+
DateTime.parse value
|
|
28
|
+
else
|
|
29
|
+
value
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -2,7 +2,6 @@ module Easy
|
|
|
2
2
|
module Resources
|
|
3
3
|
module Redmine
|
|
4
4
|
class EasyServer < RedmineBase
|
|
5
|
-
|
|
6
5
|
self.element_name = 'easy_server'
|
|
7
6
|
|
|
8
7
|
has_many :easy_web_applications, class_name: 'Easy::Resources::Redmine::EasyWebApplication'
|
|
@@ -12,6 +11,7 @@ module Easy
|
|
|
12
11
|
server_type: :string,
|
|
13
12
|
server_status: :string
|
|
14
13
|
}
|
|
14
|
+
|
|
15
15
|
# Alias for +host_name+ attribute
|
|
16
16
|
# @return [String]
|
|
17
17
|
def url
|
|
@@ -2,7 +2,6 @@ module Easy
|
|
|
2
2
|
module Resources
|
|
3
3
|
module Redmine
|
|
4
4
|
class EasyWebApplication < RedmineBase
|
|
5
|
-
|
|
6
5
|
self.element_name = 'easy_web_application'
|
|
7
6
|
|
|
8
7
|
self.schema = {
|
|
@@ -13,7 +12,7 @@ module Easy
|
|
|
13
12
|
easy_crm_case_id: :integer,
|
|
14
13
|
easy_contact_id: :integer,
|
|
15
14
|
aasm_event: :string,
|
|
16
|
-
notes: :string
|
|
15
|
+
notes: :string,
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
belongs_to :easy_contact, class_name: 'Easy::Resources::Redmine::EasyContact'
|
|
@@ -21,6 +20,7 @@ module Easy
|
|
|
21
20
|
belongs_to :easy_server, class_name: 'Easy::Resources::Redmine::EasyServer'
|
|
22
21
|
belongs_to :issue, class_name: 'Easy::Resources::Redmine::Issue'
|
|
23
22
|
|
|
23
|
+
has_many :custom_fields, class_name: 'Easy::Resources::Redmine::CustomField'
|
|
24
24
|
has_many :easy_web_application_activities, class_name: 'Easy::Resources::Redmine::EasyWebApplicationActivity'
|
|
25
25
|
has_one :easy_web_application_activity, class_name: 'Easy::Resources::Redmine::EasyWebApplicationActivity'
|
|
26
26
|
|
|
@@ -28,6 +28,18 @@ module Easy
|
|
|
28
28
|
url
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
+
# @!group ESko specific custom_fields
|
|
32
|
+
|
|
33
|
+
# @return [Boolean,nil]
|
|
34
|
+
def application_moves_on_request?
|
|
35
|
+
custom_fields.find { |cf| cf.internal_name == "application_move_on_request" }&.cast_value
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# @return [Boolean,nil]
|
|
39
|
+
def application_updates_on_request?
|
|
40
|
+
custom_fields.find { |cf| cf.internal_name == "application_updates_on_request" }&.cast_value
|
|
41
|
+
end
|
|
42
|
+
|
|
31
43
|
end
|
|
32
44
|
end
|
|
33
45
|
end
|
|
@@ -6,10 +6,15 @@ module Easy
|
|
|
6
6
|
# Redmine in XML responses specify type="array" on Errors
|
|
7
7
|
# It cause that `Hash.from_xml` already parsed errors as a Array
|
|
8
8
|
def from_xml(xml, save_cache = false)
|
|
9
|
-
array =
|
|
9
|
+
array = begin
|
|
10
|
+
Array.wrap(Hash.from_xml(xml)["errors"])
|
|
11
|
+
rescue StandardError
|
|
12
|
+
[]
|
|
13
|
+
end
|
|
10
14
|
from_array array, save_cache
|
|
11
15
|
end
|
|
16
|
+
|
|
12
17
|
end
|
|
13
18
|
end
|
|
14
19
|
end
|
|
15
|
-
end
|
|
20
|
+
end
|
|
@@ -2,10 +2,9 @@ module Easy
|
|
|
2
2
|
module Resources
|
|
3
3
|
module Redmine
|
|
4
4
|
class RedmineBase < ::Easy::Resource
|
|
5
|
-
|
|
6
5
|
self.include_root_in_json = true
|
|
7
6
|
self.format = :xml
|
|
8
|
-
|
|
7
|
+
add_response_method :http_response
|
|
9
8
|
|
|
10
9
|
class_attribute :api_key
|
|
11
10
|
|
|
@@ -29,7 +28,7 @@ module Easy
|
|
|
29
28
|
# Parse value of TOTAL amount of entities from headers or response
|
|
30
29
|
# @return [Integer]
|
|
31
30
|
def retrieve_total(response)
|
|
32
|
-
(response['Total'] || response.body[/total_count[:="]+(\d+)/] &&
|
|
31
|
+
(response['Total'] || response.body[/total_count[:="]+(\d+)/] && Regexp.last_match(1)).to_i
|
|
33
32
|
end
|
|
34
33
|
|
|
35
34
|
def get_all(**params, &block)
|
|
@@ -56,6 +55,7 @@ module Easy
|
|
|
56
55
|
def errors
|
|
57
56
|
@errors ||= Errors.new(self)
|
|
58
57
|
end
|
|
58
|
+
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
end
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
Dir["#{
|
|
1
|
+
gem_dir = File.expand_path('../../..', __dir__)
|
|
2
|
+
Dir["#{gem_dir}/spec/support/**/*.rb"].sort.each { |f| require f }
|
data/spec/easy_resources_spec.rb
CHANGED
|
@@ -6,7 +6,6 @@ RSpec.describe Easy::Resources do
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
describe '.configure' do
|
|
9
|
-
|
|
10
9
|
context "Easy::Resources::Redmine::RedmineBase" do
|
|
11
10
|
it "Easy::Resources::Redmine::RedmineBase" do
|
|
12
11
|
expect(Easy::Resources::Redmine::RedmineBase).to receive(:api_key=).with("xx1")
|
|
@@ -14,7 +13,5 @@ RSpec.describe Easy::Resources do
|
|
|
14
13
|
Easy::Resources::Redmine::RedmineBase.configure api_key: "xx1", url: "https://test.dummy"
|
|
15
14
|
end
|
|
16
15
|
end
|
|
17
|
-
|
|
18
16
|
end
|
|
19
|
-
|
|
20
17
|
end
|
|
@@ -11,6 +11,14 @@
|
|
|
11
11
|
<author id="14" name="Anonymní"/>
|
|
12
12
|
<internal_user_limit>0</internal_user_limit>
|
|
13
13
|
<git_repository type="string">git@git.easy.cz:package.git</git_repository>
|
|
14
|
+
<custom_fields type="array">
|
|
15
|
+
<custom_field id="695" name="Move on-request" internal_name="application_move_on_request" field_format="bool">
|
|
16
|
+
<value>1</value>
|
|
17
|
+
</custom_field>
|
|
18
|
+
<custom_field id="463" name="Updates on-request" internal_name="application_updates_on_request" field_format="bool">
|
|
19
|
+
<value>0</value>
|
|
20
|
+
</custom_field>
|
|
21
|
+
</custom_fields>
|
|
14
22
|
<created_at>2018-03-22T09:10:47Z</created_at>
|
|
15
23
|
<updated_at>2018-05-24T10:55:28Z</updated_at>
|
|
16
24
|
</easy_web_application>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<easy_web_hooks total_count="12" offset="0" limit="25" type="array">
|
|
3
|
+
<easy_web_hook>
|
|
4
|
+
<id>1</id>
|
|
5
|
+
<url>https://hooks.integromat.com/super-secret-hash</url>
|
|
6
|
+
<status>inactive</status>
|
|
7
|
+
<entity_type>Issue</entity_type>
|
|
8
|
+
<action>create</action>
|
|
9
|
+
<author id="1" name="Manager"/>
|
|
10
|
+
<api_includes>[]</api_includes>
|
|
11
|
+
<created_at>2017-08-18T11:56:53Z</created_at>
|
|
12
|
+
<updated_at>2019-08-29T07:44:16Z</updated_at>
|
|
13
|
+
</easy_web_hook>
|
|
14
|
+
<easy_web_hook>
|
|
15
|
+
<id>3</id>
|
|
16
|
+
<url>https://hooks.zapier.com/hooks/catch/hookID/hookSecret/</url>
|
|
17
|
+
<status>inactive</status>
|
|
18
|
+
<entity_type>Project</entity_type>
|
|
19
|
+
<action>destroy</action>
|
|
20
|
+
<author id="5" name="Admin"/>
|
|
21
|
+
<project id="7" name="Reporting"/>
|
|
22
|
+
<api_includes>[issue_categories]</api_includes>
|
|
23
|
+
<created_at>2019-06-19T11:41:22Z</created_at>
|
|
24
|
+
<updated_at>2019-06-19T11:41:22Z</updated_at>
|
|
25
|
+
</easy_web_hook>
|
|
26
|
+
</easy_web_hooks>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<easy_web_hook>
|
|
2
|
+
<id>1</id>
|
|
3
|
+
<url>https://hooks.integromat.com/super-secret-hash</url>
|
|
4
|
+
<status>inactive</status>
|
|
5
|
+
<entity_type>Issue</entity_type>
|
|
6
|
+
<action>create</action>
|
|
7
|
+
<author id="1" name="Manager"/>
|
|
8
|
+
<api_includes>[]</api_includes>
|
|
9
|
+
<created_at>2017-08-18T11:56:53Z</created_at>
|
|
10
|
+
<updated_at>2019-08-29T07:44:16Z</updated_at>
|
|
11
|
+
</easy_web_hook>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
RSpec.describe Easy::Resources::Redmine::CustomField do
|
|
2
|
+
include_context "redmine active resource shares" do
|
|
3
|
+
let(:entity_name) { 'custom_field' }
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
let(:entity) { find_entity }
|
|
7
|
+
|
|
8
|
+
describe "#cast_value" do
|
|
9
|
+
subject { entity.cast_value }
|
|
10
|
+
context "with datetime" do
|
|
11
|
+
let(:entity) { find_entity "datetime" }
|
|
12
|
+
it { is_expected.to be_a DateTime }
|
|
13
|
+
end
|
|
14
|
+
context "with date" do
|
|
15
|
+
let(:entity) { find_entity "date" }
|
|
16
|
+
it { is_expected.to be_a Date }
|
|
17
|
+
end
|
|
18
|
+
context "with int" do
|
|
19
|
+
let(:entity) { find_entity "int" }
|
|
20
|
+
it { is_expected.to eq 0 }
|
|
21
|
+
end
|
|
22
|
+
context "with float" do
|
|
23
|
+
let(:entity) { find_entity "float" }
|
|
24
|
+
it { is_expected.to eq 24.0 }
|
|
25
|
+
end
|
|
26
|
+
context "with text" do
|
|
27
|
+
let(:entity) { find_entity "string" }
|
|
28
|
+
it { is_expected.not_to be_blank }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -3,7 +3,6 @@ RSpec.describe Easy::Resources::Redmine::EasyCrmCase do
|
|
|
3
3
|
let(:entity_name) { 'easy_crm_case' }
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
it 'get crm case' do
|
|
8
7
|
expect(find_entity.name).not_to be_empty
|
|
9
8
|
end
|
|
@@ -15,5 +14,4 @@ RSpec.describe Easy::Resources::Redmine::EasyCrmCase do
|
|
|
15
14
|
it 'crm case has customer' do
|
|
16
15
|
expect(find_entity.customer).to be_a Easy::Resources::Redmine::EasyContact
|
|
17
16
|
end
|
|
18
|
-
|
|
19
17
|
end
|
|
@@ -16,7 +16,7 @@ RSpec.describe Easy::Resources::Redmine::EasyWebApplication do
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it 'get ewa' do
|
|
19
|
-
expect(find_entity.attributes).to include
|
|
19
|
+
expect(find_entity.attributes).to include(*%w[id url git_repository version application_type created_at])
|
|
20
20
|
expect(find_entity.git_branch).to be_nil
|
|
21
21
|
expect(find_entity.name).not_to be_empty
|
|
22
22
|
end
|
|
@@ -29,7 +29,6 @@ RSpec.describe Easy::Resources::Redmine::EasyWebApplication do
|
|
|
29
29
|
include_examples "optional reference", :easy_contact
|
|
30
30
|
|
|
31
31
|
describe ".get_all" do
|
|
32
|
-
|
|
33
32
|
it "with block" do
|
|
34
33
|
stub_xml(path: "easy_web_applications.xml", source_file: "index", response_headers: { 'Total' => '4' })
|
|
35
34
|
stub_xml(path: "easy_web_applications.xml?page=2", source_file: "index")
|
|
@@ -53,7 +52,18 @@ RSpec.describe Easy::Resources::Redmine::EasyWebApplication do
|
|
|
53
52
|
subject.easy_web_application_activities_attributes = { activities_count_in_day: 13 }
|
|
54
53
|
subject.save
|
|
55
54
|
end
|
|
56
|
-
|
|
57
55
|
end
|
|
58
56
|
|
|
57
|
+
describe "application_moves_on_request?" do
|
|
58
|
+
subject { find_entity.application_moves_on_request? }
|
|
59
|
+
it "should be true" do
|
|
60
|
+
is_expected.to be_truthy
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
describe "application_updates_on_request?" do
|
|
64
|
+
subject { find_entity.application_updates_on_request? }
|
|
65
|
+
it "should be false" do
|
|
66
|
+
is_expected.to be_falsey
|
|
67
|
+
end
|
|
68
|
+
end
|
|
59
69
|
end
|
|
@@ -3,7 +3,6 @@ RSpec.describe Easy::Resources::Redmine::Issue do
|
|
|
3
3
|
let(:entity_name) { 'issue' }
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
it 'get issue' do
|
|
8
7
|
expect(find_entity.subject).not_to be_empty
|
|
9
8
|
end
|
|
@@ -11,5 +10,4 @@ RSpec.describe Easy::Resources::Redmine::Issue do
|
|
|
11
10
|
it 'issue has project' do
|
|
12
11
|
expect(find_entity.project).to be_a Easy::Resources::Redmine::Project
|
|
13
12
|
end
|
|
14
|
-
|
|
15
13
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
RSpec.describe Easy::Resources::Redmine::RedmineBase do
|
|
2
|
-
|
|
3
2
|
it 'no configuration specify' do
|
|
4
3
|
described_class.site = nil
|
|
5
4
|
described_class.api_key = nil
|
|
@@ -15,5 +14,4 @@ RSpec.describe Easy::Resources::Redmine::RedmineBase do
|
|
|
15
14
|
expect(described_class.headers).to include "X-Redmine-API-Key" => "xxxx"
|
|
16
15
|
end
|
|
17
16
|
end
|
|
18
|
-
|
|
19
17
|
end
|
|
@@ -3,7 +3,6 @@ RSpec.describe Easy::Resources::Redmine::User do
|
|
|
3
3
|
let(:entity_name) { 'user' }
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
it 'get user' do
|
|
8
7
|
expect(find_entity.mail).not_to be_empty
|
|
9
8
|
end
|
|
@@ -15,5 +14,4 @@ RSpec.describe Easy::Resources::Redmine::User do
|
|
|
15
14
|
# it 'issue has project' do
|
|
16
15
|
# expect(find_entity.project).to be_a Easy::Resources::Redmine::Project
|
|
17
16
|
# end
|
|
18
|
-
|
|
19
17
|
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
class DummyResource < Easy::Resource
|
|
2
2
|
self.site = "easyredmine.com"
|
|
3
3
|
self.format = :json
|
|
4
|
+
|
|
4
5
|
end
|
|
5
6
|
RSpec.describe Easy::Resource do
|
|
6
7
|
subject { DummyResource.new({ id: 1 }, true) }
|
|
@@ -22,7 +23,6 @@ RSpec.describe Easy::Resource do
|
|
|
22
23
|
expect(subject).to receive(:patch).with nil, {}, value.to_xml(root: "dummy-resource")
|
|
23
24
|
subject.update_column :att, 1
|
|
24
25
|
end
|
|
25
|
-
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
describe "#patch" do
|
|
@@ -39,4 +39,4 @@ RSpec.describe Easy::Resource do
|
|
|
39
39
|
subject.patch "deployed"
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
|
-
end
|
|
42
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
ENV["RAILS_ENV"] = "test"
|
|
2
2
|
require "simplecov"
|
|
3
3
|
SimpleCov.start 'rails' do
|
|
4
|
-
add_filter '
|
|
5
|
-
add_filter 'lib/easy/resources/
|
|
4
|
+
add_filter '/bin'
|
|
5
|
+
add_filter '/lib/easy/resources/spec_helper'
|
|
6
|
+
add_filter '/lib/easy/resources/version'
|
|
7
|
+
add_filter '/vendor'
|
|
6
8
|
end
|
|
7
9
|
|
|
8
10
|
require "bundler/setup"
|
|
@@ -16,7 +18,6 @@ require "active_resource_response/http_mock"
|
|
|
16
18
|
Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
|
|
17
19
|
|
|
18
20
|
RSpec.configure do |config|
|
|
19
|
-
|
|
20
21
|
# Disable RSpec exposing methods globally on `Module` and `main`
|
|
21
22
|
config.disable_monkey_patching!
|
|
22
23
|
|
|
@@ -24,4 +25,3 @@ RSpec.configure do |config|
|
|
|
24
25
|
c.syntax = :expect
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
|
-
|
metadata
CHANGED
|
@@ -1,57 +1,58 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: easy-resources
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
7
|
+
- Petr
|
|
8
|
+
- Lukáš
|
|
8
9
|
autorequire:
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
12
|
+
date: 2021-06-08 00:00:00.000000000 Z
|
|
12
13
|
dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
15
|
+
name: activeresource
|
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
|
16
17
|
requirements:
|
|
17
|
-
- - "
|
|
18
|
+
- - "~>"
|
|
18
19
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
20
|
+
version: '5.1'
|
|
20
21
|
type: :runtime
|
|
21
22
|
prerelease: false
|
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
24
|
requirements:
|
|
24
|
-
- - "
|
|
25
|
+
- - "~>"
|
|
25
26
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
27
|
+
version: '5.1'
|
|
27
28
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: activeresource
|
|
29
|
+
name: activeresource-response
|
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
|
30
31
|
requirements:
|
|
31
32
|
- - "~>"
|
|
32
33
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
34
|
+
version: '1.2'
|
|
34
35
|
type: :runtime
|
|
35
36
|
prerelease: false
|
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
38
|
requirements:
|
|
38
39
|
- - "~>"
|
|
39
40
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
41
|
+
version: '1.2'
|
|
41
42
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
43
|
+
name: railties
|
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
|
44
45
|
requirements:
|
|
45
|
-
- - "
|
|
46
|
+
- - ">="
|
|
46
47
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
48
|
+
version: '0'
|
|
48
49
|
type: :runtime
|
|
49
50
|
prerelease: false
|
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
52
|
requirements:
|
|
52
|
-
- - "
|
|
53
|
+
- - ">="
|
|
53
54
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
55
|
+
version: '0'
|
|
55
56
|
- !ruby/object:Gem::Dependency
|
|
56
57
|
name: easy-configuration
|
|
57
58
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,75 +67,93 @@ dependencies:
|
|
|
66
67
|
- - ">="
|
|
67
68
|
- !ruby/object:Gem::Version
|
|
68
69
|
version: '0'
|
|
70
|
+
- !ruby/object:Gem::Dependency
|
|
71
|
+
name: easy_style
|
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - ">="
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '0'
|
|
77
|
+
type: :development
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: '0'
|
|
69
84
|
- !ruby/object:Gem::Dependency
|
|
70
85
|
name: rails
|
|
71
86
|
requirement: !ruby/object:Gem::Requirement
|
|
72
87
|
requirements:
|
|
73
88
|
- - "~>"
|
|
74
89
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
90
|
+
version: '6.1'
|
|
76
91
|
type: :development
|
|
77
92
|
prerelease: false
|
|
78
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
94
|
requirements:
|
|
80
95
|
- - "~>"
|
|
81
96
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
97
|
+
version: '6.1'
|
|
83
98
|
- !ruby/object:Gem::Dependency
|
|
84
99
|
name: rspec-rails
|
|
85
100
|
requirement: !ruby/object:Gem::Requirement
|
|
86
101
|
requirements:
|
|
87
102
|
- - "~>"
|
|
88
103
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
104
|
+
version: '4.0'
|
|
90
105
|
type: :development
|
|
91
106
|
prerelease: false
|
|
92
107
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
108
|
requirements:
|
|
94
109
|
- - "~>"
|
|
95
110
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
111
|
+
version: '4.0'
|
|
97
112
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
113
|
+
name: sqlite3
|
|
99
114
|
requirement: !ruby/object:Gem::Requirement
|
|
100
115
|
requirements:
|
|
101
116
|
- - "~>"
|
|
102
117
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
118
|
+
version: 1.4.2
|
|
104
119
|
type: :development
|
|
105
120
|
prerelease: false
|
|
106
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
122
|
requirements:
|
|
108
123
|
- - "~>"
|
|
109
124
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
125
|
+
version: 1.4.2
|
|
111
126
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
127
|
+
name: webmock
|
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
|
114
129
|
requirements:
|
|
115
130
|
- - "~>"
|
|
116
131
|
- !ruby/object:Gem::Version
|
|
117
|
-
version:
|
|
132
|
+
version: '3.13'
|
|
118
133
|
type: :development
|
|
119
134
|
prerelease: false
|
|
120
135
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
136
|
requirements:
|
|
122
137
|
- - "~>"
|
|
123
138
|
- !ruby/object:Gem::Version
|
|
124
|
-
version:
|
|
125
|
-
description:
|
|
139
|
+
version: '3.13'
|
|
140
|
+
description: Define common Active::Resources for Redmine / Easy Redmine and Easy Project
|
|
141
|
+
entities.
|
|
126
142
|
email:
|
|
127
143
|
- petr@easy.cz
|
|
144
|
+
- lukas@easy.cz
|
|
128
145
|
executables: []
|
|
129
146
|
extensions: []
|
|
130
147
|
extra_rdoc_files: []
|
|
131
148
|
files:
|
|
149
|
+
- CHANGELOG.md
|
|
132
150
|
- MIT-LICENSE
|
|
133
151
|
- README.md
|
|
134
152
|
- Rakefile
|
|
135
153
|
- lib/easy/resource.rb
|
|
136
154
|
- lib/easy/resources.rb
|
|
137
155
|
- lib/easy/resources/railtie.rb
|
|
156
|
+
- lib/easy/resources/redmine/custom_field.rb
|
|
138
157
|
- lib/easy/resources/redmine/easy_attendance.rb
|
|
139
158
|
- lib/easy/resources/redmine/easy_contact.rb
|
|
140
159
|
- lib/easy/resources/redmine/easy_crm_case.rb
|
|
@@ -151,6 +170,12 @@ files:
|
|
|
151
170
|
- lib/easy/resources/spec_helper.rb
|
|
152
171
|
- lib/easy/resources/version.rb
|
|
153
172
|
- spec/easy_resources_spec.rb
|
|
173
|
+
- spec/fixtures/files/custom_field/bool.xml
|
|
174
|
+
- spec/fixtures/files/custom_field/date.xml
|
|
175
|
+
- spec/fixtures/files/custom_field/datetime.xml
|
|
176
|
+
- spec/fixtures/files/custom_field/float.xml
|
|
177
|
+
- spec/fixtures/files/custom_field/int.xml
|
|
178
|
+
- spec/fixtures/files/custom_field/string.xml
|
|
154
179
|
- spec/fixtures/files/easy_attendance/show.xml
|
|
155
180
|
- spec/fixtures/files/easy_contact.json
|
|
156
181
|
- spec/fixtures/files/easy_contact/show.xml
|
|
@@ -165,6 +190,8 @@ files:
|
|
|
165
190
|
- spec/fixtures/files/easy_web_application/with_easy_contact.xml
|
|
166
191
|
- spec/fixtures/files/easy_web_application/with_easy_crm_case.xml
|
|
167
192
|
- spec/fixtures/files/easy_web_application/with_ewaa.xml
|
|
193
|
+
- spec/fixtures/files/easy_web_hook/index.xml
|
|
194
|
+
- spec/fixtures/files/easy_web_hook/show.xml
|
|
168
195
|
- spec/fixtures/files/issue.json
|
|
169
196
|
- spec/fixtures/files/issue/show.xml
|
|
170
197
|
- spec/fixtures/files/project.json
|
|
@@ -172,12 +199,14 @@ files:
|
|
|
172
199
|
- spec/fixtures/files/time_entry/invalid_update.xml
|
|
173
200
|
- spec/fixtures/files/time_entry/show.xml
|
|
174
201
|
- spec/fixtures/files/user/show.xml
|
|
202
|
+
- spec/models/easy-resources/redmine/custom_field_spec.rb
|
|
175
203
|
- spec/models/easy-resources/redmine/easy_attendance_spec.rb
|
|
176
204
|
- spec/models/easy-resources/redmine/easy_contact_spec.rb
|
|
177
205
|
- spec/models/easy-resources/redmine/easy_crm_case_spec.rb
|
|
178
206
|
- spec/models/easy-resources/redmine/easy_server_spec.rb
|
|
179
207
|
- spec/models/easy-resources/redmine/easy_web_application_activity_spec.rb
|
|
180
208
|
- spec/models/easy-resources/redmine/easy_web_application_spec.rb
|
|
209
|
+
- spec/models/easy-resources/redmine/easy_web_hook_spec.rb
|
|
181
210
|
- spec/models/easy-resources/redmine/errors_spec.rb
|
|
182
211
|
- spec/models/easy-resources/redmine/issue_spec.rb
|
|
183
212
|
- spec/models/easy-resources/redmine/project_spec.rb
|
|
@@ -189,7 +218,7 @@ files:
|
|
|
189
218
|
- spec/support/active_resource.rb
|
|
190
219
|
- spec/support/fixtures.rb
|
|
191
220
|
- spec/support/redmine_active_resource.rb
|
|
192
|
-
homepage: https://
|
|
221
|
+
homepage: https://git.easy.cz/easy/resources
|
|
193
222
|
licenses:
|
|
194
223
|
- MIT
|
|
195
224
|
metadata:
|
|
@@ -200,27 +229,29 @@ require_paths:
|
|
|
200
229
|
- lib
|
|
201
230
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
231
|
requirements:
|
|
203
|
-
- - "
|
|
232
|
+
- - "~>"
|
|
204
233
|
- !ruby/object:Gem::Version
|
|
205
|
-
version: '
|
|
234
|
+
version: '2.5'
|
|
206
235
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
236
|
requirements:
|
|
208
237
|
- - ">="
|
|
209
238
|
- !ruby/object:Gem::Version
|
|
210
239
|
version: '0'
|
|
211
240
|
requirements: []
|
|
212
|
-
rubygems_version: 3.
|
|
241
|
+
rubygems_version: 3.2.16
|
|
213
242
|
signing_key:
|
|
214
243
|
specification_version: 4
|
|
215
|
-
summary:
|
|
244
|
+
summary: ActiveResources connectors for Easy Project / Easy Redmine
|
|
216
245
|
test_files:
|
|
217
246
|
- spec/spec_helper.rb
|
|
247
|
+
- spec/models/easy-resources/redmine/custom_field_spec.rb
|
|
218
248
|
- spec/models/easy-resources/redmine/project_spec.rb
|
|
219
249
|
- spec/models/easy-resources/redmine/easy_crm_case_spec.rb
|
|
220
250
|
- spec/models/easy-resources/redmine/easy_contact_spec.rb
|
|
221
251
|
- spec/models/easy-resources/redmine/issue_spec.rb
|
|
222
252
|
- spec/models/easy-resources/redmine/time_entry_spec.rb
|
|
223
253
|
- spec/models/easy-resources/redmine/redmine_base_spec.rb
|
|
254
|
+
- spec/models/easy-resources/redmine/easy_web_hook_spec.rb
|
|
224
255
|
- spec/models/easy-resources/redmine/easy_web_application_activity_spec.rb
|
|
225
256
|
- spec/models/easy-resources/redmine/easy_web_application_spec.rb
|
|
226
257
|
- spec/models/easy-resources/redmine/easy_server_spec.rb
|
|
@@ -232,9 +263,17 @@ test_files:
|
|
|
232
263
|
- spec/support/fixtures.rb
|
|
233
264
|
- spec/support/redmine_active_resource.rb
|
|
234
265
|
- spec/easy_resources_spec.rb
|
|
266
|
+
- spec/fixtures/files/easy_web_hook/index.xml
|
|
267
|
+
- spec/fixtures/files/easy_web_hook/show.xml
|
|
235
268
|
- spec/fixtures/files/easy_contact/show.xml
|
|
236
269
|
- spec/fixtures/files/time_entry/show.xml
|
|
237
270
|
- spec/fixtures/files/time_entry/invalid_update.xml
|
|
271
|
+
- spec/fixtures/files/custom_field/datetime.xml
|
|
272
|
+
- spec/fixtures/files/custom_field/bool.xml
|
|
273
|
+
- spec/fixtures/files/custom_field/float.xml
|
|
274
|
+
- spec/fixtures/files/custom_field/date.xml
|
|
275
|
+
- spec/fixtures/files/custom_field/int.xml
|
|
276
|
+
- spec/fixtures/files/custom_field/string.xml
|
|
238
277
|
- spec/fixtures/files/easy_crm_case.json
|
|
239
278
|
- spec/fixtures/files/easy_crm_case/show.xml
|
|
240
279
|
- spec/fixtures/files/project.json
|