@accounter/server
Version:
Accounter GraphQL server
70 lines (67 loc) • 2.1 kB
text/typescript
import type {
financial_account_type,
} from '../../modules/financial-accounts/__generated__/financial-accounts.types.js';
import { makeUUIDLegacy } from '../../demo-fixtures/helpers/deterministic-uuid.js';
import { FixtureAccounts } from '../helpers/fixture-types.js';
/**
* Valid financial account types
*/
export const FINANCIAL_ACCOUNT_TYPES = [
'BANK_ACCOUNT',
'BANK_DEPOSIT_ACCOUNT',
'CREDIT_CARD',
'CRYPTO_WALLET',
'FOREIGN_SECURITIES',
] as const satisfies readonly financial_account_type[];
/**
* Financial account factory for test fixtures
*
* Creates a minimal financial account object ready for insertion via pgtyped.
*
* @param overrides - Optional overrides for any financial account field
* @returns Financial account object matching FixtureAccounts['accounts'][0] shape
*
* @remarks
* - accountNumber defaults to unique numeric string if not provided
* - name defaults to null (account name optional)
* - privateBusiness defaults to 'PRIVATE' (most common case)
* - ownerId defaults to null (must be set to valid business ID before insertion)
* - type defaults to 'BANK_ACCOUNT' (most common type)
*
* @example
* ```typescript
* // Minimal bank account
* const account = createFinancialAccount({
* accountNumber: '123456',
* ownerId: businessId,
* });
*
* // Credit card account
* const creditCard = createFinancialAccount({
* accountNumber: '4580-****-****-1234',
* type: 'CREDIT_CARD',
* ownerId: businessId,
* name: 'Company Visa',
* });
*
* // Crypto wallet
* const wallet = createFinancialAccount({
* accountNumber: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
* type: 'CRYPTO_WALLET',
* ownerId: businessId,
* privateBusiness: 'BUSINESS',
* });
* ```
*/
export function createFinancialAccount(
overrides?: Partial<FixtureAccounts['accounts'][number]>,
): FixtureAccounts['accounts'][number] {
return {
accountNumber: makeUUIDLegacy().slice(0, 13), // Default: unique short string
name: null,
privateBusiness: 'PRIVATE',
ownerId: null,
type: 'BANK_ACCOUNT',
...overrides,
};
}