public async Task Test_No_Next_Comic_When_Current_Is_Last() { //Arrange int mockId = 1000; int?nextValidId = null; var mockComicApi = new Mock <IXKCDApi>(); mockComicApi.Setup(api => api.GetFirstComicId()) .ReturnsAsync(GetValidMockedFirstComicId()); mockComicApi.Setup(api => api.GetComicOfTheDay()) .ReturnsAsync(GetValidMockedComicOfTheDay()); mockComicApi.Setup(api => api.GetComicById(nextValidId ?? default)) .ReturnsAsync(GetInvalidComic()); var comicRepository = new ComicRepository(mockComicApi.Object); //Act var result = await comicRepository.GetNextComicId(mockId); var nextComic = await comicRepository.GetComicById(nextValidId ?? default); var lastComicId = await comicRepository.GetLastComicId(); //Assert Assert.Null(result); Assert.Equal(nextValidId, result); Assert.Null(nextComic); Assert.Equal(lastComicId, mockId); }
public async Task Test_Next_Valid_Comic_When_Current_Is_Not_Last() { //Arrange int mockId = 403; int nextValidId = 406; var mockComicApi = new Mock <IXKCDApi>(); mockComicApi.Setup(api => api.GetFirstComicId()) .ReturnsAsync(GetValidMockedFirstComicId()); mockComicApi.Setup(api => api.GetComicOfTheDay()) .ReturnsAsync(GetValidMockedComicOfTheDay()); mockComicApi.Setup(api => api.GetComicById(404)) .ReturnsAsync(GetInvalidComic()); mockComicApi.Setup(api => api.GetComicById(405)) .ReturnsAsync(GetInvalidComic()); mockComicApi.Setup(api => api.GetComicById(nextValidId)) .ReturnsAsync(GetMockedComicById(nextValidId)); var comicRepository = new ComicRepository(mockComicApi.Object); //Act var result = await comicRepository.GetNextComicId(mockId); var nextComic = await comicRepository.GetComicById(nextValidId); //Assert Assert.NotNull(result); Assert.Equal(nextValidId, result); Assert.NotNull(nextComic); Assert.Equal(nextComic.Num, result); Assert.Equal($"Testing {result.Value}", nextComic.Alt); Assert.Equal($"Test comic {result.Value}", nextComic.SafeTitle); Assert.Equal($"Test comic {result.Value}", nextComic.Title); mockComicApi.Verify(mock => mock.GetComicById(mockId + 1), Times.Once()); mockComicApi.Verify(mock => mock.GetComicById(mockId + 2), Times.Once()); //Because of the fetch during the act mockComicApi.Verify(mock => mock.GetComicById(nextValidId), Times.Exactly(2)); mockComicApi.Verify(mock => mock.GetComicById(mockId + 4), Times.Never()); }