Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 34 additions & 32 deletions tests/unit/BankAccountUtilsTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ import INPUT_IDS from '@src/types/form/ReimbursementAccountForm';
import type {Account, BankAccountList, Session} from '@src/types/onyx';
import type AccountData from '@src/types/onyx/AccountData';

import createMock from '../utils/createMock';

describe('BankAccountUtils', () => {
describe('isPersonalBankAccountMissingInfo', () => {
const completeAccountData: AccountData = {
Expand Down Expand Up @@ -327,25 +329,25 @@ describe('BankAccountUtils', () => {

describe('hasPartiallySetupBankAccount', () => {
it('returns true when at least one account is in SETUP state', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
accountOne: {accountData: {state: CONST.BANK_ACCOUNT.STATE.OPEN}, bankCurrency: 'USD', bankCountry: 'US'},
accountTwo: {accountData: {state: CONST.BANK_ACCOUNT.STATE.SETUP}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(hasPartiallySetupBankAccount(bankAccountList)).toBe(true);
});

it('returns true when at least one account is in VERIFYING state', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
accountOne: {accountData: {state: CONST.BANK_ACCOUNT.STATE.VERIFYING}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(hasPartiallySetupBankAccount(bankAccountList)).toBe(true);
});

it('returns false when all accounts are in OPEN state', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
accountOne: {accountData: {state: CONST.BANK_ACCOUNT.STATE.OPEN}, bankCurrency: 'USD', bankCountry: 'US'},
accountTwo: {accountData: {state: CONST.BANK_ACCOUNT.STATE.OPEN}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(hasPartiallySetupBankAccount(bankAccountList)).toBe(false);
});

Expand Down Expand Up @@ -391,7 +393,7 @@ describe('BankAccountUtils', () => {

describe('hasPersonalBankAccountMissingInfo', () => {
it('returns true when at least one account has missing info', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
accountOne: {
accountData: {
type: CONST.BANK_ACCOUNT.TYPE.PERSONAL,
Expand All @@ -401,12 +403,12 @@ describe('BankAccountUtils', () => {
bankCurrency: 'USD',
bankCountry: 'US',
},
} as unknown as BankAccountList;
});
expect(hasPersonalBankAccountMissingInfo(bankAccountList)).toBe(true);
});

it('returns false when all accounts have complete info', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
accountOne: {
accountData: {
type: CONST.BANK_ACCOUNT.TYPE.PERSONAL,
Expand All @@ -425,7 +427,7 @@ describe('BankAccountUtils', () => {
bankCurrency: 'USD',
bankCountry: 'US',
},
} as unknown as BankAccountList;
});
expect(hasPersonalBankAccountMissingInfo(bankAccountList)).toBe(false);
});

Expand All @@ -438,7 +440,7 @@ describe('BankAccountUtils', () => {
});

it('returns false when account uses NewDot legalFirstName/legalLastName naming', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
accountOne: {
accountData: {
type: CONST.BANK_ACCOUNT.TYPE.PERSONAL,
Expand All @@ -457,7 +459,7 @@ describe('BankAccountUtils', () => {
bankCurrency: 'USD',
bankCountry: 'US',
},
} as unknown as BankAccountList;
});
expect(hasPersonalBankAccountMissingInfo(bankAccountList)).toBe(false);
});
});
Expand All @@ -477,9 +479,9 @@ describe('BankAccountUtils', () => {
};

it('returns all steps when all data is present', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {accountData: {additionalData: fullAdditionalData}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
const result = getCompletedStepsForBankAccount(bankAccountList, bankAccountID);
expect(result).toEqual([PERSONAL_INFO_STEP.NAME, PERSONAL_INFO_STEP.ADDRESS, PERSONAL_INFO_STEP.PHONE]);
});
Expand All @@ -494,77 +496,77 @@ describe('BankAccountUtils', () => {
});

it('returns only NAME step when only name fields are present', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {accountData: {additionalData: {firstName: 'John', lastName: 'Doe'}}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([PERSONAL_INFO_STEP.NAME]);
});

it('returns only ADDRESS step when only address fields are present', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {
accountData: {additionalData: {addressStreet: '123 Main St', addressCity: 'New York', addressState: 'NY', addressZipCode: '10001'}},
bankCurrency: 'USD',
bankCountry: 'US',
},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([PERSONAL_INFO_STEP.ADDRESS]);
});

it('returns only PHONE step when only phone is present', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {accountData: {additionalData: {companyPhone: '+15551234567'}}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([PERSONAL_INFO_STEP.PHONE]);
});

it('returns empty array when accountData has no additionalData', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {accountData: {}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([]);
});

it('does not include NAME when only firstName is present (lastName missing)', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {accountData: {additionalData: {firstName: 'John'}}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([]);
});

it('returns multiple steps when some groups are complete', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {
accountData: {additionalData: {firstName: 'John', lastName: 'Doe', companyPhone: '+15551234567'}},
bankCurrency: 'USD',
bankCountry: 'US',
},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([PERSONAL_INFO_STEP.NAME, PERSONAL_INFO_STEP.PHONE]);
});

it('does not include ADDRESS when one address field is missing', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {
accountData: {additionalData: {addressStreet: '123 Main St', addressCity: 'New York', addressState: 'NY'}},
bankCurrency: 'USD',
bankCountry: 'US',
},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([]);
});

it('includes NAME step when only NewDot legalFirstName/legalLastName are present', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {accountData: {additionalData: {legalFirstName: 'John', legalLastName: 'Doe'}}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([PERSONAL_INFO_STEP.NAME]);
});

it('does not include NAME when only legalFirstName is present (legalLastName missing)', () => {
const bankAccountList = {
const bankAccountList = createMock<BankAccountList>({
[bankAccountKey]: {accountData: {additionalData: {legalFirstName: 'John'}}, bankCurrency: 'USD', bankCountry: 'US'},
} as unknown as BankAccountList;
});
expect(getCompletedStepsForBankAccount(bankAccountList, bankAccountID)).toEqual([]);
});
});
Expand Down
Loading
Loading