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)); }
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)); }
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); }
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); }
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); }
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); }
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); }
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)); }