From ac850fb887e09358bfdd8d08c251f086e6d2544f Mon Sep 17 00:00:00 2001 From: jpaten Date: Wed, 13 Nov 2024 00:47:41 -0800 Subject: [PATCH] feat!: made tracking parameters to azulFileDownload required (#260) --- src/components/Export/common/tracking.ts | 8 ++++---- .../DownloadCurlCommand/downloadCurlCommand.tsx | 4 ++-- .../components/ExportToTerra/exportToTerra.tsx | 4 ++-- .../ManifestDownload/manifestDownload.tsx | 4 ++-- .../AzulFileDownload/azulFileDownload.tsx | 15 +++++---------- tests/azulFileDownload.test.tsx | 17 +++++++++++------ 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/components/Export/common/tracking.ts b/src/components/Export/common/tracking.ts index 4d32a6d7..dbc0cea1 100644 --- a/src/components/Export/common/tracking.ts +++ b/src/components/Export/common/tracking.ts @@ -6,7 +6,7 @@ import { EVENT_NAME, EVENT_PARAM } from "../../../common/analytics/entities"; * @param entity_name - Entity (tab) name. * @param toolName - Tool name. */ -export function bulkDownloadTracking( +export function trackBulkDownloadRequested( entity_name: string, toolName: string ): void { @@ -21,7 +21,7 @@ export function bulkDownloadTracking( * Executes event tracking for the file manifest export. * @param entity_name - Entity (tab) name. */ -export function fileManifestTracking(entity_name: string): void { +export function trackFileManifestRequested(entity_name: string): void { // Track the file manifest requested event. track(EVENT_NAME.INDEX_FILE_MANIFEST_REQUESTED, { [EVENT_PARAM.ENTITY_NAME]: entity_name, @@ -32,7 +32,7 @@ export function fileManifestTracking(entity_name: string): void { * Executes event tracking for the Terra export. * @param entity_name - Entity (tab) name. */ -export function exportToTerraTracking(entity_name: string): void { +export function trackExportToTerraRequested(entity_name: string): void { // Track the export to terra event. track(EVENT_NAME.INDEX_ANALYZE_IN_TERRA_REQUESTED, { [EVENT_PARAM.ENTITY_NAME]: entity_name, @@ -45,7 +45,7 @@ export function exportToTerraTracking(entity_name: string): void { * @param related_entity_id - The ID of the file's dataset / project * @param related_entity_name -The name of the file's dataset / project */ -export function trackFileDownload( +export function trackFileDownloaded( entity_name: string, related_entity_id: string, related_entity_name: string diff --git a/src/components/Export/components/DownloadCurlCommand/downloadCurlCommand.tsx b/src/components/Export/components/DownloadCurlCommand/downloadCurlCommand.tsx index 300b0e3f..de8e4f71 100644 --- a/src/components/Export/components/DownloadCurlCommand/downloadCurlCommand.tsx +++ b/src/components/Export/components/DownloadCurlCommand/downloadCurlCommand.tsx @@ -12,7 +12,7 @@ import { ExecutionEnvironment, FormFacet, } from "../../common/entities"; -import { bulkDownloadTracking } from "../../common/tracking"; +import { trackBulkDownloadRequested } from "../../common/tracking"; import { DownloadCurlCommandNotStarted } from "./components/DownloadCurlCommandNotStarted/downloadCurlCommandNotStarted"; import { DownloadCurlCommandReady } from "./components/DownloadCurlCommandReady/downloadCurlCommandReady"; @@ -63,7 +63,7 @@ export const DownloadCurlCommand = ({ isLoading={isLoading} onRequestManifest={(): void => { // Execute GTM tracking. - bulkDownloadTracking(entityList, executionEnvironment); + trackBulkDownloadRequested(entityList, executionEnvironment); // Request manifest. run(); }} diff --git a/src/components/Export/components/ExportToTerra/exportToTerra.tsx b/src/components/Export/components/ExportToTerra/exportToTerra.tsx index f0213ee5..a892b736 100644 --- a/src/components/Export/components/ExportToTerra/exportToTerra.tsx +++ b/src/components/Export/components/ExportToTerra/exportToTerra.tsx @@ -7,7 +7,7 @@ import { useFileManifest } from "../../../../hooks/useFileManifest/useFileManife import { useRequestFileManifest } from "../../../../hooks/useFileManifest/useRequestFileManifest"; import { FileManifestState } from "../../../../providers/fileManifestState"; import { FormFacet, ManifestDownloadFormat } from "../../common/entities"; -import { exportToTerraTracking } from "../../common/tracking"; +import { trackExportToTerraRequested } from "../../common/tracking"; import { ExportToTerraNotStarted } from "./components/ExportToTerraNotStarted/exportToTerraNotStarted"; import { ExportToTerraReady } from "./components/ExportToTerraReady/exportToTerraReady"; @@ -57,7 +57,7 @@ export const ExportToTerra = ({ manifestDownloadFormats={manifestDownloadFormats} onRequestManifest={(): void => { // Execute GA tracking - exportToTerraTracking(entityList); + trackExportToTerraRequested(entityList); // Request manifest run(); }} diff --git a/src/components/Export/components/ManifestDownload/manifestDownload.tsx b/src/components/Export/components/ManifestDownload/manifestDownload.tsx index 3db248d8..1ebcb20e 100644 --- a/src/components/Export/components/ManifestDownload/manifestDownload.tsx +++ b/src/components/Export/components/ManifestDownload/manifestDownload.tsx @@ -8,7 +8,7 @@ import { useRequestFileManifest } from "../../../../hooks/useFileManifest/useReq import { FileLocation } from "../../../../hooks/useRequestFileLocation"; import { FileManifestState } from "../../../../providers/fileManifestState"; import { FormFacet } from "../../common/entities"; -import { fileManifestTracking } from "../../common/tracking"; +import { trackFileManifestRequested } from "../../common/tracking"; import { ManifestDownloadNotStarted } from "./components/ManifestDownloadNotStarted/manifestDownloadNotStarted"; import { ManifestDownloadReady } from "./components/ManifestDownloadReady/manifestDownloadReady"; @@ -55,7 +55,7 @@ export const ManifestDownload = ({ formFacet={formFacet} isLoading={isLoading} onRequestManifest={(): void => { - fileManifestTracking(entityList); + trackFileManifestRequested(entityList); run(); }} /> diff --git a/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx b/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx index 76837a2d..722de90d 100644 --- a/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx +++ b/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx @@ -1,11 +1,10 @@ import { Box } from "@mui/material"; import React, { Fragment, useEffect, useRef, useState } from "react"; -import { stringifyValues } from "../../../../common/utils"; import { useFileLocation } from "../../../../hooks/useFileLocation"; import { DownloadIcon } from "../../../common/CustomIcon/components/DownloadIcon/downloadIcon"; import { LoadingIcon } from "../../../common/CustomIcon/components/LoadingIcon/loadingIcon"; import { IconButton } from "../../../common/IconButton/iconButton"; -import { trackFileDownload } from "../../../Export/common/tracking"; +import { trackFileDownloaded } from "../../../Export/common/tracking"; import { StyledIconButton } from "./azulFileDownload.styles"; import { AZUL_FILE_DOWNLOAD_TEST_ID, @@ -14,9 +13,9 @@ import { } from "./common/constants"; export interface AzulFileDownloadProps { - entityName?: string; // The name of the file downloaded. - relatedEntityId?: string[]; // An array of IDs of the file's datasets / projects - relatedEntityName?: string[]; // An array of names of the file's datasets / projects + entityName: string; // The name of the file downloaded. + relatedEntityId: string; // An array of IDs of the file's datasets / projects + relatedEntityName: string; // An array of names of the file's datasets / projects url?: string; // Original "file fetch URL" as returned from Azul endpoint. } @@ -57,11 +56,7 @@ export const AzulFileDownload = ({ Icon={isLoading ? LoadingIcon : DownloadIcon} onClick={(): void => { setIsRequestPending(true); - trackFileDownload( - entityName ?? "", - stringifyValues(relatedEntityId ?? [""]), - stringifyValues(relatedEntityName ?? [""]) - ); + trackFileDownloaded(entityName, relatedEntityId, relatedEntityName); run(); }} size="medium" diff --git a/tests/azulFileDownload.test.tsx b/tests/azulFileDownload.test.tsx index 312cc03e..ac79419b 100644 --- a/tests/azulFileDownload.test.tsx +++ b/tests/azulFileDownload.test.tsx @@ -21,6 +21,11 @@ describe("AzulFileDownload", () => { const FILE_URL = "https://example.com/storage/file"; const MOCK_RUN = jest.fn(); const URL = "https://example.com/repository/file"; + const TRACKING_PARAMETERS = { + entityName: "filename.extension", + relatedEntityId: "id", + relatedEntityName: "name", + }; beforeEach(() => { (useFileLocation as jest.Mock).mockReturnValue({ fileUrl: undefined, @@ -33,24 +38,24 @@ describe("AzulFileDownload", () => { }); describe("download button", () => { test("should render the download button", () => { - render(); + render(); const buttonEl = getButtonById(AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID); expect(buttonEl).not.toBeNull(); }); test("should disable the download button if URL is undefined", () => { - render(); + render(); const buttonEl = getButtonById(AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID); expect(buttonEl.disabled).toBe(true); }); test("should enable the download button if a URL is provided", () => { - render(); + render(); const buttonEl = getButtonById(AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID); expect(buttonEl.disabled).toBe(false); }); }); describe("download functionality", () => { test("should call the run function when the button is clicked", () => { - render(); + render(); const buttonEl = getButtonById(AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID); fireEvent.click(buttonEl); expect(MOCK_RUN).toHaveBeenCalled(); @@ -61,7 +66,7 @@ describe("AzulFileDownload", () => { isLoading: false, run: MOCK_RUN, }); - render(); + render(); const buttonEl = getButtonById(AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID); fireEvent.click(buttonEl); await waitFor(() => { @@ -80,7 +85,7 @@ describe("AzulFileDownload", () => { isLoading: false, run: MOCK_RUN, }); - render(); + render(); const buttonEl = getButtonById(AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID); const anchorEl = getAnchorEl(AZUL_FILE_DOWNLOAD_TEST_ID); fireEvent.click(buttonEl);