Esempio n. 1
0
        public void OnModelCreating_BuildsModel_CanIgnoreNavigations()
        {
            // Arrange
            var productEntityTypeBuilder        = new ProductEntityTypeBuilder();
            var productVariantEntityTypeBuilder = new ProductVariantEntityTypeBuilder();
            var inputBuilders = new IModelBuilder[]
            {
                productEntityTypeBuilder,
                productVariantEntityTypeBuilder
            };
            var modelBuilderService = new ModelBuilderService(inputBuilders);
            var hook         = new AutoModelDbContextHook(modelBuilderService);
            var modelBuilder = new ModelBuilder(new ConventionSet());

            // Act
            ((IDbContextHook)hook).SetDbContextType(typeof(NoNavigationsAutoBuildCatalogDbContext));
            hook.OnModelCreating(modelBuilder);

            // Assert
            var entityTypes = modelBuilder.Model.GetEntityTypes().ToArray();

            Assert.Equal(1, entityTypes.Length);
            Assert.Equal(true, productEntityTypeBuilder.BuildEntityCalled);
            Assert.Contains(entityTypes, et => et.ClrType == typeof(Product));
        }
Esempio n. 2
0
        public void GetModelBuilders_ValidatesParameters()
        {
            // Arrange
            var dbContextType = typeof(CatalogDbContext);
            var inputBuilders = new IModelBuilder[0];
            var service       = new ModelBuilderService(inputBuilders);

            // Act

            // Assert
            Assert.Throws <ArgumentNullException>(() => service.GetModelBuilders(null /* dbContextType */, false));
        }
Esempio n. 3
0
        public void OnModelCreating_DoesNothing_IfNoAutoBuildAttribute()
        {
            // Arrange
            var modelBuilderService = new ModelBuilderService(new IModelBuilder[0]);
            var hook         = new AutoModelDbContextHook(modelBuilderService);
            var modelBuilder = new ModelBuilder(new ConventionSet());

            // Act
            ((IDbContextHook)hook).SetDbContextType(typeof(NoAutoBuildCatalogDbContext));
            hook.OnModelCreating(modelBuilder);

            // Assert
            var entityTypes = modelBuilder.Model.GetEntityTypes().ToArray();

            Assert.Equal(0, entityTypes.Length);
        }
Esempio n. 4
0
        public void OnModelCreating_DoesNothing_IfNoDbContextType()
        {
            // Arrange
            var modelBuilderService = new ModelBuilderService(new IModelBuilder[0]);
            var hook         = new AutoModelDbContextHook(modelBuilderService);
            var modelBuilder = new ModelBuilder(new ConventionSet());

            // Act
            // MA - the DbContextType property is set by the ExtendedDbContext constructor, so its currently null.
            hook.OnModelCreating(modelBuilder);

            // Assert
            var entityTypes = modelBuilder.Model.GetEntityTypes().ToArray();

            Assert.Equal(0, entityTypes.Length);
        }
Esempio n. 5
0
        public void GetModelBuilders_SupportsUntypedModelBuilders()
        {
            // Arrange
            var dbContextType = typeof(CatalogDbContext);
            var inputBuilders = new IModelBuilder[]
            {
                new UntypedModelBuilder()
            };
            var service = new ModelBuilderService(inputBuilders);

            // Act
            var outputBuilders = service.GetModelBuilders(dbContextType, false);

            // Assert
            Assert.Equal(1, outputBuilders.Length);
            Assert.Contains(inputBuilders[0], outputBuilders);
        }
Esempio n. 6
0
        public void GetModelBuilders_SupportsEntityTypeModelBuilders_FromIListNavigation()
        {
            // Arrange
            var dbContextType = typeof(CatalogDbContext);
            var inputBuilders = new IModelBuilder[]
            {
                new ProductVariantOptionEntityTypeBuilder()
            };
            var service = new ModelBuilderService(inputBuilders);

            // Act
            var outputBuilders = service.GetModelBuilders(dbContextType, true /* includeNavigations */);

            // Assert
            Assert.Equal(1, outputBuilders.Length);
            Assert.Contains(inputBuilders[0], outputBuilders);
        }
Esempio n. 7
0
        public void GetModelBuilders_SupportsEntityTypedModelBuilders_FromDbSetProperties()
        {
            // Arrange
            var dbContextType = typeof(CatalogDbContext);
            var inputBuilders = new IModelBuilder[]
            {
                new ProductEntityTypeBuilder(),
                new ProductVariantEntityTypeBuilder(),
                new VendorEntityTypeBuilder(),
                new AttributeEntityTypeBuilder()
            };
            var service = new ModelBuilderService(inputBuilders);

            // Act
            var outputBuilders = service.GetModelBuilders(dbContextType, false /* includeNavigations */);

            // Assert
            Assert.Equal(3, outputBuilders.Length);
            Assert.Contains(inputBuilders[0], outputBuilders);
            Assert.Contains(inputBuilders[1], outputBuilders);
            Assert.Contains(inputBuilders[2], outputBuilders);
        }
Esempio n. 8
0
        public void OnModelCreating_BuildsModel_UsingTypedContextModelBuilder()
        {
            // Arrange
            var contextModelBuilder = new ContextModelBuilder();
            var inputBuilders       = new IModelBuilder[]
            {
                contextModelBuilder
            };
            var modelBuilderService = new ModelBuilderService(inputBuilders);
            var hook         = new AutoModelDbContextHook(modelBuilderService);
            var modelBuilder = new ModelBuilder(new ConventionSet());

            // Act
            ((IDbContextHook)hook).SetDbContextType(typeof(AutoBuildCatalogDbContext));
            hook.OnModelCreating(modelBuilder);

            // Assert
            var entityTypes = modelBuilder.Model.GetEntityTypes().ToArray();

            Assert.Equal(1, entityTypes.Length);
            Assert.Equal(true, contextModelBuilder.BuildModelCalled);
            Assert.Contains(entityTypes, et => et.ClrType == typeof(Vendor));
        }