public void AlbumDetailsAreCorrect() { //Arrange var albumSubset = _albums.Where(a => a["userId"].Value <int>() == 5).Take(2) .Concat(_albums.Where(a => a["userId"].Value <int>() == 8).Take(2)) .ToList(); //Act var result = new PlaceholderDatasetCombiner(albumSubset, _photos, _logger); //Assert var output = new Output(); output.WrapLine("Input JSON:"); output.WriteLine(); foreach (var albumJson in albumSubset) { output.WrapLine(albumJson.ToString(Formatting.Indented)); } output.WriteLine(); output.WriteLine(); output.WrapLine("Extracted Album Data:"); output.WriteLine(); output.FormatTable(result.Dataset.Select(album => new { album.Id, album.UserId, album.Title })); output.Report.Verify(); }
public void AllPhotosAreExtracted() { //Act var result = new PlaceholderDatasetCombiner(_albums, _photos, _logger); //Assert result.Dataset.SelectMany(a => a.Photos).Count().Should().Be(_photos.Count); }
public void AllAlbumsAreExtracted() { //Act var result = new PlaceholderDatasetCombiner(_albums, _photos, _logger); //Assert result.Dataset.Count.Should().Be(_albums.Count); }
public void InvalidDataIsLogged() { //Arrange var albumProperties = _albums.SelectMany(obj => obj.Properties().Select(p => p.Name)).Distinct().ToList(); var photoProperties = _photos.SelectMany(obj => obj.Properties().Select(p => p.Name)).Distinct().ToList(); var goodAlbum = _albums.Skip(albumProperties.Count).Take(1).ToList(); JObject BreakJProperty(JObject jObj, string prop) { if (jObj[prop] is JValue valueToken) { switch (valueToken.Type) { case JTokenType.String: jObj[prop] = 1; break; case JTokenType.Uri: case JTokenType.Integer: jObj[prop] = "bad"; break; } } return(jObj); }; var brokenAlbums = _albums.Take(albumProperties.Count) .Zip(albumProperties, BreakJProperty) .Concat(goodAlbum) .ToList(); var goodAlbumId = goodAlbum[0]["id"]; var goodAlbumPhotos = _photos.Where(p => p["albumId"].Equals(goodAlbumId)); var brokenPhotos = goodAlbumPhotos.Take(photoProperties.Count) .Zip(photoProperties, BreakJProperty) .ToList(); var fakeLog = new FakeLog(l => true); var recordingLogger = new FakeLogger(fakeLog, "test"); //Act var result = new PlaceholderDatasetCombiner(brokenAlbums, brokenPhotos, recordingLogger); //Assert fakeLog.Report.Verify(); }
public void PhotoDetailsAreCorrect() { //Arrange var photoSubset = _photos.Where(p => p["albumId"].Value <int>() == 10).Take(2) .Concat(_photos.Where(p => p["albumId"].Value <int>() == 75).Take(2)) .ToList(); //Act var result = new PlaceholderDatasetCombiner(_albums, photoSubset, _logger); //Assert var buffer = new OutputBuffer() { BufferWidth = 132 }; var output = new Output(buffer); output.WrapLine("Input JSON:"); output.WriteLine(); foreach (var albumJson in photoSubset) { output.WrapLine(albumJson.ToString(Formatting.Indented)); } output.WriteLine(); output.WriteLine(); output.WrapLine("Extracted Photo Data:"); output.WriteLine(); var photoDetails = result.Dataset .SelectMany(album => album.Photos .Select(p => new { AlbumId = album.Id, PhotoId = p.Id, p.Title, p.ThumbnailUri, p.Uri })); output.FormatTable(photoDetails); output.Report.Verify(); }
public void MissingDataIsLogged() { //Arrange var albumProperties = _albums.SelectMany(obj => obj.Properties().Select(p => p.Name)).Distinct().ToList(); var photoProperties = _photos.SelectMany(obj => obj.Properties().Select(p => p.Name)).Distinct().ToList(); var goodAlbum = _albums.Skip(albumProperties.Count).Take(1).ToList(); var brokenAlbums = _albums.Take(albumProperties.Count) .Zip(albumProperties, (jObj, prop) => { jObj.Remove(prop); return(jObj); }) .Concat(goodAlbum) .ToList(); var goodAlbumId = goodAlbum[0]["id"]; var goodAlbumPhotos = _photos.Where(p => p["albumId"].Equals(goodAlbumId)); var brokenPhotos = goodAlbumPhotos.Take(photoProperties.Count) .Zip(photoProperties, (jObj, prop) => { jObj.Remove(prop); return(jObj); }) .ToList(); var fakeLog = new FakeLog(l => true); var recordingLogger = new FakeLogger(fakeLog, "test"); //Act var result = new PlaceholderDatasetCombiner(brokenAlbums, brokenPhotos, recordingLogger); //Assert fakeLog.Report.Verify(); }