// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. namespace System.Data.Entity.Migrations { using System.Data.Entity.Config; using System.Data.Entity.Migrations.Design; using System.Data.Entity.Migrations.Sql; using DaFunc; using Moq; using Xunit; public class DbMigrationsConfigurationOfTTests { [Fact] public void Can_get_and_set_migration_context_properties() { var migrationsConfiguration = new DbMigrationsConfiguration { AutomaticMigrationsEnabled = false, ContextType = typeof(ShopContext_v1), CodeGenerator = new Mock().Object }; Assert.False(migrationsConfiguration.AutomaticMigrationsEnabled); Assert.NotNull(migrationsConfiguration.CodeGenerator); Assert.Equal(typeof(ShopContext_v1), migrationsConfiguration.ContextType); } [Fact] public void Can_add_and_get_sql_generator() { var migrationsConfiguration = new DbMigrationsConfiguration(); var migrationSqlGenerator = new SqlServerMigrationSqlGenerator(); migrationsConfiguration.SetSqlGenerator(DbProviders.Sql, migrationSqlGenerator); Assert.Same(migrationSqlGenerator, migrationsConfiguration.GetSqlGenerator(DbProviders.Sql)); } [Fact] public void SQL_generator_is_obtained_from_migrations_configuration_if_set_in_migrations_configuration() { SetSqlGeneratorTest(setGenerator: true); } [Fact] public void SQL_generator_is_obtained_from_DbConfiguration_if_not_set_in_migrations_configuration() { SetSqlGeneratorTest(setGenerator: false); } private static void SetSqlGeneratorTest(bool setGenerator) { var generator = new Mock().Object; var mockResolver = new Mock(); mockResolver.Setup(m => m.GetService(typeof(MigrationSqlGenerator), "Gu.Hu.Ha")).Returns(generator); var migrationsConfiguration = new DbMigrationsConfiguration(new Lazy(() => mockResolver.Object)); if (setGenerator) { generator = new Mock().Object; migrationsConfiguration.SetSqlGenerator("Gu.Hu.Ha", generator); } Assert.Same(generator, migrationsConfiguration.GetSqlGenerator("Gu.Hu.Ha")); } [Fact] public void Setting_SQL_generator_does_not_change_generator_set_in_DbConfiguration() { new DbMigrationsConfiguration().SetSqlGenerator(DbProviders.SqlCe, new SqlServerMigrationSqlGenerator()); Assert.IsType( DbConfiguration.GetService(DbProviders.SqlCe)); } private class TestMigrationsConfiguration : DbMigrationsConfiguration where TContext : DbContext { } [Fact] public void ContextKey_is_assigned_to_short_full_name_by_default() { var migrationsConfiguration = new TestMigrationsConfiguration.GenericFuncy, NT>, NT>>(); Assert.Equal(migrationsConfiguration.GetType().ToString(), migrationsConfiguration.ContextKey); } } }