cxml-ruby 0.6.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +5 -2
- data/CHANGELOG.md +16 -0
- data/lib/cxml/country_code.rb +9 -0
- data/lib/cxml/document_node.rb +10 -4
- data/lib/cxml/phone.rb +13 -0
- data/lib/cxml/punch_out_setup_request.rb +3 -2
- data/lib/cxml/telephone_number.rb +11 -0
- data/lib/cxml/version.rb +1 -1
- data/spec/document_spec.rb +20 -0
- data/spec/fixtures/document_node_with_unknown_attribute.xml +7 -0
- data/spec/fixtures/punch_out_setup_request_doc_with_ship_to.xml +7 -0
- data/spec/punch_out_setup_request_spec.rb +2 -0
- metadata +11 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25b2ba1b0156e96916f3f5aa7788d4b4c0d175452fa91e09b1cb8ad0c96f3c06
|
4
|
+
data.tar.gz: 73806c22df23149ca45e46250ecb5fc907ede4826dd7919d3ec922bdd93872cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbaed7a1c8af7c579c0f516422f085e802c3a7e582739dd99a476fc8eb45bea542cefc3b34920cadca1d72e74752d2a38cfc9981601d948167c8dbc050c7bbbb
|
7
|
+
data.tar.gz: f14c6e2f0c74c493cf2430daa9a90b948fc967c3268f72f0fd180f0eec0de7499baddaabc95ee417ef72552e33d3c4d75d3956437d7b2c797ad5e394310715d6
|
data/.github/workflows/ruby.yml
CHANGED
@@ -6,13 +6,16 @@ jobs:
|
|
6
6
|
build:
|
7
7
|
|
8
8
|
runs-on: ubuntu-latest
|
9
|
+
strategy:
|
10
|
+
matrix:
|
11
|
+
ruby: [ '2.6.x', '2.7.x', '3.0.x' ]
|
9
12
|
|
10
13
|
steps:
|
11
14
|
- uses: actions/checkout@v2
|
12
|
-
- name: Set up Ruby
|
15
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
13
16
|
uses: actions/setup-ruby@v1
|
14
17
|
with:
|
15
|
-
ruby-version:
|
18
|
+
ruby-version: ${{ matrix.ruby }}
|
16
19
|
- name: Test with Rake
|
17
20
|
run: |
|
18
21
|
sudo apt-get install libxml2-utils
|
data/CHANGELOG.md
CHANGED
@@ -14,6 +14,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
14
14
|
|
15
15
|
---
|
16
16
|
|
17
|
+
## [0.8.2] - 2021-12-21
|
18
|
+
### Fixed
|
19
|
+
- Add support for Ruby 3.x.x.
|
20
|
+
|
21
|
+
## [0.8.1] - 2021-05-24
|
22
|
+
### Fixed
|
23
|
+
- Reorder the attributes output for `PunchoutSetupRequest`.
|
24
|
+
|
25
|
+
## [0.8.0] - 2021-04-25
|
26
|
+
### Changed
|
27
|
+
- Support continued parsing of child nodes if unknown attribute is encountered with `raise_unknown_elements` set to `false`.
|
28
|
+
|
29
|
+
## [0.7.0] - 2021-01-12
|
30
|
+
### Added
|
31
|
+
- Support parsing Phone tags.
|
32
|
+
|
17
33
|
## [0.6.1] - 2020-09-04
|
18
34
|
### Fixed
|
19
35
|
- Handle parsing CDATA tags in cXML content (Thanks @CRiva!).
|
data/lib/cxml/document_node.rb
CHANGED
@@ -35,7 +35,7 @@ module CXML
|
|
35
35
|
data = data.serializable_hash if data.is_a?(self.class)
|
36
36
|
return unless data.is_a?(Hash)
|
37
37
|
|
38
|
-
data.each(
|
38
|
+
data.each { |arr| initialize_attribute(*arr) }
|
39
39
|
end
|
40
40
|
|
41
41
|
def serializable_hash
|
@@ -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
|
-
|
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/phone.rb
ADDED
data/lib/cxml/version.rb
CHANGED
data/spec/document_spec.rb
CHANGED
@@ -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>
|
@@ -39,6 +39,13 @@
|
|
39
39
|
<Country isoCountryCode="US">United States</Country>
|
40
40
|
</PostalAddress>
|
41
41
|
<Email name="default">jmadden@coupa1.com</Email>
|
42
|
+
<Phone name="work">
|
43
|
+
<TelephoneNumber>
|
44
|
+
<CountryCode isoCountryCode="US">1</CountryCode>
|
45
|
+
<AreaOrCityCode>855</AreaOrCityCode>
|
46
|
+
<Number>8671234</Number>
|
47
|
+
</TelephoneNumber>
|
48
|
+
</Phone>
|
42
49
|
</Address>
|
43
50
|
</ShipTo>
|
44
51
|
</PunchOutSetupRequest>
|
@@ -38,6 +38,8 @@ describe CXML::PunchOutSetupRequest do
|
|
38
38
|
doc = CXML::Document.new(data)
|
39
39
|
doc.request.punch_out_setup_request.ship_to.should_not be_nil
|
40
40
|
doc.request.punch_out_setup_request.ship_to.address.name.should_not be_nil
|
41
|
+
doc.request.punch_out_setup_request.ship_to.address.phone.should_not be_nil
|
42
|
+
doc.request.punch_out_setup_request.ship_to.address.phone.telephone_number.should_not be_nil
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Beckman
|
8
8
|
- Eleni Chappen
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-12-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ox
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- lib/cxml/confirmation_status.rb
|
116
116
|
- lib/cxml/contact.rb
|
117
117
|
- lib/cxml/country.rb
|
118
|
+
- lib/cxml/country_code.rb
|
118
119
|
- lib/cxml/credential.rb
|
119
120
|
- lib/cxml/credential_mac.rb
|
120
121
|
- lib/cxml/deducted_price.rb
|
@@ -170,6 +171,7 @@ files:
|
|
170
171
|
- lib/cxml/parser.rb
|
171
172
|
- lib/cxml/payment_term.rb
|
172
173
|
- lib/cxml/period.rb
|
174
|
+
- lib/cxml/phone.rb
|
173
175
|
- lib/cxml/postal_address.rb
|
174
176
|
- lib/cxml/protocol.rb
|
175
177
|
- lib/cxml/punch_out_order_message.rb
|
@@ -195,6 +197,7 @@ files:
|
|
195
197
|
- lib/cxml/tax_detail.rb
|
196
198
|
- lib/cxml/tax_location.rb
|
197
199
|
- lib/cxml/taxable_amount.rb
|
200
|
+
- lib/cxml/telephone_number.rb
|
198
201
|
- lib/cxml/to.rb
|
199
202
|
- lib/cxml/total.rb
|
200
203
|
- lib/cxml/total_allowances.rb
|
@@ -210,6 +213,7 @@ files:
|
|
210
213
|
- spec/fixtures/1.2.020-InvoiceDetail.dtd
|
211
214
|
- spec/fixtures/1.2.020-cXML.dtd
|
212
215
|
- spec/fixtures/1.2.037-InvoiceDetail.dtd
|
216
|
+
- spec/fixtures/document_node_with_unknown_attribute.xml
|
213
217
|
- spec/fixtures/envelope.xml
|
214
218
|
- spec/fixtures/envelope2.xml
|
215
219
|
- spec/fixtures/invoice_backed_and_unbacked_by_pos.xml
|
@@ -250,7 +254,7 @@ homepage: https://github.com/officeluv/cxml-ruby
|
|
250
254
|
licenses:
|
251
255
|
- MIT
|
252
256
|
metadata: {}
|
253
|
-
post_install_message:
|
257
|
+
post_install_message:
|
254
258
|
rdoc_options: []
|
255
259
|
require_paths:
|
256
260
|
- lib
|
@@ -265,52 +269,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
265
269
|
- !ruby/object:Gem::Version
|
266
270
|
version: '0'
|
267
271
|
requirements: []
|
268
|
-
rubygems_version: 3.
|
269
|
-
signing_key:
|
272
|
+
rubygems_version: 3.2.3
|
273
|
+
signing_key:
|
270
274
|
specification_version: 4
|
271
275
|
summary: Parse/generate documents with the cXML protocol
|
272
|
-
test_files:
|
273
|
-
- spec/credential_spec.rb
|
274
|
-
- spec/cxml_spec.rb
|
275
|
-
- spec/document_spec.rb
|
276
|
-
- spec/fixtures/.gitkeep
|
277
|
-
- spec/fixtures/1.2.014-cXML.dtd
|
278
|
-
- spec/fixtures/1.2.020-InvoiceDetail.dtd
|
279
|
-
- spec/fixtures/1.2.020-cXML.dtd
|
280
|
-
- spec/fixtures/1.2.037-InvoiceDetail.dtd
|
281
|
-
- spec/fixtures/envelope.xml
|
282
|
-
- spec/fixtures/envelope2.xml
|
283
|
-
- spec/fixtures/invoice_backed_and_unbacked_by_pos.xml
|
284
|
-
- spec/fixtures/invoice_backed_by_multiple_pos.xml
|
285
|
-
- spec/fixtures/invoice_taxes_at_line.xml
|
286
|
-
- spec/fixtures/invoice_taxes_at_line_multiple_taxes.xml
|
287
|
-
- spec/fixtures/invoice_taxes_at_total.xml
|
288
|
-
- spec/fixtures/item_in.xml
|
289
|
-
- spec/fixtures/order_request.xml
|
290
|
-
- spec/fixtures/punch_out_order_message_doc.xml
|
291
|
-
- spec/fixtures/punch_out_setup_request_doc.xml
|
292
|
-
- spec/fixtures/punch_out_setup_request_doc_coupa.xml
|
293
|
-
- spec/fixtures/punch_out_setup_request_doc_with_ship_to.xml
|
294
|
-
- spec/fixtures/purchase_order_request_200.xml
|
295
|
-
- spec/fixtures/request_doc.xml
|
296
|
-
- spec/fixtures/response_status_200.xml
|
297
|
-
- spec/fixtures/response_status_400.xml
|
298
|
-
- spec/header_spec.rb
|
299
|
-
- spec/invoice_detail_request_spec.rb
|
300
|
-
- spec/item_detail_spec.rb
|
301
|
-
- spec/item_id_spec.rb
|
302
|
-
- spec/item_in_spec.rb
|
303
|
-
- spec/money_spec.rb
|
304
|
-
- spec/output/.gitkeep
|
305
|
-
- spec/parser_spec.rb
|
306
|
-
- spec/protocol_spec.rb
|
307
|
-
- spec/punch_out_order_message_header_spec.rb
|
308
|
-
- spec/punch_out_order_message_spec.rb
|
309
|
-
- spec/punch_out_setup_request_spec.rb
|
310
|
-
- spec/purchase_order_request_spec.rb
|
311
|
-
- spec/request_spec.rb
|
312
|
-
- spec/response_spec.rb
|
313
|
-
- spec/sender_spec.rb
|
314
|
-
- spec/spec_helper.rb
|
315
|
-
- spec/status_spec.rb
|
316
|
-
- spec/support/helpers.rb
|
276
|
+
test_files: []
|