Example #1
0
        public void When_data_tables_are_identical_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();
            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2);
        }
Example #2
0
        public void When_data_table_data_matches_in_different_order_and_the_row_match_mode_is_by_primary_key_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, randomizeRowOrder: true);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, options => options.UsingRowMatchMode(RowMatchMode.PrimaryKey));
        }
Example #3
0
        public void When_data_set_tables_are_the_same_but_in_a_different_order_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true);

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act & Assert
            dataSet1.Should().BeEquivalentTo(dataSet2);
        }
            public void When_DataSets_are_identical_it_should_succeed()
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                var dataSet1 = typedDataSet1.ToUntypedDataSet();
                var dataSet2 = typedDataSet2.ToUntypedDataSet();

                // Act & Assert
                dataSet1.Should().BeEquivalentTo(dataSet2);
            }
Example #5
0
        public void When_columns_for_constraint_in_data_table_do_not_match_message_should_list_all_columns_involved(NumberOfColumnsInConstraintDifference difference)
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable2"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable2"];

            int differenceCount =
                difference switch
                {
                    NumberOfColumnsInConstraintDifference.SingleColumn => 1,
                    NumberOfColumnsInConstraintDifference.MultipleColumns => 2,

                    _ => throw new Exception("Sanity failure")
                };

            var dataTable1ColumnsForConstraint = dataTable1.Columns.Cast<DataColumn>()
                .Take(dataTable1.Columns.Count - differenceCount)
                .ToArray();

            var dataTable2ColumnsForConstraint = dataTable2.Columns.Cast<DataColumn>()
                .Skip(differenceCount)
                .ToArray();

            const string ConstraintName = "TestSubjectConstraint";

            dataTable1.Constraints.Add(new UniqueConstraint(ConstraintName, dataTable1ColumnsForConstraint));
            dataTable2.Constraints.Add(new UniqueConstraint(ConstraintName, dataTable2ColumnsForConstraint));

            var missingColumnNames = dataTable2ColumnsForConstraint.Select(col => col.ColumnName)
                .Except(dataTable1ColumnsForConstraint.Select(col => col.ColumnName));
            var extraColumnNames = dataTable1ColumnsForConstraint.Select(col => col.ColumnName)
                .Except(dataTable2ColumnsForConstraint.Select(col => col.ColumnName));

            string columnsNoun = differenceCount == 1
                ? "column"
                : "columns";

            // Act
            Action action = () => dataTable1.Should().BeEquivalentTo(dataTable2);

            // Assert
            action.Should().Throw<XunitException>().WithMessage(
                $"Expected *{ConstraintName}* to include {columnsNoun} {string.Join("*", missingColumnNames)}*" +
                $"Did not expect *{ConstraintName}* to include {columnsNoun} {string.Join("*", extraColumnNames)}*");
        }
Example #6
0
        public void When_data_table_display_expression_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            dataTable2.DisplayExpression = typedDataSet2.TypedDataTable1.StringColumn.ColumnName;

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.DisplayExpression));
        }
Example #7
0
        public void When_data_table_case_sensitivity_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet2.CaseSensitive = !typedDataSet2.CaseSensitive;

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.CaseSensitive));
        }
            public void When_ExtendedProperties_do_not_match_and_property_is_excluded_it_should_succeed(ChangeType changeType)
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
                var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

                ApplyChange(dataTable2.ExtendedProperties, changeType);

                // Act & Assert
                dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.ExtendedProperties));
            }
Example #9
0
        public void When_data_set_extended_properties_do_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed(ChangeType changeType)
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            ApplyChange(typedDataSet2.ExtendedProperties, changeType);

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act & Assert
            dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.ExtendedProperties));
        }
            public void When_Locale_does_not_match_and_property_is_excluded_it_should_succeed()
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                typedDataSet2.Locale = new CultureInfo("fr-CA");

                var dataSet1 = typedDataSet1.ToUntypedDataSet();
                var dataSet2 = typedDataSet2.ToUntypedDataSet();

                // Act & Assert
                dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.Locale));
            }
Example #11
0
        public void When_one_data_set_is_configured_to_enforce_constraints_and_the_other_is_not_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet2.EnforceConstraints = !typedDataSet2.EnforceConstraints;

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act & Assert
            dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.EnforceConstraints));
        }
            public void When_EnforceConstraints_does_not_match_and_property_is_excluded_it_should_succeed()
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                typedDataSet2.EnforceConstraints = !typedDataSet2.EnforceConstraints;

                var dataSet1 = typedDataSet1.ToUntypedDataSet();
                var dataSet2 = typedDataSet2.ToUntypedDataSet();

                // Act & Assert
                dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.EnforceConstraints));
            }
            public void When_HasErrors_does_not_match_and_property_is_excluded_it_should_succeed()
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                typedDataSet2.TypedDataTable1.Rows[0].RowError = "Manually added error";

                var dataSet1 = typedDataSet1.ToUntypedDataSet();
                var dataSet2 = typedDataSet2.ToUntypedDataSet();

                // Act & Assert
                dataSet1.Should().BeEquivalentTo(dataSet2, config => config.Excluding(dataSet => dataSet.HasErrors).ExcludingTables("TypedDataTable1"));
            }
Example #14
0
        public void When_data_set_prefix_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet2.Prefix += "different";

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act & Assert
            dataSet1.Should().BeEquivalentTo(dataSet2, options => options.Excluding(dataSet => dataSet.Prefix));
        }
            public void When_Prefix_does_not_match_and_property_is_excluded_it_should_succeed()
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
                var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

                dataTable2.Prefix += "different";

                // Act & Assert
                dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.Prefix));
            }
Example #16
0
        public void When_one_data_set_has_errors_and_the_other_does_not_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet2.TypedDataTable1.Rows[0].RowError = "Manually added error";

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act & Assert
            dataSet1.Should().BeEquivalentTo(dataSet2,
                                             config => config.Excluding(dataSet => dataSet.HasErrors).ExcludingTables("TypedDataTable1"));
        }
Example #17
0
        public void When_data_table_locale_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet1.Locale = new CultureInfo("en-US");
            typedDataSet2.Locale = new CultureInfo("fr-CA");

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, options => options.Excluding(dataTable => dataTable.Locale));
        }
Example #18
0
        public void When_data_table_constraints_do_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed(ChangeType changeType)
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable2"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable2"];

            ApplyChange(dataTable2.Constraints, dataTable2.Columns["Decimal"], changeType);

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, options => options
                .Excluding(dataTable => dataTable.Constraints)
                .ExcludingRelated((DataColumn dataColumn) => dataColumn.Unique));
        }
Example #19
0
        public void When_one_data_table_has_errors_and_the_other_does_not_but_the_property_that_indicates_the_presence_of_errors_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            dataTable2.Rows[0].RowError = "Manually added error";

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, config => config
                .Excluding(dataTable => dataTable.HasErrors)
                .ExcludingRelated((DataRow dataRow) => dataRow.HasErrors));
        }
            public void When_DataSetName_does_not_match_and_property_is_excluded_it_should_succeed()
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                typedDataSet2.DataSetName += "different";

                var dataSet1 = typedDataSet1.ToUntypedDataSet();
                var dataSet2 = typedDataSet2.ToUntypedDataSet();

                // Act & Assert
                dataSet1.Should().BeEquivalentTo(dataSet2, options => options
                                                 .Excluding(dataSet => dataSet.DataSetName)
                                                 .ExcludingRelated((DataRelation dataRelation) => dataRelation.DataSet));
            }
Example #21
0
        public void When_data_table_name_does_not_match_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();
            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            dataTable2.TableName += "different";

            // Act
            Action action = () => dataTable1.Should().BeEquivalentTo(dataTable2);

            // Assert
            action.Should().Throw<XunitException>().WithMessage("Expected dataTable1 to have TableName *different*, but found *TypedDataTable1* instead*");
        }
Example #22
0
        public void When_data_table_namespace_does_not_match_but_the_corresponding_property_is_excluded_equivalence_test_should_succeed()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet2.Namespace += "different";

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, options => options
                .Excluding(dataTable => dataTable.Namespace)
                .ExcludingRelated((DataColumn dataColumn) => dataColumn.Namespace));
        }
Example #23
0
        public void When_data_table_columns_do_not_match_but_columns_and_rows_are_excluded_equivalence_test_should_succeed(ChangeType changeType)
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet<TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
            var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

            ApplyChange(dataTable2.Columns, changeType);

            // Act & Assert
            dataTable1.Should().BeEquivalentTo(dataTable2, options => options
                .Excluding(dataTable => dataTable.Columns)
                .Excluding(dataTable => dataTable.Rows));
        }
            public void When_TableName_does_not_match_and_property_is_not_excluded_it_should_fail()
            {
                // Arrange
                var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();
                var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

                var dataTable1 = typedDataSet1.ToUntypedDataSet().Tables["TypedDataTable1"];
                var dataTable2 = typedDataSet2.ToUntypedDataSet().Tables["TypedDataTable1"];

                dataTable2.TableName += "different";

                // Act
                Action action = () => dataTable1.Should().BeEquivalentTo(dataTable2);

                // Assert
                action.Should().Throw <XunitException>();
            }
Example #25
0
        public void When_data_set_tables_contain_different_data_equivalence_test_should_fail()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true);

            typedDataSet2.TypedDataTable2[0].Guid = Guid.NewGuid();

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act
            Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2);

            // Assert
            action.Should().Throw <XunitException>().WithMessage("Expected dataSet1[TypedDataTable2].Rows[0] to have RowState value of *Modified*, but found *Unchanged* instead*");
        }
Example #26
0
        public void When_data_set_table_count_matches_but_tables_are_different_equivalence_test_should_fail()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true);

            typedDataSet2.TypedDataTable2.TableName = "DifferentTableName";

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act
            Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2);

            // Assert
            action.Should().Throw <XunitException>().WithMessage("Expected dataSet1.Relations[0].ExtendedProperties* to reference column *ForeignRowID* in table *Different*, but found a reference to *ForeignRowID* in table *TypedDataTable2* instead*");
        }
Example #27
0
        public void When_data_set_table_count_does_not_match_equivalence_test_should_fail()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1, swapTableOrder: true);

            typedDataSet2.Tables.Add(new DataTable("ThirdWheel"));

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act
            Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2);

            // Assert
            action.Should().Throw <XunitException>().Which.Message.Should().Contain("to contain " + dataSet2.Tables.Count);
        }
Example #28
0
        public void When_one_data_set_has_errors_and_the_other_does_not_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet2.TypedDataTable1.Rows[0].RowError = "Manually added error";

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act
            Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2, config => config.ExcludingTables("TypedDataTable1"));

            // Assert
            action.Should().Throw <XunitException>().Which.Message.Should().Contain("HasErrors");
        }
Example #29
0
        public void When_data_set_prefix_does_not_match_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail()
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            typedDataSet2.Prefix += "different";

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act
            Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2);

            // Assert
            action.Should().Throw <XunitException>().WithMessage("Expected dataSet1 to have Prefix value of *different*");
        }
Example #30
0
        public void When_data_set_extended_properties_do_not_match_and_the_corresponding_property_is_not_excluded_equivalence_test_should_fail(ChangeType changeType)
        {
            // Arrange
            var typedDataSet1 = CreateDummyDataSet <TypedDataSetSubclass>();

            var typedDataSet2 = new TypedDataSetSubclass(typedDataSet1);

            ApplyChange(typedDataSet2.ExtendedProperties, changeType);

            var dataSet1 = typedDataSet1.ToUntypedDataSet();
            var dataSet2 = typedDataSet2.ToUntypedDataSet();

            // Act
            Action action = () => dataSet1.Should().BeEquivalentTo(dataSet2);

            // Assert
            action.Should().Throw <XunitException>().WithMessage("Expected *dataSet1.ExtendedProperties* to be *, but *");
        }