Skip to content

Commit cd4b83f

Browse files
authored
Merge pull request #1431 from blackflux/dev
[Gally]: master <- dev
2 parents 80dfb20 + 07f3ccd commit cd4b83f

File tree

3 files changed

+18
-21
lines changed

3 files changed

+18
-21
lines changed

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@
7878
"joi-strict": "3.0.1",
7979
"lodash.clonedeep": "4.5.0",
8080
"lodash.get": "4.4.2",
81-
"lodash.isequal": "4.5.0",
8281
"lru-cache-ext": "4.0.0",
8382
"minimist": "1.2.8",
8483
"nock": "13.5.4",

src/modules/request-recorder.js

+6-10
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import Joi from 'joi-strict';
66
import nock from 'nock';
77
import get from 'lodash.get';
88
import cloneDeep from 'lodash.clonedeep';
9-
import isEqual from 'lodash.isequal';
109
import nockCommon from 'nock/lib/common.js';
1110
import compareUrls from '../util/compare-urls.js';
1211
import nockListener from './request-recorder/nock-listener.js';
@@ -22,7 +21,7 @@ import {
2221
convertHeaders,
2322
rewriteHeaders
2423
} from './request-recorder/util.js';
25-
import healBody from './request-recorder/heal-body.js';
24+
import updateAndRestoreModifiers from './request-recorder/update-and-restore-modifiers.js';
2625

2726
const nockBack = nock.back;
2827
const nockRecorder = nock.recorder;
@@ -180,9 +179,7 @@ export default (opts) => {
180179
if (anyFlagPresent(['magic', 'body'])) {
181180
const idx = pendingMocks.findIndex((m) => m.idx === scopeIdx);
182181
const requestBody = nullAsString(tryParseJson(body));
183-
if (!isEqual(scope.body, requestBody)) {
184-
pendingMocks[idx].record.body = healBody(pendingMocks[idx].record.body, scope.body, requestBody);
185-
}
182+
updateAndRestoreModifiers(pendingMocks[idx].record, 'body', scope.body, requestBody);
186183
return scope.body;
187184
}
188185
return body;
@@ -237,17 +234,16 @@ export default (opts) => {
237234
}
238235

239236
if (anyFlagPresent(['magic', 'response'])) {
237+
const interceptorBody = tryParseJson(interceptor.body);
240238
const responseBody = tryParseJson([
241239
healSqs
242240
].reduce(
243241
(respBody, fn) => fn(requestBodyString, respBody, scope, req),
244242
interceptor.body
245243
));
246-
if (!isEqual(interceptor.body, responseBody)) {
247-
// eslint-disable-next-line no-param-reassign
248-
interceptor.body = responseBody;
249-
pendingMocks[idx].record.response = responseBody;
250-
}
244+
updateAndRestoreModifiers(pendingMocks[idx].record, 'response', interceptorBody, responseBody);
245+
// eslint-disable-next-line no-param-reassign
246+
interceptor.body = responseBody;
251247
}
252248

253249
expectedCassette.push(pendingMocks[idx].record);
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import objectScan from 'object-scan';
22
import cloneDeep from 'lodash.clonedeep';
33

4-
const healer = objectScan(['**.*|*'], {
4+
const restorer = objectScan(['**.*|*'], {
55
breakFn: ({
66
isMatch, depth, property, context
77
}) => {
8-
if (property === undefined) {
8+
if (depth === 0) {
99
return false;
1010
}
1111
context.expected[depth] = context.expected[depth - 1]?.[property];
1212
context.actual[depth] = context.actual[depth - 1]?.[property];
13-
return isMatch;
13+
return isMatch || (depth === 1 && property !== context.field);
1414
},
1515
filterFn: ({
1616
context, depth, property, value
@@ -28,10 +28,12 @@ const healer = objectScan(['**.*|*'], {
2828
afterFn: ({ context }) => context.actual[0]
2929
});
3030

31-
export default (original, expected, actual) => healer(
32-
original,
33-
{
34-
expected: [expected],
35-
actual: [cloneDeep(actual)]
36-
}
37-
);
31+
export default (original, field, expected, actual) => {
32+
const context = {
33+
expected: [{ [field]: expected }],
34+
actual: [{ [field]: cloneDeep(actual) }],
35+
field
36+
};
37+
const restored = restorer(original, context);
38+
Object.assign(original, restored);
39+
};

0 commit comments

Comments
 (0)