Galen.Ci.EntityFramework.Tests.DbDeploymentManagerIntegrationTests.CorrectlyInitializesADatabaseAndDoesNotSeed C# (CSharp) Method

CorrectlyInitializesADatabaseAndDoesNotSeed() private method

private CorrectlyInitializesADatabaseAndDoesNotSeed ( ) : void
return void
		public void CorrectlyInitializesADatabaseAndDoesNotSeed()
		{
			string serverName = @"(localdb)\mssqllocaldb";
			string databaseName = string.Format("TestContext_{0}", Guid.NewGuid().ToString().Replace("-", string.Empty));
			var expectedMigrationHistory = new[]
			{
					"201506161504528_InitialCreate"
			};

			var config = new DbDeploymentManagerConfiguration()
			{
				Mode=DeploymentMode.InitializeOnly,
				TargetAssemblyPath=TestUtils.BuildTestContextTestAssemblyPath(1),
				Database=new DatabaseEndpoint { ServerName=serverName, DatabaseName=databaseName },
				InitializationConfig=new InitializerConfigurationInfo
				{
					Type = "Galen.Ci.EntityFramework.Initialization.CreateSecureSeededDatabaseIfNotExists`2[[Galen.Ci.EntityFramework.Tests.TestContext.Data.TestDbContext, Galen.Ci.EntityFramework.Tests.TestContext], [Galen.Ci.EntityFramework.Tests.TestContext.Data.TestDataSeeder, Galen.Ci.EntityFramework.Tests.TestContext]], Galen.Ci.EntityFramework.Initialization",
					DisableForcedSeeding = true //Disable seeding
				}
			};

			try
			{
				var sut = new DbDeploymentManager(config, new AssemblyLoader(), new SqlClientDbConnectionInfoBuilder());
				sut.Deploy();

                var migrationHistory = TestUtils.GetMigrationHistory(serverName, databaseName, "Galen.Ci.EntityFramework.Tests.TestContext.Data.Migrations.Configuration");

				Assert.IsNotNull(migrationHistory);
				Assert.AreEqual(expectedMigrationHistory.Length, migrationHistory.Count());
				Assert.IsTrue(expectedMigrationHistory.SequenceEqual(migrationHistory));

				var startingRows = TestUtils.GetRows(serverName, databaseName, "dbo.BasicEntities");

				//Now that we are deployed, let's delete some data and see if the auto-seeding re-adds it
				TestUtils.ExecuteSqlCommand(serverName, databaseName, "DELETE FROM dbo.BasicEntities WHERE ID = 2");
				var postDeleteRows = TestUtils.GetRows(serverName, databaseName, "dbo.BasicEntities");

				Assert.IsTrue(postDeleteRows.Count()==(startingRows.Count()-1));

				sut=new DbDeploymentManager(config, new AssemblyLoader(), new SqlClientDbConnectionInfoBuilder());
				sut.Deploy();

				var postSeedingRows = TestUtils.GetRows(serverName, databaseName, "dbo.BasicEntities");

				Assert.IsTrue(postSeedingRows.Count()==(startingRows.Count()-1));

                Assert.AreEqual(1, TestUtils.GetDeploymentHistoryRowCount(serverName, databaseName, "Galen.Ci.EntityFramework.Tests.TestContext.Data.Migrations.Configuration"));
			}
			finally
			{
				//Be sure to clean up
				TestUtils.DropDatabase(config.Database.ServerName, config.Database.DatabaseName);
			}
		}
	}