refactor: clarify nullable card metadata

This commit is contained in:
2026-10-01 20:53:00 +03:00
parent fb2e851e7e
commit 190eb90ffe
2 changed files with 13 additions and 6 deletions
+11
View File
@@ -188,6 +188,17 @@ describe('Manual bank cards configured HTTP and real SQLite', () => {
).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 () => {
const card = await createCard();
const expense = await createOp(op(card.id));