public void DateDiagnosticsAreReported() { //Arrange var collection = new SnapshotCollection(); var beforeDates = new[] { DateTime.Parse("2020-10-11 10:35"), DateTime.Parse("2020-10-11 10:36"), DateTime.Parse("2020-10-11 10:37"), DateTime.Parse("2020-10-11 10:38"), }; var afterDates = new[] { DateTime.Parse("2020-10-11 10:35"), DateTime.Parse("2020-10-11 10:36"), DateTime.Parse("2020-10-11 10:39"), DateTime.Parse("2020-10-11 10:40"), DateTime.Parse("2020-10-11 10:41"), }; var beforeBuilder = collection.NewSnapshot("before"); collection.DefineTable("Dates").PrimaryKey("Key").IsUnpredictable("Date"); beforeDates.Select((bd, ix) => new { Key = ix, Date = bd, Other = "o", OtherDate = DateTime.MinValue }).ToSnapshotTable(beforeBuilder, "Dates"); var deleteRow = beforeBuilder.AddNewRow("Dates"); deleteRow["Key"] = 100; deleteRow["Date"] = DateTime.Parse("2020-10-18 11:19"); deleteRow["Other"] = "o"; deleteRow["OtherDate"] = DateTime.MinValue; var afterBuilder = collection.NewSnapshot("after"); afterDates.Select((bd, ix) => new { Key = ix, Date = bd, Other = "a", OtherDate = DateTime.MaxValue }).ToSnapshotTable(afterBuilder, "Dates"); var before = collection.GetSnapshot("before"); var after = collection.GetSnapshot("after"); var differences = SnapshotDifferenceAnalyser.ExtractDifferences(collection, before, after); var output = new Output(); //Act var ranges = new List <NamedTimeRange> { new NamedTimeRange(beforeDates[0], beforeDates[3], "before"), new NamedTimeRange(afterDates[2], afterDates[3], "after"), }; DateDiagnosticReporter.Report(output, ranges, before, after, differences); //Assert output.Report.Verify(); }
public void DeletedRowMakesSnapshotUnequal() { //Arrange var before = MakeSnapshot("Test", 1, 5); var after = MakeSnapshot("Test2", 2, 4); //Act var result = SnapshotDifferenceAnalyser.Match(_collection, before, after); //Assert result.Should().BeFalse(); }
public void EqualSnapshotsReturnEqualStatus() { //Arrange var before = MakeSnapshot("Test"); var after = MakeSnapshot("Test2"); //Act var result = SnapshotDifferenceAnalyser.Match(_collection, before, after); //Assert result.Should().BeTrue(); }
public void NonKeyValueDifferenceMakesSnapshotUnequal() { //Arrange var before = MakeSnapshot("Test", 1, 1, MakeValueSet(5)); var after = MakeSnapshot("Test2", 1, 1, MakeValueSet(6)); //Act var result = SnapshotDifferenceAnalyser.Match(_collection, before, after); //Assert result.Should().BeFalse(); }
public void SnapshotShouldNotConsiderExcludedTables() { //Arrange var before = MakeSnapshot("Test", 1, 1, MakeValueSet(5)); var after = MakeSnapshot("Test2", 1, 1, MakeValueSet(6)); _collection.DefineTable(TableName).ExcludeFromComparison(); //Act var result = SnapshotDifferenceAnalyser.Match(_collection, before, after); //Assert result.Should().BeTrue(); //it can only be a match if the table is ignored }
public void SubstitutionsCanBeSuppressed() { //Arrange var collection = new SnapshotCollection(); collection.DefineTable("TheTable") .PrimaryKey("Id") .IsUnpredictable("Id"); void AddRow(SnapshotBuilder snapshot, int id, string name) { var add = snapshot.AddNewRow("TheTable"); add["Id"] = id; add["Name"] = name; } void AddData(SnapshotBuilder snapshot, string names) { var id = 1; foreach (var name in names.Split(',')) { AddRow(snapshot, id++, name); } } var beforeBuilder = collection.NewSnapshot("Before"); AddData(beforeBuilder, "A,B,C"); var afterBuilder = collection.NewSnapshot("After"); AddData(afterBuilder, "D,E,F"); var before = collection.GetSnapshot("Before"); var after = collection.GetSnapshot("After"); var diffs = SnapshotDifferenceAnalyser.ExtractDifferences(collection, before, after, ChangeReportOptions.NoSubs); //Act var result = SnapshotDifferenceSorter.SortDifferences(collection, diffs.TableDifferences.ToList()); //Assert var output = new Output(); result.Report(output); output.Report.Verify(); }
public void DifferenceDataIsSortedDescending() { //Arrange var collection = new SnapshotCollection(); collection.DefineTable("TheTable").PrimaryKey("Id").SortDescending("Name"); void AddRow(SnapshotBuilder snapshot, int id, string name) { var add = snapshot.AddNewRow("TheTable"); add["Id"] = id; add["Name"] = name; } var beforeBuilder = collection.NewSnapshot("Before"); AddRow(beforeBuilder, 1, "Alice"); AddRow(beforeBuilder, 2, "Xavier"); AddRow(beforeBuilder, 3, "Zed"); var afterBuilder = collection.NewSnapshot("After"); AddRow(afterBuilder, 1, "Alice+"); AddRow(afterBuilder, 2, "Xavier+"); AddRow(afterBuilder, 3, "Zed+"); var before = collection.GetSnapshot("Before"); var after = collection.GetSnapshot("After"); var diffs = SnapshotDifferenceAnalyser.ExtractDifferences(collection, before, after); //Act var result = SnapshotDifferenceSorter.SortDifferences(collection, diffs.TableDifferences.ToList()); //Assert var output = new Output(); result.Report(output); output.Report.Verify(); }
public void MatchResultShouldContainDifferences() { //Arrange var before = MakeSnapshot("Test", 1, 3, MakeValueSet(5), MakeValueSet(6), MakeValueSet(7)); var after = MakeSnapshot("Test2", 1, 3, MakeValueSet(6), MakeValueSet(6), MakeValueSet(6)); //Act var result = SnapshotDifferenceAnalyser.ExtractDifferences(_collection, before, after); //Assert var output = new Output(); foreach (var tableDiffs in result.TableDifferences) { var report = tableDiffs .RowDifferences .AsReport(rep => AttachDiffs(rep, tableDiffs)); output.FormatTable(report); } output.Report.Verify(); }
public void DifferenceDataIsSortedByMultipleColumns() { //Arrange var collection = new SnapshotCollection(); collection.DefineTable("TheTable") .PrimaryKey("Id") .Sort("ColAsc1") .SortDescending("ColDesc1") .Sort("ColAsc2") .SortDescending("ColDesc2"); void AddRow(SnapshotBuilder snapshot, int id, string asc1, string desc1, string asc2, string desc2) { var add = snapshot.AddNewRow("TheTable"); add["Id"] = id; add["ColAsc1"] = asc1; add["ColDesc1"] = desc1; add["ColAsc2"] = asc2; add["ColDesc2"] = desc2; } void AddData(SnapshotBuilder snapshot, string ascData, string descData) { var id = 1; foreach (var colAsc1 in ascData.Split(',')) { foreach (var colDesc1 in descData.Split(',')) { foreach (var colAsc2 in ascData.Split(',')) { foreach (var colDesc2 in descData.Split(',')) { AddRow(snapshot, id++, colAsc1, colDesc1, colAsc2, colDesc2); } } } } } var beforeBuilder = collection.NewSnapshot("Before"); AddData(beforeBuilder, "A,B,C", "C,B,A"); var afterBuilder = collection.NewSnapshot("After"); AddData(afterBuilder, "A+,B+,C+", "C+,B+,A+"); var before = collection.GetSnapshot("Before"); var after = collection.GetSnapshot("After"); var diffs = SnapshotDifferenceAnalyser.ExtractDifferences(collection, before, after); //Act var result = SnapshotDifferenceSorter.SortDifferences(collection, diffs.TableDifferences.ToList()); //Assert var output = new Output(); result.Report(output); output.Report.Verify(); }