cxml-ruby 0.7.0 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f43fac9295a9de5ac9f0c327a73b26260569c239c70bad553e8cb0721c5fb7b
4
- data.tar.gz: 41e42f9b4a188923bf7c42105571c0f81da954fc82d4825d0c1c0dbd49ec7f93
3
+ metadata.gz: 125ea774cb74155d9512b222d1d47a06945558d87d441dd1491d53caf8e9ca9a
4
+ data.tar.gz: 986ef57d03cf1706eedf08618dc5b52931171f42b147e1d81dfabaf6a6c32df8
5
5
  SHA512:
6
- metadata.gz: 90361cf48f65bc79bde60722efe16be0f61f60e455998aa7c73bdbbcba7984b2c9b7b322b70579572d2d44988ed554db0f4ecd046038de6d0fc43086fe64fd77
7
- data.tar.gz: 23892b7370c13805e5ad69c0c1bed7b2181c872abc8cb9abed99c074e7423f28d764d8cfa3889593cd0a528ec3674b5384b4f5d5a97bcf59c576adebbf06cd61
6
+ metadata.gz: ebfe04583c735c1635a14d89cc49d4f1494b1d49b79efa7d072d261b1d91d0831a5f5d644fcfde75c54c572528fcca499288b4393dfdf86b33958d065b167d3b
7
+ data.tar.gz: 3a97f6bcc16715eae27f2ef9a8f4ade47281f092116458fc784224bd46d97cdae1f29e65234d07946ef7027accdce0e91dd9635003f8064c8b4af7730d0c1857
data/CHANGELOG.md CHANGED
@@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
14
14
 
15
15
  ---
16
16
 
17
+ ## [0.8.0] - 2021-04-25
18
+ ### Changed
19
+ - Support continued parsing of child nodes if unknown attribute is encountered with `raise_unknown_elements` set to `false`.
20
+
17
21
  ## [0.7.0] - 2021-01-12
18
22
  ### Added
19
23
  - Support parsing Phone tags.
@@ -121,9 +121,7 @@ module CXML
121
121
  klass = "CXML::#{camelize(key)}"
122
122
  send("#{key}=", Object.const_get(klass).new(val))
123
123
  rescue NoMethodError => e
124
- raise(UnknownAttributeError, e) if CXML.raise_unknown_elements
125
-
126
- CXML.logger.warn(e)
124
+ handle_unknown_elements_error(e)
127
125
  rescue NameError => e
128
126
  raise(e) unless e.to_s.match?(klass)
129
127
 
@@ -136,6 +134,8 @@ module CXML
136
134
  else
137
135
  send("#{key}=", val)
138
136
  end
137
+ rescue NoMethodError => e
138
+ handle_unknown_elements_error(e)
139
139
  end
140
140
 
141
141
  def camelize(string, uppercase_first_letter: true)
@@ -150,5 +150,11 @@ module CXML
150
150
  "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}"
151
151
  end.gsub('/', '::')
152
152
  end
153
+
154
+ def handle_unknown_elements_error(error)
155
+ raise(UnknownAttributeError, error) if CXML.raise_unknown_elements
156
+
157
+ CXML.logger.warn(error)
158
+ end
153
159
  end
154
160
  end
data/lib/cxml/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CXML
4
- VERSION = '0.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
@@ -82,6 +82,26 @@ describe CXML::Document do
82
82
  end
83
83
  end
84
84
 
85
+ context 'when unknown attribute is present' do
86
+ let(:data) { CXML::Parser.new(data: fixture('document_node_with_unknown_attribute.xml')).parse }
87
+ let(:doc) { CXML::Document.new(data) }
88
+
89
+ it 'does not raise and parses child nodes if CXML.raise_unknown_elements is false' do
90
+ CXML.raise_unknown_elements = false
91
+ -> { doc }.should_not raise_error
92
+
93
+ doc.response.status.code.should eq(200)
94
+ doc.response.status.content.should eq('123456')
95
+
96
+ # Reset `raise_unknown_elements` for future tests
97
+ CXML.raise_unknown_elements = true
98
+ end
99
+
100
+ it 'raises UnknownAttributeError' do
101
+ -> { doc }.should raise_error(CXML::UnknownAttributeError)
102
+ end
103
+ end
104
+
85
105
  context 'when a response document is passed' do
86
106
  let(:data) { CXML::Parser.new(data: fixture('response_status_200.xml')).parse }
87
107
  include_examples :document_has_mandatory_values
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.020/cXML.dtd">
3
+ <cXML xml:lang="en-US" payloadID="test-id" timestamp="2020-09-10T20:32:26+00:00">
4
+ <Response invalid="invalid">
5
+ <Status code="200" text="Ok">123456</Status>
6
+ </Response>
7
+ </cXML>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cxml-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Beckman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-12 00:00:00.000000000 Z
12
+ date: 2021-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ox
@@ -213,6 +213,7 @@ files:
213
213
  - spec/fixtures/1.2.020-InvoiceDetail.dtd
214
214
  - spec/fixtures/1.2.020-cXML.dtd
215
215
  - spec/fixtures/1.2.037-InvoiceDetail.dtd
216
+ - spec/fixtures/document_node_with_unknown_attribute.xml
216
217
  - spec/fixtures/envelope.xml
217
218
  - spec/fixtures/envelope2.xml
218
219
  - spec/fixtures/invoice_backed_and_unbacked_by_pos.xml
@@ -281,6 +282,7 @@ test_files:
281
282
  - spec/fixtures/1.2.020-InvoiceDetail.dtd
282
283
  - spec/fixtures/1.2.020-cXML.dtd
283
284
  - spec/fixtures/1.2.037-InvoiceDetail.dtd
285
+ - spec/fixtures/document_node_with_unknown_attribute.xml
284
286
  - spec/fixtures/envelope.xml
285
287
  - spec/fixtures/envelope2.xml
286
288
  - spec/fixtures/invoice_backed_and_unbacked_by_pos.xml