From 7776fd7498f161643d1308fdbbc88e5e50e28569 Mon Sep 17 00:00:00 2001 From: CD Cabrera Date: Thu, 23 Jun 2022 22:45:32 -0400 Subject: [PATCH] fix(rhsmTransformers): ent-5121 hide graph future dates (#948) --- .../rhsmTransformers.test.js.snap | 192 ++++++++++++++++++ .../rhsm/__tests__/rhsmTransformers.test.js | 125 +++++++++++- src/services/rhsm/rhsmTransformers.js | 23 ++- 3 files changed, 330 insertions(+), 10 deletions(-) diff --git a/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap b/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap index 520055d4c..5a7d17bc7 100644 --- a/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap +++ b/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap @@ -15,6 +15,198 @@ Object { } `; +exports[`RHSM Transformers should attempt to parse a tally response: tally, daily like granularity 1`] = ` +Object { + "data": Array [ + Object { + "date": "2019-07-14T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": false, + "x": 0, + "y": 0, + }, + Object { + "date": "2019-07-15T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": false, + "x": 1, + "y": 0, + }, + Object { + "date": "2019-07-16T00:00:00Z", + "hasData": true, + "isCurrentDate": false, + "isFutureDate": false, + "x": 2, + "y": 1.4977989514668784, + }, + Object { + "date": "2019-07-17T00:00:00Z", + "hasData": true, + "isCurrentDate": false, + "isFutureDate": false, + "x": 3, + "y": 1.5547887908087836, + }, + Object { + "date": "2019-07-18T00:00:00Z", + "hasData": true, + "isCurrentDate": false, + "isFutureDate": false, + "x": 4, + "y": 4.446975872251722, + }, + Object { + "date": "2019-07-19T00:00:00Z", + "hasData": true, + "isCurrentDate": false, + "isFutureDate": false, + "x": 5, + "y": 4.69084013303121, + }, + Object { + "date": "2019-07-20T00:00:00Z", + "hasData": false, + "isCurrentDate": true, + "isFutureDate": false, + "x": 6, + "y": null, + }, + Object { + "date": "2019-07-21T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": true, + "x": 7, + "y": null, + }, + Object { + "date": "2019-07-22T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": true, + "x": 8, + "y": null, + }, + Object { + "date": "2019-07-23T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": true, + "x": 9, + "y": null, + }, + Object { + "date": "2019-07-24T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": true, + "x": 10, + "y": null, + }, + Object { + "date": "2019-07-25T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": true, + "x": 11, + "y": null, + }, + ], + "meta": Object { + "cloudigradeHasMismatch": undefined, + "count": undefined, + "metricId": undefined, + "productId": undefined, + "totalMonthlyDate": undefined, + "totalMonthlyHasData": undefined, + "totalMonthlyValue": undefined, + }, +} +`; + +exports[`RHSM Transformers should attempt to parse a tally response: tally, monthly like granularity 1`] = ` +Object { + "data": Array [ + Object { + "date": "2019-01-01T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": false, + "x": 0, + "y": 0, + }, + Object { + "date": "2019-02-01T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": false, + "x": 1, + "y": 0, + }, + Object { + "date": "2019-03-01T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": false, + "x": 2, + "y": 0, + }, + Object { + "date": "2019-04-01T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": false, + "x": 3, + "y": 0, + }, + Object { + "date": "2019-05-01T00:00:00Z", + "hasData": true, + "isCurrentDate": false, + "isFutureDate": false, + "x": 4, + "y": 4.767144674723709, + }, + Object { + "date": "2019-06-01T00:00:00Z", + "hasData": true, + "isCurrentDate": false, + "isFutureDate": false, + "x": 5, + "y": 4.446975872251722, + }, + Object { + "date": "2019-07-01T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": false, + "x": 6, + "y": 0, + }, + Object { + "date": "2019-08-01T00:00:00Z", + "hasData": false, + "isCurrentDate": false, + "isFutureDate": true, + "x": 7, + "y": null, + }, + ], + "meta": Object { + "cloudigradeHasMismatch": undefined, + "count": undefined, + "metricId": undefined, + "productId": undefined, + "totalMonthlyDate": undefined, + "totalMonthlyHasData": undefined, + "totalMonthlyValue": undefined, + }, +} +`; + exports[`RHSM Transformers should attempt to parse an instances response: instances 1`] = ` Object { "data": Array [ diff --git a/src/services/rhsm/__tests__/rhsmTransformers.test.js b/src/services/rhsm/__tests__/rhsmTransformers.test.js index 5bf349350..4faea8401 100644 --- a/src/services/rhsm/__tests__/rhsmTransformers.test.js +++ b/src/services/rhsm/__tests__/rhsmTransformers.test.js @@ -1,5 +1,5 @@ import { rhsmTransformers } from '../rhsmTransformers'; -import { rhsmConstants } from '../rhsmConstants'; +import { rhsmConstants, RHSM_API_RESPONSE_TALLY_DATA_TYPES as TALLY_DATA_TYPES } from '../rhsmConstants'; describe('RHSM Transformers', () => { it('should have specific response transformers', () => { @@ -22,6 +22,127 @@ describe('RHSM Transformers', () => { }); it('should attempt to parse a tally response', () => { - expect(rhsmTransformers.tally()).toMatchSnapshot('tally'); + const baseTallyResponse = { + [rhsmConstants.RHSM_API_RESPONSE_DATA]: [], + [rhsmConstants.RHSM_API_RESPONSE_META]: {} + }; + + expect(rhsmTransformers.tally(baseTallyResponse)).toMatchSnapshot('tally'); + + const dailyTallyResponse = { + [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ + { + [TALLY_DATA_TYPES.DATE]: '2019-07-14T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-15T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-16T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 1.4977989514668784, + [TALLY_DATA_TYPES.HAS_DATA]: true + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-17T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 1.5547887908087836, + [TALLY_DATA_TYPES.HAS_DATA]: true + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-18T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 4.446975872251722, + [TALLY_DATA_TYPES.HAS_DATA]: true + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-19T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 4.69084013303121, + [TALLY_DATA_TYPES.HAS_DATA]: true + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + } + ], + [rhsmConstants.RHSM_API_RESPONSE_META]: {} + }; + + expect(rhsmTransformers.tally(dailyTallyResponse)).toMatchSnapshot('tally, daily like granularity'); + + const monthlyTallyResponse = { + [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ + { + [TALLY_DATA_TYPES.DATE]: '2019-01-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-02-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-03-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-04-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-05-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 4.767144674723709, + [TALLY_DATA_TYPES.HAS_DATA]: true + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-06-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 4.446975872251722, + [TALLY_DATA_TYPES.HAS_DATA]: true + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-07-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + }, + { + [TALLY_DATA_TYPES.DATE]: '2019-08-01T00:00:00Z', + [TALLY_DATA_TYPES.VALUE]: 0.0, + [TALLY_DATA_TYPES.HAS_DATA]: false + } + ], + [rhsmConstants.RHSM_API_RESPONSE_META]: {} + }; + + expect(rhsmTransformers.tally(monthlyTallyResponse)).toMatchSnapshot('tally, monthly like granularity'); }); }); diff --git a/src/services/rhsm/rhsmTransformers.js b/src/services/rhsm/rhsmTransformers.js index a4658a177..f682a955d 100644 --- a/src/services/rhsm/rhsmTransformers.js +++ b/src/services/rhsm/rhsmTransformers.js @@ -62,19 +62,26 @@ const rhsmTally = response => { const updatedResponse = {}; const { [rhsmConstants.RHSM_API_RESPONSE_DATA]: data = [], [rhsmConstants.RHSM_API_RESPONSE_META]: meta = {} } = response || {}; - const currentDay = moment.utc(dateHelpers.getCurrentDate()).format('MM-D-YYYY'); + const currentDate = moment.utc(dateHelpers.getCurrentDate()).format('MM-D-YYYY'); updatedResponse.data = data.map( ( { [TALLY_DATA_TYPES.DATE]: date, [TALLY_DATA_TYPES.VALUE]: value, [TALLY_DATA_TYPES.HAS_DATA]: hasData }, index - ) => ({ - x: index, - y: value, - date, - hasData, - isCurrentDate: moment.utc(date).format('MM-D-YYYY') === currentDay - }) + ) => { + const updatedDate = moment.utc(date); + const isCurrentDate = updatedDate.format('MM-D-YYYY') === currentDate; + const isFutureDate = updatedDate.diff(currentDate) > 0; + + return { + x: index, + y: (hasData === false && isFutureDate) || (hasData === false && isCurrentDate) ? null : value, + date, + hasData, + isCurrentDate, + isFutureDate + }; + } ); updatedResponse.meta = {