@@ -8,6 +8,18 @@ import Routes from '../../../../constants/navigation/Routes';
88const mockNavigate = jest . fn ( ) ;
99const mockGoToBuy = jest . fn ( ) ;
1010
11+ jest . mock ( '../../../hooks/useAnalytics/useAnalytics' , ( ) => ( {
12+ useAnalytics : ( ) => ( {
13+ trackEvent : jest . fn ( ) ,
14+ createEventBuilder : jest . fn ( ( eventName : string ) => ( {
15+ addProperties : jest . fn ( ( ) => ( {
16+ build : jest . fn ( ( ) => ( { category : eventName } ) ) ,
17+ } ) ) ,
18+ build : jest . fn ( ( ) => ( { category : eventName } ) ) ,
19+ } ) ) ,
20+ } ) ,
21+ } ) ) ;
22+
1123jest . mock ( '@react-navigation/native' , ( ) => {
1224 const actual = jest . requireActual ( '@react-navigation/native' ) ;
1325 return {
@@ -78,31 +90,47 @@ describe('WhatsHappeningExpandedCard', () => {
7890
7991 it ( 'renders the title and description' , ( ) => {
8092 renderWithProvider (
81- < WhatsHappeningExpandedCard item = { baseItem } cardWidth = { CARD_WIDTH } /> ,
93+ < WhatsHappeningExpandedCard
94+ item = { baseItem }
95+ cardIndex = { 0 }
96+ cardWidth = { CARD_WIDTH }
97+ /> ,
8298 ) ;
8399 expect ( screen . getByText ( baseItem . title ) ) . toBeOnTheScreen ( ) ;
84100 expect ( screen . getByText ( baseItem . description ) ) . toBeOnTheScreen ( ) ;
85101 } ) ;
86102
87103 it ( 'renders the impact badge for positive impact' , ( ) => {
88104 renderWithProvider (
89- < WhatsHappeningExpandedCard item = { baseItem } cardWidth = { CARD_WIDTH } /> ,
105+ < WhatsHappeningExpandedCard
106+ item = { baseItem }
107+ cardIndex = { 0 }
108+ cardWidth = { CARD_WIDTH }
109+ /> ,
90110 ) ;
91111 expect ( screen . getByText ( 'Bullish' ) ) . toBeOnTheScreen ( ) ;
92112 } ) ;
93113
94114 it ( 'renders Neutral badge when impact is explicitly neutral' , ( ) => {
95115 const item = { ...baseItem , impact : 'neutral' as const } ;
96116 renderWithProvider (
97- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
117+ < WhatsHappeningExpandedCard
118+ item = { item }
119+ cardIndex = { 0 }
120+ cardWidth = { CARD_WIDTH }
121+ /> ,
98122 ) ;
99123 expect ( screen . getByText ( 'Neutral' ) ) . toBeOnTheScreen ( ) ;
100124 } ) ;
101125
102126 it ( 'does not render an impact badge when impact is undefined' , ( ) => {
103127 const item = { ...baseItem , impact : undefined } ;
104128 renderWithProvider (
105- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
129+ < WhatsHappeningExpandedCard
130+ item = { item }
131+ cardIndex = { 0 }
132+ cardWidth = { CARD_WIDTH }
133+ /> ,
106134 ) ;
107135 expect ( screen . queryByText ( 'Neutral' ) ) . toBeNull ( ) ;
108136 expect ( screen . queryByText ( 'Bullish' ) ) . toBeNull ( ) ;
@@ -112,7 +140,11 @@ describe('WhatsHappeningExpandedCard', () => {
112140 it ( 'renders Tokens section when assets have caip19' , ( ) => {
113141 const item = { ...baseItem , relatedAssets : [ tokenAsset ] } ;
114142 renderWithProvider (
115- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
143+ < WhatsHappeningExpandedCard
144+ item = { item }
145+ cardIndex = { 0 }
146+ cardWidth = { CARD_WIDTH }
147+ /> ,
116148 ) ;
117149 expect ( screen . getByText ( 'Tokens' ) ) . toBeOnTheScreen ( ) ;
118150 expect ( screen . getByText ( 'BTC' ) ) . toBeOnTheScreen ( ) ;
@@ -122,7 +154,11 @@ describe('WhatsHappeningExpandedCard', () => {
122154 it ( 'does not render Tokens section when no assets have caip19' , ( ) => {
123155 const item = { ...baseItem , relatedAssets : [ perpsOnlyAsset ] } ;
124156 renderWithProvider (
125- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
157+ < WhatsHappeningExpandedCard
158+ item = { item }
159+ cardIndex = { 0 }
160+ cardWidth = { CARD_WIDTH }
161+ /> ,
126162 ) ;
127163 expect ( screen . queryByText ( 'Tokens' ) ) . toBeNull ( ) ;
128164 expect ( screen . queryByText ( 'Buy' ) ) . toBeNull ( ) ;
@@ -131,7 +167,11 @@ describe('WhatsHappeningExpandedCard', () => {
131167 it ( 'renders Perps section when assets have hlPerpsMarket' , ( ) => {
132168 const item = { ...baseItem , relatedAssets : [ perpsOnlyAsset ] } ;
133169 renderWithProvider (
134- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
170+ < WhatsHappeningExpandedCard
171+ item = { item }
172+ cardIndex = { 0 }
173+ cardWidth = { CARD_WIDTH }
174+ /> ,
135175 ) ;
136176 expect ( screen . getByText ( 'Perps' ) ) . toBeOnTheScreen ( ) ;
137177 expect ( screen . getByText ( 'TSLA' ) ) . toBeOnTheScreen ( ) ;
@@ -141,7 +181,11 @@ describe('WhatsHappeningExpandedCard', () => {
141181 it ( 'does not render Perps section when no assets have hlPerpsMarket' , ( ) => {
142182 const item = { ...baseItem , relatedAssets : [ tokenAsset ] } ;
143183 renderWithProvider (
144- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
184+ < WhatsHappeningExpandedCard
185+ item = { item }
186+ cardIndex = { 0 }
187+ cardWidth = { CARD_WIDTH }
188+ /> ,
145189 ) ;
146190 expect ( screen . queryByText ( 'Perps' ) ) . toBeNull ( ) ;
147191 expect ( screen . queryByText ( 'Trade' ) ) . toBeNull ( ) ;
@@ -150,7 +194,11 @@ describe('WhatsHappeningExpandedCard', () => {
150194 it ( 'renders both Tokens and Perps sections when there are separate token and perps-only assets' , ( ) => {
151195 const item = { ...baseItem , relatedAssets : [ tokenAsset , perpsOnlyAsset ] } ;
152196 renderWithProvider (
153- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
197+ < WhatsHappeningExpandedCard
198+ item = { item }
199+ cardIndex = { 0 }
200+ cardWidth = { CARD_WIDTH }
201+ /> ,
154202 ) ;
155203 expect ( screen . getByText ( 'Tokens' ) ) . toBeOnTheScreen ( ) ;
156204 expect ( screen . getByText ( 'Perps' ) ) . toBeOnTheScreen ( ) ;
@@ -161,7 +209,11 @@ describe('WhatsHappeningExpandedCard', () => {
161209 it ( 'does not duplicate a dual asset (caip19 + hlPerpsMarket) into the Perps section' , ( ) => {
162210 const item = { ...baseItem , relatedAssets : [ dualAsset ] } ;
163211 renderWithProvider (
164- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
212+ < WhatsHappeningExpandedCard
213+ item = { item }
214+ cardIndex = { 0 }
215+ cardWidth = { CARD_WIDTH }
216+ /> ,
165217 ) ;
166218 expect ( screen . getByText ( 'Tokens' ) ) . toBeOnTheScreen ( ) ;
167219 expect ( screen . getByText ( 'Buy' ) ) . toBeOnTheScreen ( ) ;
@@ -171,7 +223,11 @@ describe('WhatsHappeningExpandedCard', () => {
171223
172224 it ( 'renders neither section when relatedAssets is empty' , ( ) => {
173225 renderWithProvider (
174- < WhatsHappeningExpandedCard item = { baseItem } cardWidth = { CARD_WIDTH } /> ,
226+ < WhatsHappeningExpandedCard
227+ item = { baseItem }
228+ cardIndex = { 0 }
229+ cardWidth = { CARD_WIDTH }
230+ /> ,
175231 ) ;
176232 expect ( screen . queryByText ( 'Tokens' ) ) . toBeNull ( ) ;
177233 expect ( screen . queryByText ( 'Perps' ) ) . toBeNull ( ) ;
@@ -180,7 +236,11 @@ describe('WhatsHappeningExpandedCard', () => {
180236 it ( 'Trade button navigates to PerpsMarketDetails' , ( ) => {
181237 const item = { ...baseItem , relatedAssets : [ perpsOnlyAsset ] } ;
182238 renderWithProvider (
183- < WhatsHappeningExpandedCard item = { item } cardWidth = { CARD_WIDTH } /> ,
239+ < WhatsHappeningExpandedCard
240+ item = { item }
241+ cardIndex = { 0 }
242+ cardWidth = { CARD_WIDTH }
243+ /> ,
184244 ) ;
185245 fireEvent . press ( screen . getByText ( 'Trade' ) ) ;
186246 expect ( mockNavigate ) . toHaveBeenCalledWith ( Routes . PERPS . ROOT , {
0 commit comments