hermod 2.4.1 → 2.6.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
- 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.