public TestPlaceholderDatasetCombiner()
        {
            var fetcher = new FakePlaceholderFetcher();

            _logger = NullLogger.Instance;
            _albums = JsonArrayLoader.GetObjects(fetcher.GetAlbumsAsync().Result, _logger).ToList();
            _photos = JsonArrayLoader.GetObjects(fetcher.GetPhotosAsync().Result, _logger).ToList();
        }
        public void JsonObjectsAreReturned()
        {
            //Arrange
            var fetcher = new FakePlaceholderFetcher();
            var json    = fetcher.GetAlbumsAsync().Result;
            var array   = JArray.Parse(json);

            //Act
            var objects = JsonArrayLoader.GetObjects(json, NullLogger.Instance);

            //Assert
            objects.Count().Should().Be(array.Count);
        }
        public TestPlaceholderDatasetBuilder()
        {
            //Trim the test data
            IEnumerable <JObject> AlbumFilter(IEnumerable <JObject> albums)
            {
                return(albums.GroupBy(a => a["userId"])
                       .Take(2)                      //only take two users
                       .SelectMany(g => g.Take(2))); //only take the first two albums for each user
            }

            IEnumerable <JObject> PhotoFilter(IEnumerable <JObject> photos)
            {
                return(photos.GroupBy(p => p["albumId"])
                       .SelectMany(g => g.Take(2))); //Take two photos from each album
            }

            //The test data has been trimmed to just the first 2 photos in each album, and the albums have been trimmed to 2 users with 2 albums each.
            _fetcher = new FakePlaceholderFetcher(AlbumFilter, PhotoFilter);

            _fakeLog = new FakeLog(l => true);
            _logger  = new FakeLogger <PlaceholderDatasetBuilder>(_fakeLog, "Test");
        }