refactor: clarify nullable card metadata
This commit is contained in:
@@ -103,13 +103,9 @@ export class BankCardsService {
|
|||||||
id,
|
id,
|
||||||
name: dto.name ?? previous.name,
|
name: dto.name ?? previous.name,
|
||||||
bankName:
|
bankName:
|
||||||
dto.bankName === undefined
|
dto.bankName === undefined ? previous.bankName : dto.bankName,
|
||||||
? (previous.bankName ?? undefined)
|
|
||||||
: (dto.bankName ?? undefined),
|
|
||||||
lastFour:
|
lastFour:
|
||||||
dto.lastFour === undefined
|
dto.lastFour === undefined ? previous.lastFour : dto.lastFour,
|
||||||
? (previous.lastFour ?? undefined)
|
|
||||||
: (dto.lastFour ?? undefined),
|
|
||||||
paymentSystem:
|
paymentSystem:
|
||||||
dto.paymentSystem === undefined
|
dto.paymentSystem === undefined
|
||||||
? previous.paymentSystem
|
? previous.paymentSystem
|
||||||
|
|||||||
@@ -188,6 +188,17 @@ describe('Manual bank cards configured HTTP and real SQLite', () => {
|
|||||||
).toBe(0);
|
).toBe(0);
|
||||||
expect((await summary('2026-08', card.id)).net.value).toBe('0');
|
expect((await summary('2026-08', card.id)).net.value).toBe('0');
|
||||||
});
|
});
|
||||||
|
it('retains omitted metadata on a name-only patch and clears explicit nulls', async () => {
|
||||||
|
const card = await createCard('0', owner, { bankName: 'Bank', lastFour: '1234' });
|
||||||
|
const renamed = (await auth('patch', '/' + card.id)
|
||||||
|
.send({ version: card.version, name: 'Renamed' }).expect(200)).body as BankCardDto;
|
||||||
|
expect(renamed).toMatchObject({ name: 'Renamed', bankName: 'Bank', lastFour: '1234' });
|
||||||
|
const cleared = (await auth('patch', '/' + card.id)
|
||||||
|
.send({ version: renamed.version, bankName: null, lastFour: null }).expect(200)).body as BankCardDto;
|
||||||
|
expect(cleared).toMatchObject({ name: 'Renamed', bankName: null, lastFour: null });
|
||||||
|
expect(cleared.version).toBe(renamed.version + 1);
|
||||||
|
});
|
||||||
|
|
||||||
it('rejects explicit null on nonnullable write fields without changing values or versions', async () => {
|
it('rejects explicit null on nonnullable write fields without changing values or versions', async () => {
|
||||||
const card = await createCard();
|
const card = await createCard();
|
||||||
const expense = await createOp(op(card.id));
|
const expense = await createOp(op(card.id));
|
||||||
|
|||||||
Reference in New Issue
Block a user