public async void Speed2() { using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); await seed.SeedAsync(context, logger, false, Environment.CurrentDirectory, ""); } using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { List <Item> item = await context.Items.AsTracking() .Include(i => i.Brand) .Include(i => i.ItemCategories) .ThenInclude(t => t.Category) .Include(i => i.Variants) .ThenInclude(v => v.Vendor) .Include(i => i.Variants) .ThenInclude(v => v.Unit) .ToListAsync(); Assert.NotNull(item[0].Brand); Assert.NotNull(item[0].ItemCategories[0].Category); Assert.NotNull(item[0].Variants[0].Unit); Assert.NotNull(item[0].Variants[0].Vendor); await context.Database.EnsureDeletedAsync(); } }
public async Task Handle_Will_CreateChannel_AND_EnsureUserGroupExists_AND_SendNotificationToChannel() { // Arrange var slackFacadeSpy = new SlackFacadeSpy(); var stubCapabilityRepository = new StubCapabilityRepository(); var slackService = new SlackService(slackFacadeSpy, null); var slackServiceSpy = new SlackServiceSpy(slackService); var nullLogger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <SlackCapabilityCreatedDomainEventHandler>(); var handler = new SlackCapabilityCreatedDomainEventHandler( logger: nullLogger, slackFacadeSpy, stubCapabilityRepository, slackServiceSpy ); var capabilityCreatedDomainEvent = CapabilityCreatedDomainEvent.Create( Guid.NewGuid(), "aFineCapability" ); // Act await handler.HandleAsync(capabilityCreatedDomainEvent); // Assert Assert.NotNull(slackFacadeSpy.CreatedChannelName); Assert.True(slackServiceSpy.EnsureUserGroupExistsHasBeenCalled); Assert.NotEmpty(slackFacadeSpy.ChannelsMessages); Assert.NotEmpty(slackFacadeSpy.ChannelsPinnedMessageTimeStamps); }
public async void Speed3() { using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); await seed.SeedAsync(context, logger, false, Environment.CurrentDirectory, ""); } using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { List <Brand> brands = await context.Brands.AsTracking().ToListAsync(); List <Vendor> vendors = await context.Vendors.AsTracking().ToListAsync(); List <ROL.Services.Catalog.Domain.Unit> units = await context.Units.AsTracking().ToListAsync(); List <Category> categories = await context.Categories.AsTracking().ToListAsync(); List <Item> item = await context.Items.AsTracking() .Include(i => i.ItemCategories) .Include(i => i.Variants) .ToListAsync(); Assert.NotNull(item[0].Brand); Assert.NotNull(item[0].ItemCategories[0].Category); Assert.NotNull(item[0].Variants[0].Unit); Assert.NotNull(item[0].Variants[0].Vendor); await context.Database.EnsureDeletedAsync(); } }
public async void NoTrackingTest() { using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); await seed.SeedAsync(context, logger, false, Environment.CurrentDirectory, ""); Item item = await context.Items.AsTracking().Where(i => i.Name == "5-MTHF").FirstOrDefaultAsync(); Assert.Empty(item.MetaData); item.Name += " - updated"; Assert.Equal(EntityState.Modified, context.Entry(item).State); int changes = await context.SaveChangesAsync(); Assert.Equal(1, changes); Assert.Equal(EntityState.Unchanged, context.Entry(item).State); } using (Context context2 = Context.ContextDesignFactory.CreateDbContext(Config)) { Item item2 = await context2.Items.Where(i => i.Name == "5-MTHF - updated").FirstOrDefaultAsync(); Assert.NotNull(item2); await context2.Database.EnsureDeletedAsync(); } }
public async void MetaDataTest() { using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); await seed.SeedAsync(context, logger, false, Environment.CurrentDirectory, ""); } using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { List <Brand> brands = await context.Brands.AsTracking().ToListAsync(); List <Vendor> vendors = await context.Vendors.AsTracking().ToListAsync(); List <ROL.Services.Catalog.Domain.Unit> units = await context.Units.AsTracking().ToListAsync(); List <Category> categories = await context.Categories.AsTracking().ToListAsync(); Item item = await context.Items.AsTracking() .Include(i => i.ItemCategories) .Include(i => i.Variants) .Where(i => i.Name == "5-MTHF") .FirstOrDefaultAsync(); Assert.Empty(item.MetaData); item.MetaData.Add("Test1", "1"); item.MetaData.Add("Test2", "2"); item.MetaData.Add("Test3", "3"); Assert.True(context.Entry(item).Property(p => p.MetaData).IsModified, "Property is modified"); Assert.Equal(EntityState.Modified, context.Entry(item).State); int changes = await context.SaveChangesAsync(); Assert.Equal(EntityState.Unchanged, context.Entry(item).State); } using (Context context2 = Context.ContextDesignFactory.CreateDbContext(Config)) { List <Brand> brands = await context2.Brands.AsTracking().ToListAsync(); List <Vendor> vendors = await context2.Vendors.AsTracking().ToListAsync(); List <ROL.Services.Catalog.Domain.Unit> units = await context2.Units.AsTracking().ToListAsync(); List <Category> categories = await context2.Categories.AsTracking().ToListAsync(); Item item2 = await context2.Items .Include(i => i.ItemCategories) .Include(i => i.Variants) .Where(i => i.Name == "5-MTHF") .FirstOrDefaultAsync(); Assert.Equal("1", item2.MetaData["Test1"]); Assert.Equal("2", item2.MetaData["Test2"]); Assert.Equal("3", item2.MetaData["Test3"]); await context2.Database.EnsureDeletedAsync(); } }
public async void MetaDataTest2() { using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); await seed.SeedAsync(context, logger, false, Environment.CurrentDirectory, ""); } using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { Item item = await context.Items.AsTracking() .Include(i => i.Brand) .Include(i => i.ItemCategories) .ThenInclude(t => t.Category) .Include(i => i.Variants) .ThenInclude(v => v.Vendor) .Include(i => i.Variants) .ThenInclude(v => v.Unit) .Where(i => i.Name == "5-MTHF") .FirstOrDefaultAsync(); Assert.Empty(item.MetaData); item.MetaData.Add("Test1", "1"); item.MetaData.Add("Test2", "2"); item.MetaData.Add("Test3", "3"); Assert.Equal(EntityState.Modified, context.Entry(item).State); int changes = await context.SaveChangesAsync(); Assert.Equal(1, changes); Assert.Equal(EntityState.Unchanged, context.Entry(item).State); } using (Context context2 = Context.ContextDesignFactory.CreateDbContext(Config)) { Item item2 = await context2.Items .Include(i => i.Brand) .Include(i => i.ItemCategories) .ThenInclude(t => t.Category) .Include(i => i.Variants) .ThenInclude(v => v.Vendor) .Include(i => i.Variants) .ThenInclude(v => v.Unit) .Where(i => i.Name == "5-MTHF") .FirstOrDefaultAsync(); Assert.Equal("1", item2.MetaData["Test1"]); Assert.Equal("2", item2.MetaData["Test2"]); Assert.Equal("3", item2.MetaData["Test3"]); await context2.Database.EnsureDeletedAsync(); } }
public DatabaseFixture() { ServiceCollection serviceCollection = new ServiceCollection(); ConfigureServices(serviceCollection); this.serviceProvider = serviceCollection.BuildServiceProvider(); Config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", false) .Build(); Context = this.serviceProvider.GetService <Context>(); // Context.ContextDesignFactory.CreateDbContext(Config); ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); seed.SeedAsync(Context, logger, false, Environment.CurrentDirectory, "").Wait(); }
public async void NoTrackingTest2() { Item item = null; int count = 0; using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); await seed.SeedAsync(context, logger, false, Environment.CurrentDirectory, ""); item = await context.Items.Where(i => i.Name == "5-MTHF").FirstOrDefaultAsync(); item.Name += " - updated2"; // context.Update<Item>(item); int changes = await context.SaveChangesAsync(); Assert.Equal(0, changes); count = context.Items.Count(); } using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { // item.Name += " - updated2"; context.Update <Item>(item); // context.Entry(item).State = EntityState.Modified; // Assert.Throws<InvalidOperationException>(() => context.Items.Update(item)); int changes = await context.SaveChangesAsync(); Assert.Equal(1, changes); } using (Context context2 = Context.ContextDesignFactory.CreateDbContext(Config)) { Item item2 = await context2.Items.Where(i => i.Name == "5-MTHF - updated2").FirstOrDefaultAsync(); Assert.NotNull(item2); Assert.Equal(count, context2.Items.Count()); await context2.Database.EnsureDeletedAsync(); } }
public async void MetaDataTest4() { using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { ILogger <ContextSeed> logger = new Microsoft.Extensions.Logging.Abstractions.NullLogger <ContextSeed>(); ContextSeed seed = new ContextSeed(); await seed.SeedAsync(context, logger, false, Environment.CurrentDirectory, ""); } using (Context context = Context.ContextDesignFactory.CreateDbContext(Config)) { Item item = await context.Items.AsTracking() .Include(i => i.Brand) .Include(i => i.ItemCategories) .ThenInclude(t => t.Category) .Include(i => i.Variants) .ThenInclude(v => v.Vendor) .Include(i => i.Variants) .ThenInclude(v => v.Unit) .Where(i => i.Name == "5-MTHF") .FirstOrDefaultAsync(); Assert.Empty(item.MetaData); item.MetaData.Add("Test1", "1"); item.MetaData.Add("Test2", new List <string> { "Test", "this" }); item.MetaData.Add("Test3", new person { FirstName = "Robert", LastName = "Raboud", MiddleName = "Alfred" }); Assert.Equal(EntityState.Modified, context.Entry(item).State); int changes = await context.SaveChangesAsync(); Assert.Equal(1, changes); Assert.Equal(EntityState.Unchanged, context.Entry(item).State); } using (Context context2 = Context.ContextDesignFactory.CreateDbContext(Config)) { Item item2 = await context2.Items .Include(i => i.Brand) .Include(i => i.ItemCategories) .ThenInclude(t => t.Category) .Include(i => i.Variants) .ThenInclude(v => v.Vendor) .Include(i => i.Variants) .ThenInclude(v => v.Unit) .Where(i => i.Name == "5-MTHF") .FirstOrDefaultAsync(); Assert.Equal("1", item2.MetaData["Test1"]); List <string> list = item2.MetaData["Test2"] as List <string>; Assert.NotNull(list); Assert.NotEmpty(list); Assert.Equal("Test", list[0]); Assert.Equal("this", list[1]); person person = item2.MetaData["Test3"] as person; Assert.Equal("Robert", person.FirstName); Assert.Equal("Alfred", person.MiddleName); Assert.Equal("Raboud", person.LastName); await context2.Database.EnsureDeletedAsync(); } }