public Either <DomainError, CommandResult> Handle(RemoveTrackFromPlayList command) { var playList = playListPersistence.GetPlayList(command.PlaylistId); var error = playList.Remove(command.TrackId); if (error.IsSome) { return(error.ValueUnsafe()); } playListPersistence.Persist(playList); eventPublisher.Publish(playList.Events()); return(CommandResult.Success); }
public void do_not_remove_a_track_when_it_is_not_already_in_the_play_list() { var aTrackId = ATrack.Id; var aPlaylistId = APlaylist.Id; var aPlayList = new PlayListBuilder() .WithId(aPlaylistId) .Build(); playListPersistence.GetPlayList(aPlaylistId).Returns(aPlayList); var command = new RemoveTrackFromPlayList(aTrackId, aPlaylistId); var result = removeTrackFromPLayListCommandHandler.Handle(command); result.IsLeft.Should().BeTrue(); result.IfLeft(error => error.Should().Be(DomainError.TrackIsNotInThePlayList)); playListPersistence.DidNotReceive().Persist(Arg.Any <PlayList>()); eventPublisher.DidNotReceive().Publish(Arg.Any <List <Event> >()); }
public void remove_an_existing_track_from_a_play_list() { var aTrackId = ATrack.Id; var aPlaylistId = APlaylist.Id; var aPlayList = new PlayListBuilder() .WithId(aPlaylistId) .AddTrack(new TrackBuilder() .WithId(aTrackId) .Build()) .Build(); playListPersistence.GetPlayList(aPlaylistId).Returns(aPlayList); var command = new RemoveTrackFromPlayList(aTrackId, aPlaylistId); var result = removeTrackFromPLayListCommandHandler.Handle(command); result.IsRight.Should().BeTrue(); VerifyAnEmptyPlayListHasBeenPersistedWith(aPlaylistId); VerifyEventHasBeenRaised(new TrackHasBeenRemovedFromPlayList(aTrackId, aPlaylistId), eventPublisher); }
public Either <DomainError, CommandResult> Process(RemoveTrackFromPlayList command) { var service = tracksCommandHandlerCreator.CreateRemoveTrackFromPLayListCommandHandler(); return(service.Handle(command)); }