hermod 2.4.1 → 2.6.1
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 +5 -5
- data/.ruby-version +1 -0
- data/.travis.yml +2 -0
- data/CHANGELOG.md +42 -0
- data/Jenkinsfile +11 -0
- data/gemfiles/activesupport-6.0 +6 -0
- data/hermod.gemspec +12 -5
- data/lib/hermod/validators/allowed_values.rb +2 -2
- data/lib/hermod/validators/attributes.rb +10 -8
- data/lib/hermod/validators/base.rb +3 -6
- data/lib/hermod/validators/non_negative.rb +2 -2
- data/lib/hermod/validators/non_zero.rb +2 -2
- data/lib/hermod/validators/range.rb +2 -2
- data/lib/hermod/validators/regular_expression.rb +2 -2
- data/lib/hermod/validators/type_checker.rb +2 -2
- data/lib/hermod/validators/value_presence.rb +2 -2
- data/lib/hermod/validators/whole_units.rb +2 -2
- data/lib/hermod/version.rb +1 -1
- data/spec/hermod/validators/base_spec.rb +1 -1
- data/spec/hermod/xml_section_builder/string_node_spec.rb +13 -0
- metadata +23 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: da9b5d8d5ee3394dccb1cbf50fda9119e997ee142e06d94cc76e1ebb8a4668f5
|
4
|
+
data.tar.gz: 2290b1eb07c850663aa8503a72dbe35220d8cf22c23c3f0410b24e27a598fe81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d16713dc7fff7318109c675c0b38acf6f101fb62adc6fa6005aff97daade193527572d1ccbd152c850e2ff33ecdebb9c35d71aac24fe4b4f70506efa8a70a7c6
|
7
|
+
data.tar.gz: fd12fa60b05c7bb69ce5418ab4fe56ca242527b6102b1b940c9833ad69d7b8a33f72c33035d28c04d7dd848c7b3f08f9a8944da7c64a8379c0c8b2530828089c
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.1
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [Unreleased]
|
9
|
+
##[2.6.1] - 2020-10-22
|
10
|
+
## Added
|
11
|
+
- Changelog updates
|
12
|
+
|
13
|
+
##[2.6.0] - 2020-10-22
|
14
|
+
## Added
|
15
|
+
- Update libxml-ruby to version ~> 3.2
|
16
|
+
- Update ruby-version to 2.7.1
|
17
|
+
|
18
|
+
##[2.5.3] - 2019-11-01
|
19
|
+
### Added
|
20
|
+
- Link wiki to the readme file.
|
21
|
+
|
22
|
+
## [2.5.2] - 2019-10-21
|
23
|
+
### Added
|
24
|
+
- Links for homepage, changelog, issues and source code.
|
25
|
+
|
26
|
+
## [2.5.1] - 2019-08-26
|
27
|
+
### Added
|
28
|
+
- Support Rails 6.0
|
29
|
+
|
30
|
+
## [2.5.0] - 2019-07-25
|
31
|
+
### Added
|
32
|
+
- Adds Jenkins build
|
33
|
+
- Upgrades bundler and ruby version file
|
34
|
+
|
35
|
+
## [2.4.1] - 2019-07-22
|
36
|
+
### Added
|
37
|
+
- Resolve BigDecimal deprecation warnings
|
38
|
+
|
39
|
+
## [2.0.0] - Unknown
|
40
|
+
|
41
|
+
## [1.0.0] - Unknown
|
42
|
+
There were a number of "releases" that were made prior to this point. However, we have no good details of what was included in which release
|
data/Jenkinsfile
ADDED
data/hermod.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = %q{A Ruby library for talking to the HMRC Government Gateway.
|
13
13
|
This provides a builder for creating classes that can generate the XML needed complete with type information and
|
14
14
|
runtime validation.}
|
15
|
-
spec.homepage = ""
|
15
|
+
spec.homepage = "https://github.com/fac/hermod"
|
16
16
|
spec.license = "Apache License, Version 2.0"
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -22,12 +22,19 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.required_ruby_version = ">= 2.0.0"
|
24
24
|
|
25
|
-
spec.add_runtime_dependency "libxml-ruby", "~>
|
26
|
-
spec.add_runtime_dependency "activesupport", "> 3.2", "<
|
25
|
+
spec.add_runtime_dependency "libxml-ruby", "~> 3.2"
|
26
|
+
spec.add_runtime_dependency "activesupport", "> 3.2", "< 7"
|
27
27
|
|
28
|
-
spec.add_development_dependency "bundler", "~>
|
29
|
-
spec.add_development_dependency "rake", "
|
28
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
29
|
+
spec.add_development_dependency "rake", "13.0.1"
|
30
30
|
spec.add_development_dependency "minitest", "~> 5.3"
|
31
31
|
spec.add_development_dependency "minitest-reporters", "~> 1.0", ">= 1.0.16"
|
32
32
|
spec.add_development_dependency "nokogiri", "~> 1.5"
|
33
|
+
|
34
|
+
spec.metadata = {
|
35
|
+
"bug_tracker_uri" => "https://github.com/fac/hermod/issues",
|
36
|
+
"changelog_uri" => "https://github.com/fac/hermod/blob/master/CHANGELOG.md",
|
37
|
+
"source_code_uri" => "https://github.com/fac/hermod",
|
38
|
+
"wiki_uri" => "https://github.com/fac/hermod/blob/master/README.md"
|
39
|
+
}
|
33
40
|
end
|
@@ -13,11 +13,11 @@ module Hermod
|
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
|
-
def test
|
16
|
+
def test(value, attributes)
|
17
17
|
value.blank? || allowed_values.include?(value)
|
18
18
|
end
|
19
19
|
|
20
|
-
def message
|
20
|
+
def message(value, attributes)
|
21
21
|
list_of_values = allowed_values.to_sentence(last_word_connector: ", or ", two_words_connector: " or ")
|
22
22
|
"must be one of #{list_of_values}, not #{value}"
|
23
23
|
end
|
@@ -13,16 +13,18 @@ module Hermod
|
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
bad_attributes == []
|
16
|
+
def bad_attributes(attributes)
|
17
|
+
attributes.map do |attribute, _|
|
18
|
+
attribute unless allowed_attributes.include? attribute
|
19
|
+
end.compact
|
22
20
|
end
|
23
21
|
|
24
|
-
def
|
25
|
-
|
22
|
+
def test(value, attributes)
|
23
|
+
bad_attributes(attributes) == []
|
24
|
+
end
|
25
|
+
|
26
|
+
def message(value, attributes)
|
27
|
+
"has attributes it doesn't accept: #{bad_attributes(attributes).to_sentence}"
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
@@ -3,16 +3,13 @@ require 'active_support/core_ext/array/conversions'
|
|
3
3
|
module Hermod
|
4
4
|
module Validators
|
5
5
|
class Base
|
6
|
-
attr_reader :value, :attributes
|
7
|
-
|
8
6
|
# Public: Runs the test for the validator returning true if it passes and
|
9
7
|
# raising if it fails
|
10
8
|
#
|
11
9
|
# Raises a Hermod::InvalidInputError if the test fails
|
12
10
|
# Returns true if it succeeds
|
13
11
|
def valid?(value, attributes)
|
14
|
-
|
15
|
-
!!test || raise(InvalidInputError, message)
|
12
|
+
!!test(value, attributes) || raise(InvalidInputError, message(value, attributes))
|
16
13
|
end
|
17
14
|
|
18
15
|
private
|
@@ -21,14 +18,14 @@ module Hermod
|
|
21
18
|
# validator
|
22
19
|
#
|
23
20
|
# Returns a boolean
|
24
|
-
def test
|
21
|
+
def test(value, attributes)
|
25
22
|
raise NotImplementedError
|
26
23
|
end
|
27
24
|
|
28
25
|
# Private: override in subclasses to provide a more useful error message
|
29
26
|
#
|
30
27
|
# Returns a string
|
31
|
-
def message
|
28
|
+
def message(value, attributes)
|
32
29
|
"is invalid"
|
33
30
|
end
|
34
31
|
end
|
@@ -17,11 +17,11 @@ module Hermod
|
|
17
17
|
# because those are checked by the ValuePresence validator if necessary.
|
18
18
|
#
|
19
19
|
# Returns a boolean
|
20
|
-
def test
|
20
|
+
def test(value, attributes)
|
21
21
|
value.blank? || value =~ pattern
|
22
22
|
end
|
23
23
|
|
24
|
-
def message
|
24
|
+
def message(value, attributes)
|
25
25
|
"#{value.inspect} does not match #{pattern.inspect}"
|
26
26
|
end
|
27
27
|
end
|
@@ -23,11 +23,11 @@ module Hermod
|
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
|
-
def test
|
26
|
+
def test(value, attributes)
|
27
27
|
value.blank? || checker.call(value)
|
28
28
|
end
|
29
29
|
|
30
|
-
def message
|
30
|
+
def message(value, attributes)
|
31
31
|
expected_class_name = expected_class.name.downcase
|
32
32
|
join_word = (%w(a e i o u).include?(expected_class_name[0]) ? "an" : "a")
|
33
33
|
"must be #{join_word} #{expected_class_name}"
|
data/lib/hermod/version.rb
CHANGED
@@ -72,6 +72,19 @@ module Hermod
|
|
72
72
|
ex.message.must_equal "mood must be one of Happy, Sad, or Hangry, not Jubilant"
|
73
73
|
end
|
74
74
|
|
75
|
+
it "should be thread safe for validation" do
|
76
|
+
subject1 = StringXml.new do |string_xml|
|
77
|
+
string_xml.greeting "Hello"
|
78
|
+
end
|
79
|
+
|
80
|
+
Thread.new do
|
81
|
+
subject1.mood "Hangry"
|
82
|
+
end
|
83
|
+
|
84
|
+
ex = proc { subject.mood "Jubilant" }.must_raise InvalidInputError
|
85
|
+
ex.message.must_equal "mood must be one of Happy, Sad, or Hangry, not Jubilant"
|
86
|
+
end
|
87
|
+
|
75
88
|
it "should use the given keys for attributes" do
|
76
89
|
subject.title "Sir", masculine: "no"
|
77
90
|
attributes_for_node("Title").keys.first.must_equal "Male"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hermod
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Mills
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libxml-ruby
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 2.7.0
|
19
|
+
version: '3.2'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '2
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 2.7.0
|
26
|
+
version: '3.2'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: activesupport
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,7 +33,7 @@ dependencies:
|
|
39
33
|
version: '3.2'
|
40
34
|
- - "<"
|
41
35
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
36
|
+
version: '7'
|
43
37
|
type: :runtime
|
44
38
|
prerelease: false
|
45
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,35 +43,35 @@ dependencies:
|
|
49
43
|
version: '3.2'
|
50
44
|
- - "<"
|
51
45
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
46
|
+
version: '7'
|
53
47
|
- !ruby/object:Gem::Dependency
|
54
48
|
name: bundler
|
55
49
|
requirement: !ruby/object:Gem::Requirement
|
56
50
|
requirements:
|
57
51
|
- - "~>"
|
58
52
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
53
|
+
version: '2.0'
|
60
54
|
type: :development
|
61
55
|
prerelease: false
|
62
56
|
version_requirements: !ruby/object:Gem::Requirement
|
63
57
|
requirements:
|
64
58
|
- - "~>"
|
65
59
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
60
|
+
version: '2.0'
|
67
61
|
- !ruby/object:Gem::Dependency
|
68
62
|
name: rake
|
69
63
|
requirement: !ruby/object:Gem::Requirement
|
70
64
|
requirements:
|
71
|
-
- -
|
65
|
+
- - '='
|
72
66
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
67
|
+
version: 13.0.1
|
74
68
|
type: :development
|
75
69
|
prerelease: false
|
76
70
|
version_requirements: !ruby/object:Gem::Requirement
|
77
71
|
requirements:
|
78
|
-
- -
|
72
|
+
- - '='
|
79
73
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
74
|
+
version: 13.0.1
|
81
75
|
- !ruby/object:Gem::Dependency
|
82
76
|
name: minitest
|
83
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,9 +131,12 @@ extensions: []
|
|
137
131
|
extra_rdoc_files: []
|
138
132
|
files:
|
139
133
|
- ".gitignore"
|
134
|
+
- ".ruby-version"
|
140
135
|
- ".travis.yml"
|
136
|
+
- CHANGELOG.md
|
141
137
|
- Gemfile
|
142
138
|
- Guardfile
|
139
|
+
- Jenkinsfile
|
143
140
|
- LICENSE
|
144
141
|
- README.md
|
145
142
|
- Rakefile
|
@@ -147,6 +144,7 @@ files:
|
|
147
144
|
- gemfiles/activesupport-4.0
|
148
145
|
- gemfiles/activesupport-4.2
|
149
146
|
- gemfiles/activesupport-5.0
|
147
|
+
- gemfiles/activesupport-6.0
|
150
148
|
- hermod.gemspec
|
151
149
|
- lib/hermod.rb
|
152
150
|
- lib/hermod/input_mutator.rb
|
@@ -186,10 +184,14 @@ files:
|
|
186
184
|
- spec/hermod/xml_section_spec.rb
|
187
185
|
- spec/hermod_spec.rb
|
188
186
|
- spec/minitest_helper.rb
|
189
|
-
homepage:
|
187
|
+
homepage: https://github.com/fac/hermod
|
190
188
|
licenses:
|
191
189
|
- Apache License, Version 2.0
|
192
|
-
metadata:
|
190
|
+
metadata:
|
191
|
+
bug_tracker_uri: https://github.com/fac/hermod/issues
|
192
|
+
changelog_uri: https://github.com/fac/hermod/blob/master/CHANGELOG.md
|
193
|
+
source_code_uri: https://github.com/fac/hermod
|
194
|
+
wiki_uri: https://github.com/fac/hermod/blob/master/README.md
|
193
195
|
post_install_message:
|
194
196
|
rdoc_options: []
|
195
197
|
require_paths:
|
@@ -205,8 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
207
|
- !ruby/object:Gem::Version
|
206
208
|
version: '0'
|
207
209
|
requirements: []
|
208
|
-
|
209
|
-
rubygems_version: 2.5.2.3
|
210
|
+
rubygems_version: 3.1.2
|
210
211
|
signing_key:
|
211
212
|
specification_version: 4
|
212
213
|
summary: A Ruby library for talking to the HMRC Government Gateway.
|