From a270ab4b317b4b5c9c16ed4d636879bacfa7028b Mon Sep 17 00:00:00 2001 From: Darshan Parmar Date: Tue, 20 Aug 2024 17:58:21 +0530 Subject: [PATCH 1/2] MOB-9081: Written automated unit tests for different field types and comparator types --- ...aTypeComparatorSearchQueryCriteria.test.ts | 1088 +++++++++++++++++ 1 file changed, 1088 insertions(+) create mode 100644 src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts diff --git a/src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts b/src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts new file mode 100644 index 00000000..0e1fa2c1 --- /dev/null +++ b/src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts @@ -0,0 +1,1088 @@ +import { SHARED_PREFS_EVENT_LIST_KEY } from '../../constants'; +import CriteriaCompletionChecker from '../criteriaCompletionChecker'; + +const localStorageMock = { + getItem: jest.fn(), + setItem: jest.fn(), + removeItem: jest.fn() +}; + +describe('dataTypeComparatorSearchQueryCriteria', () => { + beforeEach(() => { + (global as any).localStorage = localStorageMock; + }); + + it('should return criteriaId 285 (Comparator test For Equal)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 19.99, + likes_boba: true, + country: 'Chaina', + eventTimeStamp: 3 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'Equals', + value: '3', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'Equals', + value: '19.99', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'likes_boba', + comparatorType: 'Equals', + value: 'true', + fieldType: 'boolean' + }, + { + dataType: 'user', + field: 'country', + comparatorType: 'Equals', + value: 'Chaina', + fieldType: 'String' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual('285'); + }); + + it('should return null (Comparator test For Equal - No Match)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 10.99, + eventTimeStamp: 30, + likes_boba: false, + country: 'Taiwan' + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'Equals', + value: '3', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'Equals', + value: '19.99', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'likes_boba', + comparatorType: 'Equals', + value: 'true', + fieldType: 'boolean' + }, + { + dataType: 'user', + field: 'country', + comparatorType: 'Equals', + value: 'Chaina', + fieldType: 'String' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual(null); + }); + + it('should return criteriaId 285 (Comparator test For DoesNotEqual)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 11.2, + eventTimeStamp: 30, + likes_boba: false + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'DoesNotEqual', + value: '3', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'DoesNotEqual', + value: '19.99', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'likes_boba', + comparatorType: 'DoesNotEqual', + value: 'true', + fieldType: 'boolean' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual('285'); + }); + + it('should return null (Comparator test For DoesNotEqual - No Match)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 10.99, + eventTimeStamp: 30, + likes_boba: true + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'DoesNotEqual', + value: '3', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'DoesNotEqual', + value: '19.99', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'likes_boba', + comparatorType: 'DoesNotEqual', + value: 'true', + fieldType: 'boolean' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual(null); + }); + + it('should return criteriaId 289 (Comparator test For LessThan)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 10, + eventTimeStamp: 14 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '289', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'LessThan', + value: '15', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'LessThan', + value: '15', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual('289'); + }); + + it('should return null (Comparator test For LessThan - No Match)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 10, + eventTimeStamp: 18 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '289', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'LessThan', + value: '15', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'LessThan', + value: '15', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual(null); + }); + + it('should return criteriaId 290 (Comparator test For LessThanOrEqualTo)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 17, + eventTimeStamp: 14 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '290', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'LessThanOrEqualTo', + value: '17', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'LessThanOrEqualTo', + value: '17', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual('290'); + }); + + it('should return null (Comparator test For LessThanOrEqualTo - No Match)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 18, + eventTimeStamp: 12 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '290', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'LessThanOrEqualTo', + value: '17', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'LessThanOrEqualTo', + value: '17', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual(null); + }); + + it('should return criteriaId 290 (Comparator test For GreaterThan)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 56, + eventTimeStamp: 51 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '290', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'GreaterThan', + value: '50', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'GreaterThan', + value: '55', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual('290'); + }); + + it('should return null (Comparator test For GreaterThan - No Match)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 5, + eventTimeStamp: 3 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '290', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'GreaterThan', + value: '50', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'GreaterThan', + value: '55', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual(null); + }); + + it('should return criteriaId 291 (Comparator test For GreaterThanOrEqualTo)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 20, + eventTimeStamp: 30 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '291', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'GreaterThanOrEqualTo', + value: '20', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'GreaterThanOrEqualTo', + value: '20', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual('291'); + }); + + it('should return null (Comparator test For GreaterThanOrEqualTo - No Match)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 18, + eventTimeStamp: 16 + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '291', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'GreaterThanOrEqualTo', + value: '20', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'GreaterThanOrEqualTo', + value: '20', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual(null); + }); + + it('should return criteriaId 285 (Comparator test For IsSet)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: 10, + eventTimeStamp: 20, + saved_cars: '10', + country: 'Taiwan' + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'IsSet', + value: '', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'saved_cars', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'country', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual('285'); + }); + + it('should return criteriaId 285 (Comparator test For IsSet - No Match)', () => { + (localStorage.getItem as jest.Mock).mockImplementation((key) => { + if (key === SHARED_PREFS_EVENT_LIST_KEY) { + return JSON.stringify([ + { + dataFields: { + savings: '', + eventTimeStamp: '', + saved_cars: 'd', + country: '' + }, + eventType: 'user' + } + ]); + } + return null; + }); + + const localStoredEventList = localStorage.getItem( + SHARED_PREFS_EVENT_LIST_KEY + ); + + const checker = new CriteriaCompletionChecker( + localStoredEventList === null ? '' : localStoredEventList + ); + const result = checker.getMatchedCriteria( + JSON.stringify({ + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'IsSet', + value: '', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'saved_cars', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'country', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] + }) + ); + expect(result).toEqual(null); + }); +}); From a6e1c70c2bd976156a66c558562f8cdaeb5a2660 Mon Sep 17 00:00:00 2001 From: Darshan Parmar Date: Thu, 29 Aug 2024 18:41:31 +0530 Subject: [PATCH 2/2] made criterias to be re-usable --- src/anonymousUserTracking/tests/constants.ts | 342 +++++++++ ...aTypeComparatorSearchQueryCriteria.test.ts | 695 +----------------- 2 files changed, 365 insertions(+), 672 deletions(-) create mode 100644 src/anonymousUserTracking/tests/constants.ts diff --git a/src/anonymousUserTracking/tests/constants.ts b/src/anonymousUserTracking/tests/constants.ts new file mode 100644 index 00000000..07907f65 --- /dev/null +++ b/src/anonymousUserTracking/tests/constants.ts @@ -0,0 +1,342 @@ +export const DATA_TYPE_COMPARATOR_EQUALS = { + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'Equals', + value: '3', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'Equals', + value: '19.99', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'likes_boba', + comparatorType: 'Equals', + value: 'true', + fieldType: 'boolean' + }, + { + dataType: 'user', + field: 'country', + comparatorType: 'Equals', + value: 'Chaina', + fieldType: 'String' + } + ] + } + } + ] + } + ] + } + } + ] +}; + +export const DATA_TYPE_COMPARATOR_DOES_NOT_EQUAL = { + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'DoesNotEqual', + value: '3', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'DoesNotEqual', + value: '19.99', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'likes_boba', + comparatorType: 'DoesNotEqual', + value: 'true', + fieldType: 'boolean' + } + ] + } + } + ] + } + ] + } + } + ] +}; + +export const DATA_TYPE_COMPARATOR_LESS_THAN = { + count: 1, + criterias: [ + { + criteriaId: '289', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'LessThan', + value: '15', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'LessThan', + value: '15', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] +}; + +export const DATA_TYPE_COMPARATOR_LESS_THAN_OR_EQUAL_TO = { + count: 1, + criterias: [ + { + criteriaId: '290', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'LessThanOrEqualTo', + value: '17', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'LessThanOrEqualTo', + value: '17', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] +}; + +export const DATA_TYPE_COMPARATOR_GREATER_THAN = { + count: 1, + criterias: [ + { + criteriaId: '290', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'GreaterThan', + value: '50', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'GreaterThan', + value: '55', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] +}; + +export const DATA_TYPE_COMPARATOR_GREATER_THAN_OR_EQUAL_TO = { + count: 1, + criterias: [ + { + criteriaId: '291', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'GreaterThanOrEqualTo', + value: '20', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'GreaterThanOrEqualTo', + value: '20', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] +}; + +export const DATA_TYPE_COMPARATOR_IS_SET = { + count: 1, + criterias: [ + { + criteriaId: '285', + name: 'Criteria_EventTimeStamp_3_Long', + createdAt: 1722497422151, + updatedAt: 1722500235276, + searchQuery: { + combinator: 'And', + searchQueries: [ + { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + searchCombo: { + combinator: 'And', + searchQueries: [ + { + dataType: 'user', + field: 'eventTimeStamp', + comparatorType: 'IsSet', + value: '', + fieldType: 'long' + }, + { + dataType: 'user', + field: 'savings', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'saved_cars', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + }, + { + dataType: 'user', + field: 'country', + comparatorType: 'IsSet', + value: '', + fieldType: 'double' + } + ] + } + } + ] + } + ] + } + } + ] +}; diff --git a/src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts b/src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts index 0e1fa2c1..e75cf9f4 100644 --- a/src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts +++ b/src/anonymousUserTracking/tests/dataTypeComparatorSearchQueryCriteria.test.ts @@ -1,5 +1,14 @@ import { SHARED_PREFS_EVENT_LIST_KEY } from '../../constants'; import CriteriaCompletionChecker from '../criteriaCompletionChecker'; +import { + DATA_TYPE_COMPARATOR_DOES_NOT_EQUAL, + DATA_TYPE_COMPARATOR_EQUALS, + DATA_TYPE_COMPARATOR_GREATER_THAN, + DATA_TYPE_COMPARATOR_GREATER_THAN_OR_EQUAL_TO, + DATA_TYPE_COMPARATOR_IS_SET, + DATA_TYPE_COMPARATOR_LESS_THAN, + DATA_TYPE_COMPARATOR_LESS_THAN_OR_EQUAL_TO +} from './constants'; const localStorageMock = { getItem: jest.fn(), @@ -38,63 +47,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '285', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'Equals', - value: '3', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'Equals', - value: '19.99', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'likes_boba', - comparatorType: 'Equals', - value: 'true', - fieldType: 'boolean' - }, - { - dataType: 'user', - field: 'country', - comparatorType: 'Equals', - value: 'Chaina', - fieldType: 'String' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_EQUALS) ); expect(result).toEqual('285'); }); @@ -125,63 +78,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '285', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'Equals', - value: '3', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'Equals', - value: '19.99', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'likes_boba', - comparatorType: 'Equals', - value: 'true', - fieldType: 'boolean' - }, - { - dataType: 'user', - field: 'country', - comparatorType: 'Equals', - value: 'Chaina', - fieldType: 'String' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_EQUALS) ); expect(result).toEqual(null); }); @@ -211,56 +108,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '285', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'DoesNotEqual', - value: '3', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'DoesNotEqual', - value: '19.99', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'likes_boba', - comparatorType: 'DoesNotEqual', - value: 'true', - fieldType: 'boolean' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_DOES_NOT_EQUAL) ); expect(result).toEqual('285'); }); @@ -290,56 +138,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '285', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'DoesNotEqual', - value: '3', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'DoesNotEqual', - value: '19.99', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'likes_boba', - comparatorType: 'DoesNotEqual', - value: 'true', - fieldType: 'boolean' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_DOES_NOT_EQUAL) ); expect(result).toEqual(null); }); @@ -368,49 +167,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '289', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'LessThan', - value: '15', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'LessThan', - value: '15', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_LESS_THAN) ); expect(result).toEqual('289'); }); @@ -439,49 +196,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '289', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'LessThan', - value: '15', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'LessThan', - value: '15', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_LESS_THAN) ); expect(result).toEqual(null); }); @@ -510,49 +225,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '290', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'LessThanOrEqualTo', - value: '17', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'LessThanOrEqualTo', - value: '17', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_LESS_THAN_OR_EQUAL_TO) ); expect(result).toEqual('290'); }); @@ -581,49 +254,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '290', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'LessThanOrEqualTo', - value: '17', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'LessThanOrEqualTo', - value: '17', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_LESS_THAN_OR_EQUAL_TO) ); expect(result).toEqual(null); }); @@ -652,49 +283,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '290', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'GreaterThan', - value: '50', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'GreaterThan', - value: '55', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_GREATER_THAN) ); expect(result).toEqual('290'); }); @@ -723,49 +312,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '290', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'GreaterThan', - value: '50', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'GreaterThan', - value: '55', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_GREATER_THAN) ); expect(result).toEqual(null); }); @@ -794,49 +341,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '291', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'GreaterThanOrEqualTo', - value: '20', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'GreaterThanOrEqualTo', - value: '20', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_GREATER_THAN_OR_EQUAL_TO) ); expect(result).toEqual('291'); }); @@ -865,49 +370,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '291', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'GreaterThanOrEqualTo', - value: '20', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'GreaterThanOrEqualTo', - value: '20', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_GREATER_THAN_OR_EQUAL_TO) ); expect(result).toEqual(null); }); @@ -938,63 +401,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '285', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'IsSet', - value: '', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'IsSet', - value: '', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'saved_cars', - comparatorType: 'IsSet', - value: '', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'country', - comparatorType: 'IsSet', - value: '', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_IS_SET) ); expect(result).toEqual('285'); }); @@ -1025,63 +432,7 @@ describe('dataTypeComparatorSearchQueryCriteria', () => { localStoredEventList === null ? '' : localStoredEventList ); const result = checker.getMatchedCriteria( - JSON.stringify({ - count: 1, - criterias: [ - { - criteriaId: '285', - name: 'Criteria_EventTimeStamp_3_Long', - createdAt: 1722497422151, - updatedAt: 1722500235276, - searchQuery: { - combinator: 'And', - searchQueries: [ - { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - searchCombo: { - combinator: 'And', - searchQueries: [ - { - dataType: 'user', - field: 'eventTimeStamp', - comparatorType: 'IsSet', - value: '', - fieldType: 'long' - }, - { - dataType: 'user', - field: 'savings', - comparatorType: 'IsSet', - value: '', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'saved_cars', - comparatorType: 'IsSet', - value: '', - fieldType: 'double' - }, - { - dataType: 'user', - field: 'country', - comparatorType: 'IsSet', - value: '', - fieldType: 'double' - } - ] - } - } - ] - } - ] - } - } - ] - }) + JSON.stringify(DATA_TYPE_COMPARATOR_IS_SET) ); expect(result).toEqual(null); });