diff --git a/src/modules/cards/application/useCases/commands/UpdateNoteCardUseCase.ts b/src/modules/cards/application/useCases/commands/UpdateNoteCardUseCase.ts index 3528d79f..f48fbfc6 100644 --- a/src/modules/cards/application/useCases/commands/UpdateNoteCardUseCase.ts +++ b/src/modules/cards/application/useCases/commands/UpdateNoteCardUseCase.ts @@ -95,7 +95,7 @@ export class UpdateNoteCardUseCase ); } - if (!noteContent.authorId.equals(curatorId)) { + if (!card.curatorId.equals(curatorId)) { return err( new ValidationError('Only the author can update this note card'), ); @@ -110,7 +110,6 @@ export class UpdateNoteCardUseCase // Create new card content with updated note const updatedCardContentResult = CardContent.createNoteContent( request.note, - curatorId, ); if (updatedCardContentResult.isErr()) { return err(new ValidationError(updatedCardContentResult.error.message)); diff --git a/src/modules/cards/domain/services/CardLibraryService.ts b/src/modules/cards/domain/services/CardLibraryService.ts index 58d8da29..048c7d25 100644 --- a/src/modules/cards/domain/services/CardLibraryService.ts +++ b/src/modules/cards/domain/services/CardLibraryService.ts @@ -37,6 +37,14 @@ export class CardLibraryService implements DomainService { // Card is already in library, nothing to do return ok(card); } + const addToLibResult = card.addToLibrary(curatorId); + if (addToLibResult.isErr()) { + return err( + new CardLibraryValidationError( + `Failed to add card to library: ${addToLibResult.error.message}`, + ), + ); + } // Publish card to library const publishResult = await this.cardPublisher.publishCardToLibrary( @@ -52,8 +60,17 @@ export class CardLibraryService implements DomainService { } // Mark card as published in library - card.addToLibrary(curatorId); - card.markCardInLibraryAsPublished(curatorId, publishResult.value); + const markCardAsPublishedResult = card.markCardInLibraryAsPublished( + curatorId, + publishResult.value, + ); + if (markCardAsPublishedResult.isErr()) { + return err( + new CardLibraryValidationError( + `Failed to mark card as published in library: ${markCardAsPublishedResult.error.message}`, + ), + ); + } // Save updated card const saveResult = await this.cardRepository.save(card); diff --git a/src/modules/cards/tests/application/AddCardToLibraryUseCase.test.ts b/src/modules/cards/tests/application/AddCardToLibraryUseCase.test.ts index 43a17729..acf43311 100644 --- a/src/modules/cards/tests/application/AddCardToLibraryUseCase.test.ts +++ b/src/modules/cards/tests/application/AddCardToLibraryUseCase.test.ts @@ -9,6 +9,7 @@ import { CuratorId } from '../../domain/value-objects/CuratorId'; import { CollectionBuilder } from '../utils/builders/CollectionBuilder'; import { CardBuilder } from '../utils/builders/CardBuilder'; import { CardTypeEnum } from '../../domain/value-objects/CardType'; +import { CARD_ERROR_MESSAGES } from '../../domain/Card'; describe('AddCardToLibraryUseCase', () => { let useCase: AddCardToLibraryUseCase; @@ -19,6 +20,7 @@ describe('AddCardToLibraryUseCase', () => { let cardLibraryService: CardLibraryService; let cardCollectionService: CardCollectionService; let curatorId: CuratorId; + let curatorId2: CuratorId; beforeEach(() => { cardRepository = new InMemoryCardRepository(); @@ -44,6 +46,7 @@ describe('AddCardToLibraryUseCase', () => { ); curatorId = CuratorId.create('did:plc:testcurator').unwrap(); + curatorId2 = CuratorId.create('did:plc:testcurator2').unwrap(); }); afterEach(() => { @@ -65,11 +68,18 @@ describe('AddCardToLibraryUseCase', () => { throw new Error(`Failed to create card: ${card.message}`); } + const addToLibResult = card.addToLibrary(curatorId); + if (addToLibResult.isErr()) { + throw new Error( + `Failed to add card to library: ${addToLibResult.error.message}`, + ); + } + await cardRepository.save(card); const request = { cardId: card.cardId.getStringValue(), - curatorId: curatorId.value, + curatorId: curatorId2.value, }; const result = await useCase.execute(request); @@ -79,7 +89,7 @@ describe('AddCardToLibraryUseCase', () => { } expect(result.isErr()).toBe(true); expect(result.error.message).toContain( - 'URL cards can only be in one library', + CARD_ERROR_MESSAGES.URL_CARD_SINGLE_LIBRARY_ONLY, ); });