Skip to content

Commit 6d01e19

Browse files
coledaveDave Cole
andauthored
PB-1244 use empty string instead of null when name is not specified (#13)
Co-authored-by: Dave Cole <dave@pennyblack.io>
1 parent 2bc2412 commit 6d01e19

2 files changed

Lines changed: 31 additions & 4 deletions

File tree

cartridges/int_pennyblack/cartridge/scripts/pennyblack/OrderToPayloadTransformer.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,19 @@ OrderToPayloadTransformer.prototype._buildCustomerData = function () {
2929
customer.tags = this._getCustomerGroups();
3030
customer.total_spent = totalSpent;
3131

32+
var first_name, last_name;
33+
3234
if (this._order.defaultShipment.shippingAddress) {
33-
customer.first_name = this._order.defaultShipment.shippingAddress.firstName;
34-
customer.last_name = this._order.defaultShipment.shippingAddress.lastName;
35+
first_name = this._order.defaultShipment.shippingAddress.firstName;
36+
last_name = this._order.defaultShipment.shippingAddress.lastName;
3537
} else {
36-
customer.first_name = this._order.billingAddress.firstName;
37-
customer.last_name = this._order.billingAddress.lastName;
38+
first_name = this._order.billingAddress.firstName;
39+
last_name = this._order.billingAddress.lastName;
3840
}
3941

42+
customer.first_name = first_name !== null && typeof first_name === 'string' ? first_name : '';
43+
customer.last_name = last_name !== null && typeof last_name === 'string' ? last_name : '';
44+
4045
var locale = Locale.getLocale(this._order.customerLocaleID);
4146
var language = locale ? locale.language : null;
4247

test/unit/OrderToPayloadTransformer.spec.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,28 @@ describe('OrderToPayloadTransformer', function () {
246246
let payload = new OrderToPayloadTransformer().transform(new Order(data));
247247
expect('promo_codes' in payload.order).to.eq(false);
248248
});
249+
250+
it('uses empty string for name when shipping address name is null', function () {
251+
let data = DataLoader('order', 'guestWithNoHistory');
252+
data.defaultShipment.shippingAddress.firstName = null;
253+
data.defaultShipment.shippingAddress.lastName = null;
254+
let payload = new OrderToPayloadTransformer().transform(new Order(data));
255+
expect(payload.customer.first_name).to.eq('');
256+
expect(typeof payload.customer.first_name).to.eq('string');
257+
expect(payload.customer.last_name).to.eq('');
258+
expect(typeof payload.customer.last_name).to.eq('string');
259+
});
260+
261+
it('uses empty string for name when billing address name is null', function () {
262+
let data = DataLoader('order', 'guestWithNoShippingAddress');
263+
data.billingAddress.firstName = null;
264+
data.billingAddress.lastName = null;
265+
let payload = new OrderToPayloadTransformer().transform(new Order(data));
266+
expect(payload.customer.first_name).to.eq('');
267+
expect(typeof payload.customer.first_name).to.eq('string');
268+
expect(payload.customer.last_name).to.eq('');
269+
expect(typeof payload.customer.last_name).to.eq('string');
270+
});
249271
});
250272

251273
describe('guest with previous orders', function () {

0 commit comments

Comments
 (0)