Ejemplo n.º 1
0
        [Order(1)]         //Тесты с указанным порядком выполняются раннее других. Нужно для сравнения обновленных баз с чистой установкой.
        public void CreateCurrentNewBaseTest(SqlServer server)
        {
            StartSqlServer(server);
            //Создаем чистую базу
            var creator = new TestingCreateDbController(server);
            var success = creator.StartCreation(ScriptsConfiguration.MakeCreationScript(), currentDdName);

            Assert.That(success, Is.True);
        }
Ejemplo n.º 2
0
        public void ApplyUpdatesTest(SqlServer server, DbSample sample)
        {
            var updateConfiguration = ScriptsConfiguration.MakeUpdateConfiguration();

            //Проверяем нужно ли обновлять
            if (!updateConfiguration.GetHopsToLast(sample.TypedVersion).Any())
            {
                Assert.Ignore($"Образец базы {sample} версии пропущен. Так как версию базы {sample.Version} невозможно обновить.");
            }

            //Создаем чистую базу
            StartSqlServer(server);
            var creator = new TestingCreateDbController(server);
            var success = creator.StartCreation(sample);

            Assert.That(success, Is.True);
            //Выполняем обновление
            var builder = server.ConnectionStringBuilder;

            builder.Database = sample.DbName;
            var connectionstring = builder.GetConnectionString(true);

            using (var connection = new MySqlConnection(connectionstring))
            {
                connection.Open();
                foreach (var hop in updateConfiguration.GetHopsToLast(sample.TypedVersion))
                {
                    TestContext.Progress.WriteLine($"Выполняем скрипт {hop.Source.VersionToShortString()} → {hop.Destination.VersionToShortString()}");
                    RunOneUpdate(connection, hop);
                }

                //Версии баз до 2.5 отличаются не принципиально, например порядком индексов,
                //Это не имеет смысл специально исправлять. Поэтому проверка этих версия пропущена.
                if (sample.TypedVersion >= new Version(2, 5))
                {
                    ComparisonSchema(connection, currentDdName, sample.DbName);
                }
            }
        }