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