Skip to content

Commit

Permalink
feat(DIA-181): add tracking when tapping verified representative (#9373)
Browse files Browse the repository at this point in the history
* feat: add tracking when tapping verified representative

* refactor: use the right type and move track object outside of the component

* test: use mockTrackEvent
  • Loading branch information
araujobarret authored Oct 4, 2023
1 parent 5213db1 commit 61d8eb8
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 15 deletions.
24 changes: 13 additions & 11 deletions src/app/Components/Artist/ArtistHeader.tests.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { fireEvent, screen } from "@testing-library/react-native"
import { ArtistHeaderTestsQuery } from "__generated__/ArtistHeaderTestsQuery.graphql"
import { ArtistHeaderFragmentContainer } from "app/Components/Artist/ArtistHeader"
import { ArtistHeaderFragmentContainer, tracks } from "app/Components/Artist/ArtistHeader"
import { __globalStoreTestUtils__ } from "app/store/GlobalStore"
import { navigate } from "app/system/navigation/navigate"
import { mockTrackEvent } from "app/utils/tests/globallyMockedStuff"
import { setupTestWrapper } from "app/utils/tests/setupTestWrapper"
import { graphql } from "react-relay"

Expand All @@ -29,19 +30,16 @@ describe("ArtistHeader", () => {
})

it("displays represented by list given verifiedRepresentatives", () => {
const partner = {
internalID: "representative-id",
name: "Test representative",
href: "representative-href",
profile: { icon: { url: "image-url" } },
}
renderWithRelay({
Artist: () => ({
...mockArtist,
verifiedRepresentatives: [
{
partner: {
internalID: "representative-id",
name: "Test representative",
href: "representative-href",
profile: { icon: { url: "image-url" } },
},
},
],
verifiedRepresentatives: [{ partner }],
}),
})

Expand All @@ -50,6 +48,9 @@ describe("ArtistHeader", () => {

fireEvent.press(representative)
expect(navigate).toHaveBeenCalledWith("representative-href")
expect(mockTrackEvent).toHaveBeenCalledWith(
tracks.tappedVerifiedRepresentative(mockArtist as any, partner)
)
})

describe("alerts set", () => {
Expand Down Expand Up @@ -98,6 +99,7 @@ describe("ArtistHeader", () => {
const mockArtist = {
internalID: "some-id",
id: "marcel-duchamp",
slug: "marcel-duchamp",
name: "Marcel",
nationality: "French",
birthday: "11/17/1992",
Expand Down
29 changes: 25 additions & 4 deletions src/app/Components/Artist/ArtistHeader.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { ActionType, ContextModule, OwnerType, TappedVerifiedRepresentative } from "@artsy/cohesion"
import {
Box,
Flex,
Expand All @@ -17,6 +18,7 @@ import { useFeatureFlag } from "app/utils/hooks/useFeatureFlag"
import { pluralize } from "app/utils/pluralize"
import { FlatList, LayoutChangeEvent, ViewProps } from "react-native"
import { RelayProp, createFragmentContainer, graphql } from "react-relay"
import { useTracking } from "react-tracking"

export const ARTIST_HEADER_HEIGHT = 156
export const ARTIST_IMAGE_TABLET_HEIGHT = 375
Expand Down Expand Up @@ -47,6 +49,7 @@ export const ArtistHeader: React.FC<Props> = ({ artist, me, onLayoutChange }) =>
const { width, height, aspectRatio } = useArtistHeaderImageDimensions()
const { updateScrollYOffset } = useScreenScrollContext()
const showArtistsAlertsSetFeatureFlag = useFeatureFlag("ARShowArtistsAlertsSet")
const tracking = useTracking()

const getBirthdayString = () => {
const birthday = artist.birthday
Expand Down Expand Up @@ -80,9 +83,12 @@ export const ArtistHeader: React.FC<Props> = ({ artist, me, onLayoutChange }) =>
}
}

const handleRepresentativePress = (href: string | null) => {
if (href) {
navigate(href)
const handleRepresentativePress = (
partner: ArtistHeader_artist$data["verifiedRepresentatives"][number]["partner"]
) => {
if (partner?.href && partner?.internalID) {
tracking.trackEvent(tracks.tappedVerifiedRepresentative(artist, partner))
navigate(partner.href)
}
}

Expand Down Expand Up @@ -129,7 +135,7 @@ export const ArtistHeader: React.FC<Props> = ({ artist, me, onLayoutChange }) =>
<Pill
variant="profile"
src={item.partner.profile?.icon?.url!}
onPress={() => handleRepresentativePress(item.partner.href)}
onPress={() => handleRepresentativePress(item.partner)}
>
{item.partner.name}
</Pill>
Expand Down Expand Up @@ -162,6 +168,7 @@ export const ArtistHeader: React.FC<Props> = ({ artist, me, onLayoutChange }) =>
export const ArtistHeaderFragmentContainer = createFragmentContainer(ArtistHeader, {
artist: graphql`
fragment ArtistHeader_artist on Artist {
slug
birthday
coverArtwork {
image {
Expand Down Expand Up @@ -193,3 +200,17 @@ export const ArtistHeaderFragmentContainer = createFragmentContainer(ArtistHeade
}
`,
})

export const tracks = {
tappedVerifiedRepresentative: (
artist: ArtistHeader_artist$data,
partner: ArtistHeader_artist$data["verifiedRepresentatives"][number]["partner"]
): TappedVerifiedRepresentative => ({
action: ActionType.tappedVerifiedRepresentative,
context_module: ContextModule.artistHeader,
context_screen_owner_type: OwnerType.artist,
context_screen_owner_id: artist.internalID,
destination_screen_owner_id: partner.internalID,
destination_screen_owner_type: OwnerType.partner,
}),
}

0 comments on commit 61d8eb8

Please sign in to comment.