@@ -10,7 +10,11 @@ import { FiatExchangeEvents } from 'src/analytics/Events'
1010import ValoraAnalytics from 'src/analytics/ValoraAnalytics'
1111import { FiatConnectQuoteSuccess } from 'src/fiatconnect'
1212import { selectFiatConnectQuote } from 'src/fiatconnect/slice'
13- import { SettlementTime } from 'src/fiatExchanges/quotes/constants'
13+ import {
14+ DEFAULT_BANK_SETTLEMENT_ESTIMATION ,
15+ DEFAULT_MOBILE_MONEY_SETTLEMENT_ESTIMATION ,
16+ SettlementTime ,
17+ } from 'src/fiatExchanges/quotes/constants'
1418import FiatConnectQuote from 'src/fiatExchanges/quotes/FiatConnectQuote'
1519import { CICOFlow , PaymentMethod } from 'src/fiatExchanges/utils'
1620import { Currency } from 'src/utils/currencies'
@@ -229,22 +233,155 @@ describe('FiatConnectQuote', () => {
229233 } )
230234
231235 describe ( '.getTimeEstimation' , ( ) => {
232- it ( 'returns 1-3 days for bank account' , ( ) => {
236+ it ( 'returns default for bank account when no bounds are present' , ( ) => {
237+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
238+ quoteData . fiatAccount . BankAccount = {
239+ ...quoteData . fiatAccount . BankAccount ! ,
240+ settlementTimeLowerBound : undefined ,
241+ settlementTimeUpperBound : undefined ,
242+ }
233243 const quote = new FiatConnectQuote ( {
234244 flow : CICOFlow . CashIn ,
235- quote : mockFiatConnectQuotes [ 1 ] as FiatConnectQuoteSuccess ,
245+ quote : quoteData ,
236246 fiatAccountType : FiatAccountType . BankAccount ,
237247 } )
238- expect ( quote . getTimeEstimation ( ) ) . toEqual ( SettlementTime . ONE_TO_THREE_DAYS )
248+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( DEFAULT_BANK_SETTLEMENT_ESTIMATION )
239249 } )
240250
241- it ( 'returns 24 hours for mobile money' , ( ) => {
251+ it ( 'returns default for mobile money when no bounds are present ' , ( ) => {
242252 const quote = new FiatConnectQuote ( {
243253 flow : CICOFlow . CashIn ,
244254 quote : mockFiatConnectQuotes [ 4 ] as FiatConnectQuoteSuccess ,
245255 fiatAccountType : FiatAccountType . MobileMoney ,
246256 } )
247- expect ( quote . getTimeEstimation ( ) ) . toEqual ( SettlementTime . LESS_THAN_24_HOURS )
257+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( DEFAULT_MOBILE_MONEY_SETTLEMENT_ESTIMATION )
258+ } )
259+
260+ it ( 'when upper bound is less than one hour, "less than one hour" is shown' , ( ) => {
261+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
262+ quoteData . fiatAccount . BankAccount = {
263+ ...quoteData . fiatAccount . BankAccount ! ,
264+ settlementTimeLowerBound : '300' , // 5 minutes
265+ settlementTimeUpperBound : '600' , // 10 minutes
266+ }
267+ const quote = new FiatConnectQuote ( {
268+ flow : CICOFlow . CashIn ,
269+ quote : quoteData ,
270+ fiatAccountType : FiatAccountType . BankAccount ,
271+ } )
272+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( {
273+ settlementTime : SettlementTime . LESS_THAN_ONE_HOUR ,
274+ } )
275+ } )
276+
277+ it ( 'when lower bound is in minutes and upper bound is greater than one hour, "{lowerBound} to {upperBound} hours" is shown' , ( ) => {
278+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
279+ quoteData . fiatAccount . BankAccount = {
280+ ...quoteData . fiatAccount . BankAccount ! ,
281+ settlementTimeLowerBound : '300' , // 5 minutes
282+ settlementTimeUpperBound : '7200' , // 2 hours
283+ }
284+ const quote = new FiatConnectQuote ( {
285+ flow : CICOFlow . CashIn ,
286+ quote : quoteData ,
287+ fiatAccountType : FiatAccountType . BankAccount ,
288+ } )
289+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( {
290+ settlementTime : SettlementTime . X_TO_Y_HOURS ,
291+ lowerBound : 1 ,
292+ upperBound : 2 ,
293+ } )
294+ } )
295+
296+ it ( 'when lower bound is not present, "less than {upperBound}" is shown' , ( ) => {
297+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
298+ quoteData . fiatAccount . BankAccount = {
299+ ...quoteData . fiatAccount . BankAccount ! ,
300+ settlementTimeLowerBound : undefined ,
301+ settlementTimeUpperBound : '7200' , // 2 hours
302+ }
303+ const quote = new FiatConnectQuote ( {
304+ flow : CICOFlow . CashIn ,
305+ quote : quoteData ,
306+ fiatAccountType : FiatAccountType . BankAccount ,
307+ } )
308+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( {
309+ settlementTime : SettlementTime . LESS_THAN_X_HOURS ,
310+ upperBound : 2 ,
311+ } )
312+ } )
313+
314+ it ( 'when lower bound equals upper bound, "less than {upperBound}" is shown' , ( ) => {
315+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
316+ quoteData . fiatAccount . BankAccount = {
317+ ...quoteData . fiatAccount . BankAccount ! ,
318+ settlementTimeLowerBound : '7200' , // 2 hours
319+ settlementTimeUpperBound : '7200' , // 2 hours
320+ }
321+ const quote = new FiatConnectQuote ( {
322+ flow : CICOFlow . CashIn ,
323+ quote : quoteData ,
324+ fiatAccountType : FiatAccountType . BankAccount ,
325+ } )
326+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( {
327+ settlementTime : SettlementTime . LESS_THAN_X_HOURS ,
328+ upperBound : 2 ,
329+ } )
330+ } )
331+
332+ it ( 'when upper bound equals 24 hours, "less than 24 hours" is shown' , ( ) => {
333+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
334+ quoteData . fiatAccount . BankAccount = {
335+ ...quoteData . fiatAccount . BankAccount ! ,
336+ settlementTimeLowerBound : undefined ,
337+ settlementTimeUpperBound : '86400' , // 1 day
338+ }
339+ const quote = new FiatConnectQuote ( {
340+ flow : CICOFlow . CashIn ,
341+ quote : quoteData ,
342+ fiatAccountType : FiatAccountType . BankAccount ,
343+ } )
344+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( {
345+ settlementTime : SettlementTime . LESS_THAN_X_HOURS ,
346+ upperBound : 24 ,
347+ } )
348+ } )
349+
350+ it ( 'when upper bound is greater than 24 hours, but lower bound is less than day, "1 to {upperBound} days" shown' , ( ) => {
351+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
352+ quoteData . fiatAccount . BankAccount = {
353+ ...quoteData . fiatAccount . BankAccount ! ,
354+ settlementTimeLowerBound : '300' , // 5 minutes
355+ settlementTimeUpperBound : '86401' , // over 1 day (rounds up to two days)
356+ }
357+ const quote = new FiatConnectQuote ( {
358+ flow : CICOFlow . CashIn ,
359+ quote : quoteData ,
360+ fiatAccountType : FiatAccountType . BankAccount ,
361+ } )
362+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( {
363+ settlementTime : SettlementTime . X_TO_Y_DAYS ,
364+ lowerBound : 1 ,
365+ upperBound : 2 ,
366+ } )
367+ } )
368+
369+ it ( 'when upper bound is greater than 24 hours and lower bound equals upper, "less than {upperBound} days" shown' , ( ) => {
370+ const quoteData = _ . cloneDeep ( mockFiatConnectQuotes [ 1 ] ) as FiatConnectQuoteSuccess
371+ quoteData . fiatAccount . BankAccount = {
372+ ...quoteData . fiatAccount . BankAccount ! ,
373+ settlementTimeLowerBound : '86401' , // over 1 day (rounds up to two days)
374+ settlementTimeUpperBound : '86401' , // over 1 day (rounds up to two days)
375+ }
376+ const quote = new FiatConnectQuote ( {
377+ flow : CICOFlow . CashIn ,
378+ quote : quoteData ,
379+ fiatAccountType : FiatAccountType . BankAccount ,
380+ } )
381+ expect ( quote . getTimeEstimation ( ) ) . toEqual ( {
382+ settlementTime : SettlementTime . LESS_THAN_X_DAYS ,
383+ upperBound : 2 ,
384+ } )
248385 } )
249386 } )
250387
0 commit comments