@@ -220,4 +220,76 @@ describe('useTimeSensitiveCards', () => {
220220 expect ( result . current . cardsWithFraud . at ( 0 ) ?. cardID ) . toBe ( 1 ) ;
221221 expect ( result . current . shouldShowReviewCardFraud ) . toBe ( true ) ;
222222 } ) ;
223+
224+ it ( 'should exclude cards with custom $0 limit from shipping address to-dos' , async ( ) => {
225+ const zeroLimitCard : Card = {
226+ ...createRandomExpensifyCard ( 1 , { state : CONST . EXPENSIFY_CARD . STATE . STATE_NOT_ISSUED } ) ,
227+ nameValuePairs : { hasCustomUnapprovedExpenseLimit : true , unapprovedExpenseLimit : 0 } as Card [ 'nameValuePairs' ] ,
228+ } ;
229+ const cardList : CardList = { '1' : zeroLimitCard } ;
230+
231+ await Onyx . merge ( ONYXKEYS . CARD_LIST , cardList ) ;
232+ await waitForBatchedUpdates ( ) ;
233+
234+ const { result} = renderHook ( ( ) => useTimeSensitiveCards ( ) ) ;
235+
236+ expect ( result . current . cardsNeedingShippingAddress ) . toHaveLength ( 0 ) ;
237+ expect ( result . current . shouldShowAddShippingAddress ) . toBe ( false ) ;
238+ } ) ;
239+
240+ it ( 'should exclude cards with custom $0 limit from activation to-dos' , async ( ) => {
241+ const zeroLimitCard : Card = {
242+ ...createRandomExpensifyCard ( 1 , { state : CONST . EXPENSIFY_CARD . STATE . NOT_ACTIVATED } ) ,
243+ nameValuePairs : { hasCustomUnapprovedExpenseLimit : true , unapprovedExpenseLimit : 0 } as Card [ 'nameValuePairs' ] ,
244+ } ;
245+ const cardList : CardList = { '1' : zeroLimitCard } ;
246+
247+ await Onyx . merge ( ONYXKEYS . CARD_LIST , cardList ) ;
248+ await waitForBatchedUpdates ( ) ;
249+
250+ const { result} = renderHook ( ( ) => useTimeSensitiveCards ( ) ) ;
251+
252+ expect ( result . current . cardsNeedingActivation ) . toHaveLength ( 0 ) ;
253+ expect ( result . current . shouldShowActivateCard ) . toBe ( false ) ;
254+ } ) ;
255+
256+ it ( 'should not exclude cards without custom limit even if unapprovedExpenseLimit is 0' , async ( ) => {
257+ const groupLimitCard : Card = {
258+ ...createRandomExpensifyCard ( 1 , { state : CONST . EXPENSIFY_CARD . STATE . NOT_ACTIVATED } ) ,
259+ nameValuePairs : { hasCustomUnapprovedExpenseLimit : false , unapprovedExpenseLimit : 0 } as Card [ 'nameValuePairs' ] ,
260+ } ;
261+ const cardList : CardList = { '1' : groupLimitCard } ;
262+
263+ await Onyx . merge ( ONYXKEYS . CARD_LIST , cardList ) ;
264+ await waitForBatchedUpdates ( ) ;
265+
266+ const { result} = renderHook ( ( ) => useTimeSensitiveCards ( ) ) ;
267+
268+ expect ( result . current . cardsNeedingActivation ) . toHaveLength ( 1 ) ;
269+ expect ( result . current . shouldShowActivateCard ) . toBe ( true ) ;
270+ } ) ;
271+
272+ it ( 'should still show fraud alerts for cards with custom $0 limit' , async ( ) => {
273+ const zeroLimitFraudCard : Card = {
274+ ...createRandomExpensifyCard ( 1 , {
275+ state : CONST . EXPENSIFY_CARD . STATE . OPEN ,
276+ fraud : CONST . EXPENSIFY_CARD . FRAUD_TYPES . DOMAIN ,
277+ possibleFraud : { triggerAmount : 1000 , triggerMerchant : 'SUSPICIOUS MERCHANT' , currency : 'USD' , fraudAlertReportID : 123456 } ,
278+ } ) ,
279+ nameValuePairs : {
280+ hasCustomUnapprovedExpenseLimit : true ,
281+ unapprovedExpenseLimit : 0 ,
282+ possibleFraud : { triggerAmount : 1000 , triggerMerchant : 'SUSPICIOUS MERCHANT' , currency : 'USD' , fraudAlertReportID : 123456 } ,
283+ } as Card [ 'nameValuePairs' ] ,
284+ } ;
285+ const cardList : CardList = { '1' : zeroLimitFraudCard } ;
286+
287+ await Onyx . merge ( ONYXKEYS . CARD_LIST , cardList ) ;
288+ await waitForBatchedUpdates ( ) ;
289+
290+ const { result} = renderHook ( ( ) => useTimeSensitiveCards ( ) ) ;
291+
292+ expect ( result . current . cardsWithFraud ) . toHaveLength ( 1 ) ;
293+ expect ( result . current . shouldShowReviewCardFraud ) . toBe ( true ) ;
294+ } ) ;
223295} ) ;
0 commit comments