From 822825fd76b2c01acccbb9f3c8e6d21b34f5193c Mon Sep 17 00:00:00 2001 From: Wesley Finck Date: Mon, 27 Oct 2025 15:05:54 -0700 Subject: [PATCH] test: add test case for deleting URL card and associated note card Co-authored-by: aider (anthropic/claude-sonnet-4-20250514) --- .../RemoveCardFromLibraryUseCase.test.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/modules/cards/tests/application/RemoveCardFromLibraryUseCase.test.ts b/src/modules/cards/tests/application/RemoveCardFromLibraryUseCase.test.ts index 3321677b..fa3028fb 100644 --- a/src/modules/cards/tests/application/RemoveCardFromLibraryUseCase.test.ts +++ b/src/modules/cards/tests/application/RemoveCardFromLibraryUseCase.test.ts @@ -646,5 +646,39 @@ describe('RemoveCardFromLibraryUseCase', () => { const updatedCard = updatedCardResult.unwrap(); expect(updatedCard).toBeNull(); }); + + it('should delete URL card and associated note card when both have no library memberships', async () => { + const urlCard = await createCard(CardTypeEnum.URL, curatorId); + await addCardToLibrary(urlCard, curatorId); + + // Create associated note card + const noteCard = new CardBuilder() + .withType(CardTypeEnum.NOTE) + .withCuratorId(curatorId.value) + .withParentCard(urlCard.cardId) + .withUrl(urlCard.url!) + .build(); + + if (noteCard instanceof Error) throw noteCard; + + await cardRepository.save(noteCard); + await addCardToLibrary(noteCard, curatorId); + + // Remove URL card from library + const request = { + cardId: urlCard.cardId.getStringValue(), + curatorId: curatorId.value, + }; + + const result = await useCase.execute(request); + expect(result.isOk()).toBe(true); + + // Verify both cards were deleted + const urlCardResult = await cardRepository.findById(urlCard.cardId); + const noteCardResult = await cardRepository.findById(noteCard.cardId); + + expect(urlCardResult.unwrap()).toBeNull(); + expect(noteCardResult.unwrap()).toBeNull(); + }); }); }); -- 2.51.2