private void WithSeedData(Type seederType) { if (this.registeredSeeders.ContainsKey(seederType)) { return; } IEntitySeeder seeder = (IEntitySeeder)Activator.CreateInstance(seederType); this.registeredSeeders.Add(seederType, seeder); }
public IEntitySeeder GetDataContextSeedData <TContext, TEntitySeeder>() where TContext : DbContext where TEntitySeeder : IEntitySeeder { TestDatabaseConfiguration dbConfig = this.databaseConfigurations .First(config => config.DbContextType == typeof(TContext)); if (dbConfig == null) { throw new InvalidOperationException($"The {typeof(TContext).FullName} DbContext is not registered with this factory instance. You can register it with {nameof(WithDataContext)}()"); } IEntitySeeder entitySeeder = dbConfig.SeedBuilder .GetEntitySeeders() .FirstOrDefault(seeder => seeder.GetType() == typeof(TEntitySeeder)); if (entitySeeder == null) { throw new InvalidOperationException($"The {typeof(TEntitySeeder).FullName} has not been registered for the DbContext {typeof(TContext).FullName}. You need to add the seeder to the context registration for this Factory instance."); } return(entitySeeder); }
public async Task GetUsers_ReturnsSeederData() { // Arrange this.testFactory.WithDataContext <AppDbContext>("Default") .WithSeedCollection <UserTaskCollection>(); var client = testFactory.CreateClient(); IEntitySeeder userSeeder = testFactory.GetDataContextSeedData <AppDbContext, UserEntitySeeder>(); // Act HttpResponseMessage response = await client.GetAsync("api/users"); string responseBody = await response.Content.ReadAsStringAsync(); UserEntity[] responseData = JsonConvert.DeserializeObject <UserEntity[]>(responseBody); // Assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); Assert.AreEqual(userSeeder.GetSeedData().Length, responseData.Length); Assert.IsTrue(responseData.Any(user => user.Tasks.Count > 0)); }