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 result = removeTrackFromPLayListService.Execute(aTrackId, aPlaylistId);

            result.IsLeft.Should().BeTrue();
            result.IfLeft(error => error.Should().Be(DomainError.TrackIsNotInThePlayList));
            playListPersistence.DidNotReceive().Persist(Arg.Any <PlayList>());
            tracksNotifier.DidNotReceive().NotifyTrackHasRemovedFromPlayList(Arg.Any <string>(), Arg.Any <string>());
        }
        public void do_not_add_a_track_twice()
        {
            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 result = addTrackToPlayListService.Execute(aTrackId, aPlaylistId);

            result.IsLeft.Should().BeTrue();
            result.IfLeft(error => error.Should().Be(DomainError.CannotAddSameTrackTwice));
            playListPersistence.DidNotReceive().Persist(Arg.Any <PlayList>());
            tracksNotifier.DidNotReceive().NotifyTrackHasBeenAddedToPlayList(Arg.Any <string>(), Arg.Any <string>());
        }