Ejemplo n.º 1
0
        private void WithSeedData(Type seederType)
        {
            if (this.registeredSeeders.ContainsKey(seederType))
            {
                return;
            }

            IEntitySeeder seeder = (IEntitySeeder)Activator.CreateInstance(seederType);

            this.registeredSeeders.Add(seederType, seeder);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }