export interface UserBankAccount {
id: string;
type: string;
/** 수기계좌 여부 */
isManuallyCreated: boolean;
/**
* 하이픈, 마스킹 없는 계좌번호
* e.g. 80123404123456
* 수기계좌 일 경우 이 데이터는 undefined
*/
number?: string;
/** 메모 */
description?: string;
/** 사용자에게 표시되는 계좌명 (계좌 별칭 > 원본 데이터 상품명) */
accountDisplayName: string;
/** 마지막 동기화 날짜 (수기계좌인 경우 undefined) */
lastSyncedAtMs?: string;
/** 원본 계좌 상품명 (수가계좌인 경우 undefined)*/
originalAccountName?: string;
/**
* 계좌 종류
* enum: v1.bankaccount.UserBankAccountType
*/
typeEnum: string;
/** 계좌 잔액 */
balance: Amount;
/** 숨김 처리 여부 */
isHidden: boolean;
/** 휴면 여부 */
isDormant: boolean;
/** 만기 여부 */
isClosed: boolean;
/** 개설 일시 */
openedAtMs?: string;
/** 만기 일시 */
expiredAtMs?: string;
/** 마이데이터로 동기화 된 정보 (수기계좌인 경우 undefined) */
mydata?: BankAccountMydata;
organization: OrganizationMessage;
/** 마이너스 통장 여부 (수기계좌인 경우 undefined) */
isRevolvingCreditAccount?: boolean;
/** 마이너스 통장 금리 (is_revolving_credit_account 값이 true일 경우에만 존재) */
revolvingCreditAccountRate4f?: string;
/** 수기 적용 금리 */
manuallyCreatedOfferedRate3f?: string;
}
export interface Amount {
/** 금액 */
amount2f: string;
/** ISO 4217 Currency code */
currencyIdentifier: string;
}
export interface BankAccountMydata {
/** 전송요구여부 */
isConsent: boolean;
/** 적용 금리 */
offeredRate5f: string;
/** 월 납입액 */
monthlyPaidInAmount?: Amount;
/** 최종 납입 회차 */
latestInstallmentRoundNumber?: number;
/**
* 출금 가능 금액
* NOTE: 압류로 인해 출금이 불가능하거나 출금 한도 금액이 설정되어 있는 등의 경우에 계좌 잔액과 금액이 다를 수 있음.
*/
withdrawableAmount?: Amount;
/**
* 수신계좌 저축방식
* enum: v1.mydata.BankDepositAccountSavingMethod
*/
bankDepositAccountSavingMethodEnum: string;
}
export interface OrganizationMessage {
/** 기관구분 global unique id */
guid: string;
/** 기관명 */
name: string;
/**
* 기관 로고 이미지 URL
* bds-graphic: color/logo/original, color/logo/circle
*/
logoImageUrl: string;
/**
* 업권
* enum: v1.organization.Industry
*/
industryEnum: string;
/** 오브젝트 ID (하위호환성 유지 용도) */
objectid: string;
/**
* 세부업권
* enum: v1.organization.SubIndustry
*/
subIndustryEnum: string;
}
하나의 api response 가 주는 여러가지 case들이 존재한다.
isManuallyCreated
)인 경우 or 수기계좌가 아닌 경우mydata
field가 undefined 이다.BNK0001
인 경우 name 은 ㄴㄴ은행
이고 image path는 logo/nn-bank.png
위와 같은 상황을 전제로 테스트하기 위해서는 해당 api의 결과값을 케이스별로 재현해야 하는데, 각 결과에 대한 목 데이터를 만들기 너무어렵다.
e.g) 실제로 지난 스팩의 테스트 케이스 api 기준으로 약 30개의 시나리오,
1차로 해결해보기
const mockData = {
id: '1',
type: 'savings',
// ....
};
const data = { ...mockData, isManuallyCreated: true, type: 'A', mydata: undefined };