public async void GetContent_given_albumid_with_images_of_invalid_type_returns_empty_album()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(true);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var albumId  = "example";
            var imageNum = 15;
            var album    = new ImgurAlbum {
                Images = new List <ImgurImage>(Enumerable.Repeat(new ImgurImage {
                    Type = "image/test"
                }, imageNum))
            };
            var handler = StubHttpClient.GetHandler();

            handler.AddResponse(new Uri($"https://api.imgur.com/3/album/{albumId}"), HttpStatusCode.OK, new ApiHelper <ImgurAlbum> {
                Data = album
            });

            var source = new ImgurAlbumSource(StubHttpClient.Create(handler), mock.Object);
            var result = await source.GetContent(albumId);

            Assert.NotNull(result);
            Assert.NotNull(result.Images);
            Assert.Equal(0, result.Images.Count);
            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Once);
        }
        public async void GetContent_when_ratelimiter_refuses_request_returns_empty_album()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(false);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var source = new ImgurAlbumSource(null, mock.Object);
            var result = await source.GetContent("test");

            Assert.NotNull(result);
            Assert.Empty(result.Images);
            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Once);
        }
        public async void GetContent_when_ratelimiter_allows_request_given_nonexistant_albumid_returns_empty_album()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(true);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var albumId = "example";
            var handler = StubHttpClient.GetHandler();

            handler.AddResponse(new Uri($"https://api.imgur.com/3/album/{albumId}"), HttpStatusCode.NotFound, new object());

            var source = new ImgurAlbumSource(StubHttpClient.Create(handler), mock.Object);
            var result = await source.GetContent(albumId);

            Assert.NotNull(result);
            Assert.Empty(result.Images);
            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Once);
        }