diff --git a/Gemfile.lock b/Gemfile.lock index 8d6f86b..216aa2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - dpd (0.4.1) + dpd (0.5.0) httpclient rack savon @@ -25,11 +25,11 @@ GEM date (3.4.1) diff-lcs (1.6.2) dotenv (3.1.8) - faraday (2.13.1) + faraday (2.14.0) faraday-net_http (>= 2.0, < 3.5) json logger - faraday-net_http (3.4.0) + faraday-net_http (3.4.1) net-http (>= 0.5.0) gyoku (1.4.0) builder (>= 2.1.2) @@ -42,7 +42,7 @@ GEM mutex_m nkf rack (>= 2.0, < 4) - json (2.12.0) + json (2.15.0) logger (1.7.0) mail (2.8.1) mini_mime (>= 0.1.1) @@ -51,11 +51,11 @@ GEM net-smtp method_source (1.1.0) mini_mime (1.1.5) - mini_portile2 (2.8.8) + mini_portile2 (2.8.9) mutex_m (0.3.0) net-http (0.6.0) uri - net-imap (0.5.8) + net-imap (0.5.10) date net-protocol net-pop (0.1.2) @@ -65,7 +65,7 @@ GEM net-smtp (0.5.1) net-protocol nkf (0.2.0) - nokogiri (1.18.8) + nokogiri (1.18.10) mini_portile2 (~> 2.8.2) racc (~> 1.4) nori (2.7.1) @@ -75,7 +75,7 @@ GEM method_source (~> 1.0) public_suffix (6.0.2) racc (1.8.1) - rack (3.1.14) + rack (3.2.1) rake (13.2.1) rexml (3.4.1) rspec (3.13.0) diff --git a/lib/dpd_api/version.rb b/lib/dpd_api/version.rb index 8a5c102..8ba0d9b 100644 --- a/lib/dpd_api/version.rb +++ b/lib/dpd_api/version.rb @@ -1,3 +1,3 @@ module DPDApi - VERSION = "0.4.1" + VERSION = "0.5.0" end diff --git a/lib/xml/store_orders.xml.erb b/lib/xml/store_orders.xml.erb index db0b95f..64e310c 100644 --- a/lib/xml/store_orders.xml.erb +++ b/lib/xml/store_orders.xml.erb @@ -53,9 +53,11 @@ <%= weight %> - <%= add_service %> - <%= message_number %> - <%= parcel_parameter %> + <% if include_safeplace %> + <%= add_service %> + <%= message_number %> + <%= parcel_parameter %> + <% end %> <%= order_type %> diff --git a/spec/dpd_api/xml_builder_spec.rb b/spec/dpd_api/xml_builder_spec.rb new file mode 100644 index 0000000..4423c2d --- /dev/null +++ b/spec/dpd_api/xml_builder_spec.rb @@ -0,0 +1,67 @@ +require 'spec_helper' + +describe DPDApi::XMLBuilder do + let(:xml_attrs) do + DPDApi::Requests::StoreOrders.new({ + username: "username", + password: "password", + token: "token", + depot: "0998", + sequence_number: 1, + delivery_on: Date.parse("2018-08-14"), + include_safeplace: include_safeplace, + shipper_address: { + name1: "Hans", + street_name: "Burgerstr.", + street_number: "123", + country: "DE", + zip_code: "10115", + city: "Hamburger", + email: "shipper@email.dev", + }, + recipient_address: { + name1: "Helga", + street_name: "Currywurstr.", + street_number: "123", + contact: "2nd Floor Room 123", + country: "DE", + zip_code: "10115", + city: "Currywurst", + customer_reference: "Leave with receptionist", + customer_reference_2: "", + comment: "Safeplace note" + } + }).xml_attributes + end + let(:builder) { described_class.new(:store_orders, xml_attrs) } + + before do + DPDApi::Client.configure do |config| + config.username = "username" + config.password = "password" + config.sandbox = true + end + + allow(builder).to receive(:build).and_call_original + end + + context "when include_safeplace is true" do + let(:include_safeplace) { true } + + it "includes safeplace settings" do + expect(builder.build).to include("3") + expect(builder.build).to include("14") + expect(builder.build).to include("Safeplace note") + end + end + + context "when include_safeplace is false" do + let(:include_safeplace) { false } + + it "excludes safeplace settings" do + expect(builder.build).not_to include("3") + expect(builder.build).not_to include("14") + expect(builder.build).not_to include("Safeplace note") + end + end +end