public void Deletes_data_from_cyclic_foreign_keyed_tables()
            {
                // Arrange
                var a = new CyclicForeignKeyA();

                a.Id = this.database.Insert <int>(a);

                var b = new CyclicForeignKeyB {
                    ForeignId = a.Id
                };

                b.Id = this.database.Insert <int>(b);

                var c = new CyclicForeignKeyC {
                    ForeignId = b.Id
                };

                c.Id = this.database.Insert <int>(c);

                a.ForeignId = c.Id;
                this.database.Update(a);

                var sut = new DataWiper();

                // Act
                sut.ClearAllData(this.database);

                // Assert
                this.database.Count <CyclicForeignKeyA>().Should().Be(0);
                this.database.Count <CyclicForeignKeyB>().Should().Be(0);
                this.database.Count <CyclicForeignKeyC>().Should().Be(0);
            }
            public void Deletes_data_from_cyclic_foreign_keyed_tables(IDialect dialect)
            {
                using (var database = BlankDatabaseFactory.MakeDatabase(dialect))
                {
                    // Arrange
                    var a = new CyclicForeignKeyA();
                    a.Id = database.Insert <int>(a);

                    var b = new CyclicForeignKeyB {
                        ForeignId = a.Id
                    };
                    b.Id = database.Insert <int>(b);

                    var c = new CyclicForeignKeyC {
                        ForeignId = b.Id
                    };
                    c.Id = database.Insert <int>(c);

                    a.ForeignId = c.Id;
                    database.Update(a);

                    // Act
                    DataWiper.ClearAllData(database);

                    // Assert
                    database.Count <CyclicForeignKeyA>().Should().Be(0);
                    database.Count <CyclicForeignKeyB>().Should().Be(0);
                    database.Count <CyclicForeignKeyC>().Should().Be(0);
                }
            }