Skip to content

Commit

Permalink
[#39] null as forced default value
Browse files Browse the repository at this point in the history
[#39] null as forced default value

[#39] null as forced default value
  • Loading branch information
nagarajanchinnasamy committed Sep 25, 2017
1 parent 291a524 commit 50ae568
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/object-mapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ function _map(fromObject, toObject, propertyMap, propertyKeys) {
function _mapKey(fromObject, fromKey, toObject, toKey) {
var fromValue
, restToKeys
, _default = null
, _default // = null
, transform
;

Expand All @@ -87,14 +87,14 @@ function _mapKey(fromObject, fromKey, toObject, toKey) {
}

if (toKey instanceof Object && Object.getPrototypeOf(toKey) === Object.prototype) {
_default = toKey.default || null;
_default = toKey.default; // || null;
transform = toKey.transform;
toKey = toKey.key;
}

if (Array.isArray(toKey)) {
transform = toKey[1];
_default = toKey[2] || null;
_default = toKey[2]; // || null;
toKey = toKey[0];
}

Expand All @@ -103,7 +103,7 @@ function _mapKey(fromObject, fromKey, toObject, toKey) {
}

fromValue = getKeyValue(fromObject, fromKey);
if (typeof fromValue === 'undefined' || fromValue === null) {
if (typeof fromValue === 'undefined') { // || fromValue === null) {
fromValue = _default;
}

Expand Down
56 changes: 56 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1653,6 +1653,8 @@ test('original various tests', function (t) {
t.deepEqual(result, expected, 'override sku');

obj["inventory"] = null;
map["inventory.onHandQty"] = {key: ["Envelope.Request.Item.Inventory?", null, null]};
map["inventory.replenishQty"] = {key: ["Envelope.Request.Item.RelpenishQuantity?", null, null]};
expected.Envelope.Request.Item.Inventory = null;

result = merge(obj, {}, map);
Expand Down Expand Up @@ -1718,3 +1720,57 @@ test('map array inside array to property', function (t) {
t.deepEqual(result, expect);
t.end();
});

test('do not map when a property not present in source and default is not given in map', function (t) {
var expect = {
mapThis: 'defaultVal',
mapThisToo: [ {
property: 'defaultVal',
subArray: [ { property: null } ]
} ],
other: 'otherVal'
};

var map = {
"doNotMapThis": {
"key": "doNotMapThis",
"transform": function(val) {
return "_" + val;
}
},
"doNotMapThisToo[].property": {
"key": "doNotMapThisToo[].property",
"transform": function(val) {
return "_" + val;
}
},
"doNotMapThisToo[].subArray[].property": {
"key": "doNotMapThisToo[].subArray[].property",
"transform": function(val) {
return "_" + val;
}
},
"mapThis": {
"key": "mapThis",
"default": "defaultVal"
},
"mapThisToo[].property": {
"key": "mapThisToo[].property",
"default": "defaultVal"
},
"mapThisToo[].subArray[].property": {
"key": "mapThisToo[].subArray[].property?",
"default": null
},
"other": "other"
};

var obj = {
"other": "otherVal"
};

var result = om(obj, map);

t.deepEqual(result, expect);
t.end();
});

0 comments on commit 50ae568

Please sign in to comment.