public void Discover_returns_configuration_when_unconventional_self_referencing_many_to_required()
        {
            var modelBuilder = new DbModelBuilder();

            modelBuilder.Entity <SelfReferencingEntity>().HasMany(e => e.Children).WithRequired(e => e.Parent)
            .WillCascadeOnDelete();
            var model              = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType         = model.ConceptualModel.EntityTypes.First(e => e.Name == "SelfReferencingEntity");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Children");

            var configuration = new CascadeDeleteDiscoverer()
                                .Discover(navigationProperty, model) as CascadeDeleteConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(OperationAction.Cascade, configuration.DeleteBehavior);
        }
        public void Discover_returns_configuration_when_unconventional_optional_to_many()
        {
            var modelBuilder = new DbModelBuilder();

            modelBuilder.Entity <Entity1>().HasOptional(e => e.Entity2).WithMany(e => e.Entity1s).WillCascadeOnDelete();
            modelBuilder.Entity <Entity1>().Ignore(e => e.Entity2s);
            modelBuilder.Entity <Entity2>().Ignore(e => e.Entity1);
            var model              = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType         = model.ConceptualModel.EntityTypes.First(e => e.Name == "Entity1");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Entity2");

            var configuration = new CascadeDeleteDiscoverer()
                                .Discover(navigationProperty, model) as CascadeDeleteConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(OperationAction.Cascade, configuration.DeleteBehavior);
        }
        public void Discover_returns_configuration_when_unconventional_optional_to_required()
        {
            var modelBuilder = new DbModelBuilder();
            modelBuilder.Entity<Entity1>().HasOptional(e => e.Entity2).WithRequired(e => e.Entity1)
                .WillCascadeOnDelete();
            modelBuilder.Entity<Entity1>().Ignore(e => e.Entity2s);
            modelBuilder.Entity<Entity2>().Ignore(e => e.Entity1s);
            var model = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType = model.ConceptualModel.EntityTypes.First(e => e.Name == "Entity1");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Entity2");

            var configuration = new CascadeDeleteDiscoverer()
                .Discover(navigationProperty, model) as CascadeDeleteConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(OperationAction.Cascade, configuration.DeleteBehavior);
        }
        public void Discover_returns_configuration_when_unconventional_self_referencing_many_to_required()
        {
            var modelBuilder = new DbModelBuilder();
            modelBuilder.Entity<SelfReferencingEntity>().HasMany(e => e.Children).WithRequired(e => e.Parent)
                .WillCascadeOnDelete();
            var model = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType = model.ConceptualModel.EntityTypes.First(e => e.Name == "SelfReferencingEntity");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Children");

            var configuration = new CascadeDeleteDiscoverer()
                .Discover(navigationProperty, model) as CascadeDeleteConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(OperationAction.Cascade, configuration.DeleteBehavior);
        }