Skip to content

Commit

Permalink
♻ Refactors a URL test (subscriptions-project#992)
Browse files Browse the repository at this point in the history
* Refactors a URL test
  • Loading branch information
ChrisAntaki authored Feb 24, 2020
1 parent 0ef7718 commit 42a0493
Showing 1 changed file with 28 additions and 31 deletions.
59 changes: 28 additions & 31 deletions src/utils/url-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,8 @@ describe('addQueryParam', () => {

describe('serializeProtoMessageForUrl', () => {
it('should serialize message with experiments in array', () => {
const context = [
// Create an AnalyticsRequest, using arrays to represent the message and its submessages.
const analyticsContextArray = [
'AnalyticsContext',
'embed',
'tx',
Expand All @@ -277,37 +278,33 @@ describe('serializeProtoMessageForUrl', () => {
'version',
'baseUrl',
];
const meta = ['AnalyticsEventMeta', 1, true];
const params = ['EventParams', 'smartbox', 'gpay', false, 'sku'];
const inputArray = ['AnalyticsRequest', context, 11, meta, params];
const inputContext = new AnalyticsRequest(inputArray);
const outputStr = serializeProtoMessageForUrl(inputContext);
const outputArr = JSON.parse(outputStr);
// serialize removed the first element, add it back
outputArr.unshift('AnalyticsRequest');
outputArr[1].unshift('AnalyticsContext');
outputArr[3].unshift('AnalyticsEventMeta');
outputArr[4].unshift('EventParams');
const outputContext = new AnalyticsRequest(outputArr);
expect(outputArr).to.deep.equal(inputArray);

expect(outputContext).to.deep.equal(inputContext);

// reformat input array to the way we expect it to look after serialize
inputArray[1].shift();
inputArray[3].shift();
inputArray[4].shift();
inputArray.shift();

const expectedStr = JSON.stringify(inputArray);
expect(expectedStr).to.equal(outputStr);
const analyticsEventMetaArray = ['AnalyticsEventMeta', 1, true];
const eventParamsArray = ['EventParams', 'smartbox', 'gpay', false, 'sku'];
const analyticsRequestArray = [
'AnalyticsRequest',
analyticsContextArray,
11,
analyticsEventMetaArray,
eventParamsArray,
];
const analyticsRequest = new AnalyticsRequest(analyticsRequestArray);

const inputLabels = inputContext.getContext().getLabelList();
expect(inputLabels[0]).to.equal('exp1');
expect(inputLabels[1]).to.equal('exp2');
// Serialize and deserialize the AnalyticsRequest.
const serializedAnalyticsRequest = serializeProtoMessageForUrl(
analyticsRequest
);
const deserializedAnalyticsRequestArray = JSON.parse(
serializedAnalyticsRequest
);

const outputLabels = outputContext.getContext().getLabelList();
expect(outputLabels[0]).to.equal('exp1');
expect(outputLabels[1]).to.equal('exp2');
// Add back the labels that were removed during serialization.
// After doing so, the deserialized array should match the original array.
deserializedAnalyticsRequestArray.unshift('AnalyticsRequest');
deserializedAnalyticsRequestArray[1].unshift('AnalyticsContext');
deserializedAnalyticsRequestArray[3].unshift('AnalyticsEventMeta');
deserializedAnalyticsRequestArray[4].unshift('EventParams');
expect(deserializedAnalyticsRequestArray).to.deep.equal(
analyticsRequestArray
);
});
});

0 comments on commit 42a0493

Please sign in to comment.