Skip to content

Commit 169c2ff

Browse files
authored
Nuzhy/FEQ-2701/update analytics (deriv-com#17654)
* chore: update utils, analytics packages * fix: fetch country from utils * fix: mock analytics in test cases * fix: update analytics * fix: update utils, analytics packages * fix: empty * fix: updated auth-client package, added stylemock in hooks jest config * fix: update package-lock * fix: empty
1 parent 9bb5179 commit 169c2ff

File tree

25 files changed

+2914
-5303
lines changed

25 files changed

+2914
-5303
lines changed

package-lock.json

+2,824-5,185
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
},
107107
"dependencies": {
108108
"@babel/preset-typescript": "^7.24.7",
109-
"@deriv-com/analytics": "1.26.2",
109+
"@deriv-com/analytics": "1.27.1",
110110
"@sendbird/chat": "^4.9.7",
111111
"@types/react-transition-group": "^4.4.4",
112112
"babel-jest": "^29.7.0",

packages/account/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
},
3131
"dependencies": {
3232
"@binary-com/binary-document-uploader": "^2.4.8",
33-
"@deriv-com/analytics": "1.26.2",
33+
"@deriv-com/analytics": "1.27.1",
3434
"@deriv-com/translations": "1.3.9",
35-
"@deriv-com/utils": "^0.0.40",
35+
"@deriv-com/utils": "^0.0.42",
3636
"@deriv-com/ui": "1.36.4",
3737
"@deriv/api": "^1.0.0",
3838
"@deriv-com/quill-ui": "1.24.4",

packages/account/src/Components/personal-details/__tests__/personal-details.spec.tsx

+15-9
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ jest.mock('Helpers/utils', () => ({
3838
isAdditionalDocumentValid: jest.fn(),
3939
}));
4040

41+
jest.mock('@deriv-com/analytics', () => ({
42+
Analytics: {
43+
trackEvent: jest.fn(),
44+
},
45+
}));
46+
4147
type TPersonalDetailsSectionForm = ComponentProps<typeof PersonalDetails>['value'];
4248

4349
const mock_warnings = {};
@@ -296,9 +302,9 @@ describe('<PersonalDetails/>', () => {
296302
const citizenship = screen.getByTestId('citizenship');
297303
const phone = screen.getByTestId('phone');
298304

299-
userEvent.clear(first_name);
305+
await userEvent.clear(first_name);
300306
fireEvent.blur(date_of_birth);
301-
userEvent.clear(last_name);
307+
await userEvent.clear(last_name);
302308
fireEvent.blur(place_of_birth);
303309
fireEvent.blur(citizenship);
304310
fireEvent.blur(phone);
@@ -343,8 +349,8 @@ describe('<PersonalDetails/>', () => {
343349
const date_of_birth = screen.getByTestId('date_of_birth');
344350
const phone = screen.getByTestId('phone');
345351

346-
userEvent.type(first_name, 'test firstname');
347-
userEvent.type(last_name, 'test lastname');
352+
await userEvent.type(first_name, 'test firstname');
353+
await userEvent.type(last_name, 'test lastname');
348354
fireEvent.change(date_of_birth, { target: { value: '2000-12-12' } });
349355
fireEvent.change(phone, { target: { value: '+931234567890' } });
350356

@@ -358,7 +364,7 @@ describe('<PersonalDetails/>', () => {
358364

359365
expect(previous_btn).toBeEnabled();
360366
expect(next_btn).toBeEnabled();
361-
userEvent.click(next_btn);
367+
await userEvent.click(next_btn);
362368

363369
await waitFor(() => {
364370
expect(new_props.onSubmit).toBeCalled();
@@ -426,12 +432,12 @@ describe('<PersonalDetails/>', () => {
426432
const mrs_radio_btn: HTMLInputElement = screen.getByRole('radio', { name: /ms/i }) as HTMLInputElement;
427433
expect(mr_radio_btn).toBeInTheDocument();
428434
expect(mrs_radio_btn).toBeInTheDocument();
429-
expect(mr_radio_btn.checked).toEqual(false);
435+
expect(mr_radio_btn).not.toBeChecked();
430436

431437
fireEvent.click(mr_radio_btn);
432438

433-
expect(mr_radio_btn.checked).toEqual(true);
434-
expect(mrs_radio_btn.checked).toEqual(false);
439+
expect(mr_radio_btn).toBeChecked();
440+
expect(mrs_radio_btn).not.toBeChecked();
435441
});
436442

437443
it('should display the correct field details ', () => {
@@ -608,7 +614,7 @@ describe('<PersonalDetails/>', () => {
608614
fireEvent.change(date_of_birth, { target: { value: '2000-12-12' } });
609615
fireEvent.change(phone, { target: { value: '+49123456789012' } });
610616

611-
expect(mr_radio_btn.checked).toEqual(true);
617+
expect(mr_radio_btn).toBeChecked();
612618
const next_btn = screen.getByRole('button', { name: /next/i });
613619

614620
expect(next_btn).toBeEnabled();

packages/account/src/Sections/Security/Passkeys/__tests__/passkeys.spec.tsx

+27-21
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ jest.mock('@deriv-com/ui', () => ({
6767
useDevice: jest.fn(() => ({ isMobile: true })),
6868
}));
6969

70+
jest.mock('@deriv-com/analytics', () => ({
71+
Analytics: {
72+
trackEvent: jest.fn(),
73+
},
74+
}));
75+
7076
describe('Passkeys', () => {
7177
let mock_store: ReturnType<typeof mockStore>, modal_root_el: HTMLElement;
7278
const create_passkey = 'Create passkey';
@@ -162,7 +168,7 @@ describe('Passkeys', () => {
162168
expect(Analytics.trackEvent).not.toHaveBeenCalled();
163169
});
164170

165-
it('renders existed passkeys correctly and triggers new passkey creation', () => {
171+
it('renders existed passkeys correctly and triggers new passkey creation', async () => {
166172
(useGetPasskeysList as jest.Mock).mockReturnValue({
167173
passkeys_list: mock_passkeys_list,
168174
});
@@ -176,15 +182,15 @@ describe('Passkeys', () => {
176182
expect(screen.getByText(passkey_name_2)).toBeInTheDocument();
177183

178184
const create_passkey_button = screen.getByRole('button', { name: create_passkey });
179-
userEvent.click(create_passkey_button);
185+
await userEvent.click(create_passkey_button);
180186
expect(mockStartPasskeyRegistration).toBeCalledTimes(1);
181187
expect(Analytics.trackEvent).toHaveBeenCalledWith(
182188
tracking_event,
183189
getAnalyticsParams('create_passkey_started', { subform_name: 'passkey_main' })
184190
);
185191
});
186192

187-
it("renders 'Experience safer logins' page when no passkey created, trigger 'Learn more' screen, trigger passkey creation", () => {
193+
it("renders 'Experience safer logins' page when no passkey created, trigger 'Learn more' screen, trigger passkey creation", async () => {
188194
(useGetPasskeysList as jest.Mock).mockReturnValue({
189195
passkeys_list: [],
190196
});
@@ -196,13 +202,13 @@ describe('Passkeys', () => {
196202

197203
expect(screen.getByText('Experience safer logins')).toBeInTheDocument();
198204
const learn_more_button = screen.getByRole('button', { name: 'Learn more' });
199-
userEvent.click(learn_more_button);
205+
await userEvent.click(learn_more_button);
200206
expect(Analytics.trackEvent).toHaveBeenCalledWith(tracking_event, getAnalyticsParams('info_open'));
201207

202208
expect(screen.getByText('Effortless login with passkeys')).toBeInTheDocument();
203209
expect(screen.getByText('Tips:')).toBeInTheDocument();
204210
const create_passkey_button = screen.getByRole('button', { name: create_passkey });
205-
userEvent.click(create_passkey_button);
211+
await userEvent.click(create_passkey_button);
206212
expect(mockStartPasskeyRegistration).toBeCalledTimes(1);
207213
expect(Analytics.trackEvent).toHaveBeenCalledWith(
208214
tracking_event,
@@ -223,13 +229,13 @@ describe('Passkeys', () => {
223229

224230
renderComponent();
225231

226-
userEvent.click(screen.getByRole('button', { name: create_passkey }));
232+
await userEvent.click(screen.getByRole('button', { name: create_passkey }));
227233
expect(screen.getByText('Just a reminder')).toBeInTheDocument();
228234
expect(screen.getByText('Enable screen lock on your device.')).toBeInTheDocument();
229235
expect(screen.getByText('Enable bluetooth.')).toBeInTheDocument();
230236
expect(screen.getByText('Sign in to your Google or iCloud account.')).toBeInTheDocument();
231237

232-
userEvent.click(screen.getByRole('button', { name: continue_button }));
238+
await userEvent.click(screen.getByRole('button', { name: continue_button }));
233239
expect(mockCreatePasskey).toBeCalledTimes(1);
234240
expect(Analytics.trackEvent).toHaveBeenCalledWith(
235241
tracking_event,
@@ -252,16 +258,16 @@ describe('Passkeys', () => {
252258

253259
expect(screen.queryByText('Edit passkey')).not.toBeInTheDocument();
254260

255-
userEvent.click(screen.getAllByTestId('dt_dropdown_display')[0]);
256-
userEvent.click(screen.getByText('Rename'));
261+
await userEvent.click(screen.getAllByTestId('dt_dropdown_display')[0]);
262+
await userEvent.click(screen.getByText('Rename'));
257263

258264
expect(Analytics.trackEvent).toHaveBeenCalledWith(tracking_event, getAnalyticsParams('passkey_rename_started'));
259265
expect(screen.getByText('Edit passkey')).toBeInTheDocument();
260266

261267
const input: HTMLInputElement = screen.getByRole('textbox');
262-
userEvent.clear(input);
263-
userEvent.type(input, 'new passkey name');
264-
userEvent.click(screen.getByRole('button', { name: /save changes/i }));
268+
await userEvent.clear(input);
269+
await userEvent.type(input, 'new passkey name');
270+
await userEvent.click(screen.getByRole('button', { name: /save changes/i }));
265271

266272
await waitFor(() => {
267273
expect(mockRenamePasskey).toHaveBeenCalledTimes(1);
@@ -283,13 +289,13 @@ describe('Passkeys', () => {
283289

284290
expect(screen.queryByText('Edit passkey')).not.toBeInTheDocument();
285291

286-
userEvent.click(screen.getAllByTestId('dt_dropdown_display')[0]);
287-
userEvent.click(screen.getByText('Remove'));
292+
await userEvent.click(screen.getAllByTestId('dt_dropdown_display')[0]);
293+
await userEvent.click(screen.getByText('Remove'));
288294

289295
expect(Analytics.trackEvent).toHaveBeenCalledWith(tracking_event, getAnalyticsParams('passkey_remove_started'));
290296
expect(screen.getByText('Are you sure you want to remove this passkey?')).toBeInTheDocument();
291297

292-
userEvent.click(screen.getByRole('button', { name: /remove/i }));
298+
await userEvent.click(screen.getByRole('button', { name: /remove/i }));
293299
expect(mockRemovePasskey).toHaveBeenCalledTimes(1);
294300
});
295301

@@ -302,15 +308,15 @@ describe('Passkeys', () => {
302308

303309
renderComponent();
304310

305-
userEvent.click(screen.getByRole('button', { name: create_passkey }));
306-
userEvent.click(screen.getByRole('button', { name: continue_button }));
311+
await userEvent.click(screen.getByRole('button', { name: create_passkey }));
312+
await userEvent.click(screen.getByRole('button', { name: continue_button }));
307313

308314
await waitFor(() => {
309315
expect(screen.getByText(error_message)).toBeInTheDocument();
310316
expect(screen.getByText(error_title)).toBeInTheDocument();
311317
});
312318

313-
userEvent.click(screen.getByRole('button', { name: ok_button }));
319+
await userEvent.click(screen.getByRole('button', { name: ok_button }));
314320

315321
await waitFor(() => {
316322
expect(mockHistoryPush).toHaveBeenCalledWith(routes.traders_hub);
@@ -331,15 +337,15 @@ describe('Passkeys', () => {
331337

332338
renderComponent();
333339

334-
userEvent.click(screen.getByRole('button', { name: create_passkey }));
335-
userEvent.click(screen.getByRole('button', { name: continue_button }));
340+
await userEvent.click(screen.getByRole('button', { name: create_passkey }));
341+
await userEvent.click(screen.getByRole('button', { name: continue_button }));
336342

337343
await waitFor(() => {
338344
expect(screen.getByText(error_message)).toBeInTheDocument();
339345
expect(screen.getByText(error_title)).toBeInTheDocument();
340346
});
341347

342-
userEvent.click(screen.getByRole('button', { name: ok_button }));
348+
await userEvent.click(screen.getByRole('button', { name: ok_button }));
343349
expect(mockHistoryPush).toHaveBeenCalledWith(routes.traders_hub);
344350
});
345351
});

packages/api-v2/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"version": "1.0.0",
55
"main": "src/index.ts",
66
"dependencies": {
7-
"@deriv-com/utils": "^0.0.40",
7+
"@deriv-com/utils": "^0.0.42",
88
"@deriv-com/translations": "1.3.9",
99
"@deriv/deriv-api": "^1.0.15",
1010
"@deriv/shared": "^1.0.0",
@@ -16,7 +16,7 @@
1616
"uuid": "^9.0.1"
1717
},
1818
"devDependencies": {
19-
"@deriv-com/analytics": "1.26.2",
19+
"@deriv-com/analytics": "1.27.1",
2020
"@deriv/api-types": "1.0.172",
2121
"@testing-library/react": "^12.1.5",
2222
"@testing-library/react-hooks": "^7.0.2",

packages/api/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"main": "src/index.ts",
66
"sideEffects": false,
77
"dependencies": {
8-
"@deriv-com/utils": "^0.0.40",
8+
"@deriv-com/utils": "^0.0.42",
99
"@deriv/deriv-api": "^1.0.15",
1010
"@deriv/shared": "^1.0.0",
1111
"@deriv/utils": "^1.0.0",

packages/appstore/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"author": "Deriv",
2727
"license": "Apache-2.0",
2828
"dependencies": {
29-
"@deriv-com/analytics": "1.26.2",
29+
"@deriv-com/analytics": "1.27.1",
3030
"@deriv-com/translations": "1.3.9",
3131
"@deriv-com/ui": "1.36.4",
3232
"@deriv/account": "^1.0.0",

packages/cashier/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"url": "https://github.com/deriv-com/deriv-app/issues"
3838
},
3939
"dependencies": {
40-
"@deriv-com/analytics": "1.26.2",
40+
"@deriv-com/analytics": "1.27.1",
4141
"@deriv-com/ui": "1.36.4",
4242
"@deriv/api": "^1.0.0",
4343
"@deriv/api-types": "1.0.172",

packages/cfd/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@
8686
},
8787
"dependencies": {
8888
"@deriv-com/ui": "1.36.4",
89-
"@deriv-com/analytics": "1.26.2",
89+
"@deriv-com/analytics": "1.27.1",
9090
"@deriv-com/translations": "1.3.9",
91-
"@deriv-com/utils": "^0.0.40",
91+
"@deriv-com/utils": "^0.0.42",
9292
"@deriv/account": "^1.0.0",
9393
"@deriv/api": "^1.0.0",
9494
"@deriv/api-types": "1.0.172",

packages/cfd/src/Containers/migration-banner/__test__/migration-banner.spec.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ jest.mock('@deriv/hooks', () => ({
1313
useMT5SVGEligibleToMigrate: jest.fn(),
1414
}));
1515

16+
jest.mock('@deriv-com/analytics', () => ({
17+
Analytics: {
18+
trackEvent: jest.fn(),
19+
},
20+
}));
21+
1622
const mock_store = mockStore({});
1723

1824
const mockUseMT5SVGEligibleToMigrate = useMT5SVGEligibleToMigrate as jest.MockedFunction<
@@ -81,11 +87,11 @@ describe('MigrationBanner', () => {
8187
});
8288
});
8389

84-
it('should call upgrade button tracking event on clicking upgrade now button ', () => {
90+
it('should call upgrade button tracking event on clicking upgrade now button ', async () => {
8591
renderComponent();
8692
const upgrade_button = screen.getByRole('button', { name: /upgrade/i });
8793
expect(upgrade_button).toBeInTheDocument();
88-
userEvent.click(upgrade_button);
94+
await userEvent.click(upgrade_button);
8995
expect(Analytics.trackEvent).toHaveBeenCalledWith('ce_upgrade_mt5_banner', {
9096
action: 'push_cta_upgrade',
9197
});

packages/core/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@
9595
},
9696
"dependencies": {
9797
"@datadog/browser-rum": "^5.11.0",
98-
"@deriv-com/analytics": "1.26.2",
98+
"@deriv-com/analytics": "1.27.1",
9999
"@deriv-com/quill-tokens": "2.0.4",
100100
"@deriv-com/quill-ui": "1.24.4",
101101
"@deriv-com/translations": "1.3.9",
102102
"@deriv-com/auth-client": "1.3.3",
103103
"@deriv-com/ui": "1.36.4",
104-
"@deriv-com/utils": "^0.0.40",
104+
"@deriv-com/utils": "^0.0.42",
105105
"@deriv/account": "^1.0.0",
106106
"@deriv/api": "^1.0.0",
107107
"@deriv/appstore": "^0.0.4",

packages/core/src/App/Containers/RealAccountSignup/__tests__/real-account-signup.spec.jsx

+6
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ jest.mock('../account-wizard.jsx', () => ({
3535
default: () => <div>Account Wizard</div>,
3636
}));
3737

38+
jest.mock('@deriv-com/analytics', () => ({
39+
Analytics: {
40+
trackEvent: jest.fn(),
41+
},
42+
}));
43+
3844
describe('<RealAccountSignup />', () => {
3945
const store = mockStore({
4046
client: {

packages/core/src/Stores/client-store.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ import {
3232
urlForLanguage,
3333
} from '@deriv/shared';
3434
import { getLanguage, getRedirectionLanguage, localize } from '@deriv/translations';
35-
import { getCountry } from '@deriv/utils';
3635
import { Analytics } from '@deriv-com/analytics';
37-
import { URLConstants } from '@deriv-com/utils';
36+
import { CountryUtils, URLConstants } from '@deriv-com/utils';
3837

3938
import { requestLogout, WS } from 'Services';
4039
import BinarySocketGeneral from 'Services/socket-general';
@@ -177,7 +176,6 @@ export default class ClientStore extends BaseStore {
177176
constructor(root_store) {
178177
const local_storage_properties = ['device_data'];
179178
super({ root_store, local_storage_properties, store_name });
180-
181179
makeObservable(this, {
182180
exchange_rates: observable,
183181
loginid: observable,
@@ -1825,7 +1823,7 @@ export default class ClientStore extends BaseStore {
18251823
language: getLanguage(),
18261824
device_language: navigator?.language || 'en-EN',
18271825
user_language: getLanguage().toLowerCase(),
1828-
country: await getCountry(),
1826+
country: await CountryUtils.getCountry(),
18291827
utm_source: ppc_campaign_cookies?.utm_source,
18301828
utm_medium: ppc_campaign_cookies?.utm_medium,
18311829
utm_campaign: ppc_campaign_cookies?.utm_campaign,

0 commit comments

Comments
 (0)