@@ -110,7 +110,15 @@ describe("LargeScreenUpsellModal on Portfolio (integration)", () => {
110110 it ( "should auto-open the upsell modal when eligible and unblocked" , async ( ) => {
111111 const overrideInitialState = withFlagOverrides (
112112 {
113- largeScreenUpsell : { enabled : true } ,
113+ largeScreenUpsell : {
114+ enabled : true ,
115+ params : {
116+ opted_out : {
117+ enabled : true ,
118+ link : "https://shop.ledger.com/pages/ledger-nano-upgrade-program" ,
119+ } ,
120+ } ,
121+ } ,
114122 lwmProductTour : { enabled : false } ,
115123 lwmGenericAwarenessModal : { enabled : false } ,
116124 analyticsOptIn : { enabled : false } ,
@@ -131,7 +139,15 @@ describe("LargeScreenUpsellModal on Portfolio (integration)", () => {
131139 it ( "should track the modal view with shared analytics properties when it auto-opens" , async ( ) => {
132140 const overrideInitialState = withFlagOverrides (
133141 {
134- largeScreenUpsell : { enabled : true } ,
142+ largeScreenUpsell : {
143+ enabled : true ,
144+ params : {
145+ opted_out : {
146+ enabled : true ,
147+ link : "https://shop.ledger.com/pages/ledger-nano-upgrade-program" ,
148+ } ,
149+ } ,
150+ } ,
135151 lwmProductTour : { enabled : false } ,
136152 lwmGenericAwarenessModal : { enabled : false } ,
137153 analyticsOptIn : { enabled : false } ,
@@ -156,7 +172,15 @@ describe("LargeScreenUpsellModal on Portfolio (integration)", () => {
156172 it ( "should track opted-in offer properties when personalized recommendations are enabled" , async ( ) => {
157173 const overrideInitialState = withFlagOverrides (
158174 {
159- largeScreenUpsell : { enabled : true } ,
175+ largeScreenUpsell : {
176+ enabled : true ,
177+ params : {
178+ opted_in : {
179+ enabled : true ,
180+ link : "https://shop.ledger.com/pages/ledger-nano-upgrade-program" ,
181+ } ,
182+ } ,
183+ } ,
160184 lwmProductTour : { enabled : false } ,
161185 lwmGenericAwarenessModal : { enabled : false } ,
162186 analyticsOptIn : { enabled : false } ,
@@ -180,10 +204,76 @@ describe("LargeScreenUpsellModal on Portfolio (integration)", () => {
180204 } ) ;
181205 } ) ;
182206
207+ it ( "should not open when the opted-out variant is disabled" , async ( ) => {
208+ const overrideInitialState = withFlagOverrides (
209+ {
210+ largeScreenUpsell : {
211+ enabled : true ,
212+ params : {
213+ opted_out : {
214+ enabled : false ,
215+ link : "https://shop.ledger.com/pages/opted-out-offer" ,
216+ } ,
217+ } ,
218+ } ,
219+ lwmProductTour : { enabled : false } ,
220+ lwmGenericAwarenessModal : { enabled : false } ,
221+ analyticsOptIn : { enabled : false } ,
222+ } ,
223+ withKnownDeviceModels ( [ DeviceModelId . nanoS ] ) ,
224+ ) ;
225+
226+ const { store } = render ( < IntegrationNavigator /> , { overrideInitialState } ) ;
227+
228+ expect ( await screen . findByTestId ( "large-screen-upsell-integration-portfolio" ) ) . toBeVisible ( ) ;
229+ act ( ( ) => jest . runOnlyPendingTimers ( ) ) ;
230+ expect ( screen . queryByTestId ( "large-screen-upsell-modal-drawer" ) ) . toBeNull ( ) ;
231+ expect ( store . getState ( ) . largeScreenUpsellModal . retries ) . toBe ( 0 ) ;
232+ expect ( jest . mocked ( analyticsScreen ) ) . not . toHaveBeenCalled ( ) ;
233+ } ) ;
234+
235+ it ( "should not open when the opted-in variant is disabled" , async ( ) => {
236+ const overrideInitialState = withFlagOverrides (
237+ {
238+ largeScreenUpsell : {
239+ enabled : true ,
240+ params : {
241+ opted_in : {
242+ enabled : false ,
243+ link : "https://shop.ledger.com/pages/opted-in-offer" ,
244+ } ,
245+ } ,
246+ } ,
247+ lwmProductTour : { enabled : false } ,
248+ lwmGenericAwarenessModal : { enabled : false } ,
249+ analyticsOptIn : { enabled : false } ,
250+ } ,
251+ withKnownDeviceModels ( [ DeviceModelId . nanoS ] , {
252+ personalizedRecommendationsEnabled : true ,
253+ } ) ,
254+ ) ;
255+
256+ const { store } = render ( < IntegrationNavigator /> , { overrideInitialState } ) ;
257+
258+ expect ( await screen . findByTestId ( "large-screen-upsell-integration-portfolio" ) ) . toBeVisible ( ) ;
259+ act ( ( ) => jest . runOnlyPendingTimers ( ) ) ;
260+ expect ( screen . queryByTestId ( "large-screen-upsell-modal-drawer" ) ) . toBeNull ( ) ;
261+ expect ( store . getState ( ) . largeScreenUpsellModal . retries ) . toBe ( 0 ) ;
262+ expect ( jest . mocked ( analyticsScreen ) ) . not . toHaveBeenCalled ( ) ;
263+ } ) ;
264+
183265 it ( "should track button_clicked with shared analytics properties when the CTA is pressed" , async ( ) => {
184266 const overrideInitialState = withFlagOverrides (
185267 {
186- largeScreenUpsell : { enabled : true } ,
268+ largeScreenUpsell : {
269+ enabled : true ,
270+ params : {
271+ opted_out : {
272+ enabled : true ,
273+ link : "https://shop.ledger.com/pages/ledger-nano-upgrade-program" ,
274+ } ,
275+ } ,
276+ } ,
187277 lwmProductTour : { enabled : false } ,
188278 lwmGenericAwarenessModal : { enabled : false } ,
189279 analyticsOptIn : { enabled : false } ,
@@ -210,7 +300,15 @@ describe("LargeScreenUpsellModal on Portfolio (integration)", () => {
210300 it ( "should track modal_dismissed with dismissMethod close button exactly once when the header close button is pressed" , async ( ) => {
211301 const overrideInitialState = withFlagOverrides (
212302 {
213- largeScreenUpsell : { enabled : true } ,
303+ largeScreenUpsell : {
304+ enabled : true ,
305+ params : {
306+ opted_out : {
307+ enabled : true ,
308+ link : "https://shop.ledger.com/pages/ledger-nano-upgrade-program" ,
309+ } ,
310+ } ,
311+ } ,
214312 lwmProductTour : { enabled : false } ,
215313 lwmGenericAwarenessModal : { enabled : false } ,
216314 analyticsOptIn : { enabled : false } ,
@@ -243,7 +341,15 @@ describe("LargeScreenUpsellModal on Portfolio (integration)", () => {
243341 it ( "should auto-open the upsell modal when product tour is enabled but onboarding is not completed" , async ( ) => {
244342 const overrideInitialState = withFlagOverrides (
245343 {
246- largeScreenUpsell : { enabled : true } ,
344+ largeScreenUpsell : {
345+ enabled : true ,
346+ params : {
347+ opted_out : {
348+ enabled : true ,
349+ link : "https://shop.ledger.com/pages/ledger-nano-upgrade-program" ,
350+ } ,
351+ } ,
352+ } ,
247353 lwmProductTour : { enabled : true } ,
248354 lwmGenericAwarenessModal : { enabled : false } ,
249355 analyticsOptIn : { enabled : false } ,
@@ -267,7 +373,15 @@ describe("LargeScreenUpsellModal on Portfolio (integration)", () => {
267373 it ( "should not auto-open the upsell modal when a competing app-start modal opens after mount" , async ( ) => {
268374 const overrideInitialState = withFlagOverrides (
269375 {
270- largeScreenUpsell : { enabled : true } ,
376+ largeScreenUpsell : {
377+ enabled : true ,
378+ params : {
379+ opted_out : {
380+ enabled : true ,
381+ link : "https://shop.ledger.com/pages/ledger-nano-upgrade-program" ,
382+ } ,
383+ } ,
384+ } ,
271385 lwmProductTour : { enabled : false } ,
272386 lwmGenericAwarenessModal : { enabled : false } ,
273387 analyticsOptIn : { enabled : false } ,
0 commit comments