public void DeleteAudioAsync_FailedForDatabaseRemove_ThrowsExceptionWithMessage() { var audioRepo = Substitute.For <IAudioEntriesRepository>(); var metaRepo = Substitute.For <IAudioMetaEntriesRepository>(); var sut = new AudioServiceBuilder() .WithAudioEntriesRepo(audioRepo) .WithAudioMetaEntriesRepo(metaRepo) .Build(); audioRepo.GetAudioIncludingMetaAsync(Guid.Empty, CancellationToken.None) .Returns(new Audio()); audioRepo .When(x => x.Remove(Arg.Any <Audio>())) .Do(x => throw new Exception()); Func <Task> actualAction = async() => await sut.DeleteAudioAsync(Guid.Empty, CancellationToken.None); actualAction.Should().Throw <Exception>(); }
public async Task DeleteAudioAsync_ForExistingAudio_DeletesAsExpected() { var audioRepo = Substitute.For <IAudioEntriesRepository>(); audioRepo.GetById(Arg.Any <Guid>()).Returns(new Audio { Path = "Foo/Bar" }); var metaRepo = Substitute.For <IAudioMetaEntriesRepository>(); var localRepo = Substitute.For <IAudioLocalRepository>(); var sut = new AudioServiceBuilder() .WithAudioEntriesRepo(audioRepo) .WithAudioMetaEntriesRepo(metaRepo) .WithLocalRepo(localRepo) .Build(); audioRepo.GetAudioIncludingMetaAsync(Guid.Empty, CancellationToken.None) .Returns(new Audio()); await sut.DeleteAudioAsync(Guid.Empty, CancellationToken.None); audioRepo.Received().Remove(Arg.Any <Audio>()); audioRepo.Received().GetById(Arg.Any <Guid>()); metaRepo.Received().Remove(Arg.Any <AudioMeta>()); }