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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cbf3807669ca862241f9283bef0378fd7e6b85d3
4
- data.tar.gz: 9f8e3dd588bde55c11d92fc7b8c0b4dca9757492
2
+ SHA256:
3
+ metadata.gz: da9b5d8d5ee3394dccb1cbf50fda9119e997ee142e06d94cc76e1ebb8a4668f5
4
+ data.tar.gz: 2290b1eb07c850663aa8503a72dbe35220d8cf22c23c3f0410b24e27a598fe81
5
5
  SHA512:
6
- metadata.gz: c41fc3dffbabb1d8d42b672005cf7eb8fda5a6e2eaa7c09415303f7bd967cd795e47324876e3c4d42f6ffd0bc9a9f6f300c546edb3a7ca8d53141ac9dafc3b67
7
- data.tar.gz: 79456adf4bcbff635ed8ead7656c942925515610e062e8f072761199f5f2d5e33d508e28d44c78bbdd76d3f46cf6d60220702d03c3036bb7876e2a7e178fcd0a
6
+ metadata.gz: d16713dc7fff7318109c675c0b38acf6f101fb62adc6fa6005aff97daade193527572d1ccbd152c850e2ff33ecdebb9c35d71aac24fe4b4f70506efa8a70a7c6
7
+ data.tar.gz: fd12fa60b05c7bb69ce5418ab4fe56ca242527b6102b1b940c9833ad69d7b8a33f72c33035d28c04d7dd848c7b3f08f9a8944da7c64a8379c0c8b2530828089c
@@ -0,0 +1 @@
1
+ 2.7.1
@@ -8,3 +8,5 @@ gemfile:
8
8
  - gemfiles/activesupport-4.0
9
9
  - gemfiles/activesupport-4.2
10
10
  - gemfiles/activesupport-5.0
11
+ - gemfiles/activesupport-6.0
12
+
@@ -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
@@ -0,0 +1,11 @@
1
+ #!groovy
2
+
3
+ @Library('freeagent') _
4
+
5
+ freeagentGem(
6
+ node: 'smartos',
7
+ slack: [channel: '#tax-eng-ci'],
8
+ remote: "https://rubygems.org",
9
+ key: "rubygems",
10
+ pushTag: true,
11
+ forcePush: true )
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in xml-section.gemspec
4
+ gemspec :path => "../"
5
+
6
+ gem "activesupport", "~> 6.0"
@@ -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", "~> 2.7", ">= 2.7.0"
26
- spec.add_runtime_dependency "activesupport", "> 3.2", "< 6"
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", "~> 1.6"
29
- spec.add_development_dependency "rake", "~> 11.1"
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 test
17
- @bad_attributes = [] # reset this for each time the validator is used
18
- attributes.each do |attribute, _|
19
- bad_attributes << attribute unless allowed_attributes.include? attribute
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 message
25
- "has attributes it doesn't accept: #{bad_attributes.to_sentence}"
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
- @value, @attributes = value, attributes
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
@@ -7,11 +7,11 @@ module Hermod
7
7
 
8
8
  private
9
9
 
10
- def test
10
+ def test(value, attributes)
11
11
  value.blank? || value >= 0
12
12
  end
13
13
 
14
- def message
14
+ def message(value, attributes)
15
15
  "cannot be negative"
16
16
  end
17
17
  end
@@ -7,11 +7,11 @@ module Hermod
7
7
 
8
8
  private
9
9
 
10
- def test
10
+ def test(value, attributes)
11
11
  value.blank? || value.to_i != 0
12
12
  end
13
13
 
14
- def message
14
+ def message(value, attributes)
15
15
  "cannot be zero"
16
16
  end
17
17
  end
@@ -16,11 +16,11 @@ module Hermod
16
16
 
17
17
  private
18
18
 
19
- def test
19
+ def test(value, attributes)
20
20
  value.blank? || range.cover?(value)
21
21
  end
22
22
 
23
- def message
23
+ def message(value, attributes)
24
24
  "must be between #{range.min} and #{range.max}"
25
25
  end
26
26
  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}"
@@ -7,11 +7,11 @@ module Hermod
7
7
 
8
8
  private
9
9
 
10
- def test
10
+ def test(value, attributes)
11
11
  value.present?
12
12
  end
13
13
 
14
- def message
14
+ def message(value, attributes)
15
15
  "isn't optional but no value was provided"
16
16
  end
17
17
  end
@@ -8,11 +8,11 @@ module Hermod
8
8
 
9
9
  private
10
10
 
11
- def test
11
+ def test(value, attributes)
12
12
  value.blank? || value == value.to_i
13
13
  end
14
14
 
15
- def message
15
+ def message(value, attributes)
16
16
  "must be in whole units"
17
17
  end
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module Hermod
2
- VERSION = "2.4.1"
2
+ VERSION = "2.6.1"
3
3
  end
@@ -13,7 +13,7 @@ module Hermod
13
13
 
14
14
  it "has a default error message" do
15
15
  class TestValidator < Base
16
- def test
16
+ def test(value, attributes)
17
17
  false
18
18
  end
19
19
  end
@@ -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.1
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: 2019-07-22 00:00:00.000000000 Z
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.7'
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.7'
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: '6'
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: '6'
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: '1.6'
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: '1.6'
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: '11.1'
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: '11.1'
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
- rubyforge_project:
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.