Example #1
0
        public async Task SuccessfullyExecutesMigrationsInOrder()
        {
            var expectedOrderedIds = GetType().Assembly.FindMigrations()
                                     .ToDictionaryByMigrationNumber().OrderByNumber()
                                     .Select(i => i.Key).OrderBy(i => i);

            runner.ApplyMigrations(GetType().Assembly);

            DidUpdateVersionAndMigrationDocuments();

            var runOrder = updatedMigrationDocs.GroupBy(m => m.Value.MigrationNumber).Select(kv => kv.Key);

            Assert.Equal(expectedOrderedIds.Count(), runOrder.Count());
            Assert.True(expectedOrderedIds.SequenceEqual(runOrder));
        }
Example #2
0
        /// <summary>
        /// Applies all migrations for the given repository.
        /// </summary>
        /// <param name="criteria"></param>
        public void ApplyMigrations(ApplyMigrationCriteria criteria)
        {
            var configurationStatus = GetMigrationConfigurationStatus(criteria.ProjectPath, criteria.RepoName);

            if (!configurationStatus.Enabled)
            {
                LoggerBase.Log("Migrations are not enabled, can not apply any migrations.");
                return;
            }

            if (configurationStatus.MigrationType != MigrationToUse.Manual)
            {
                LoggerBase.Log("Manual Migrations are not enabled, can not apply any migrations.");
                return;
            }

            var repoInfo = TypeHandler.FindSingleRepo(criteria.ProjectPath, criteria.RepoName);

            //if null we need to drop out.
            if (repoInfo == null)
            {
                return;
            }

            AssertRepoHasEmptyConstructor(repoInfo.RepoType);
            EnsureDbAndMigrationTableExists(criteria.ProjectPath, repoInfo.RepoType, criteria.ConfigFilePath);

            var runner = new MigrationRunner();

            runner.ApplyMigrations(criteria);

            //clean up
            ProjectEvalutionHelper.FinishedWithProject(criteria.ProjectPath);
        }
Example #3
0
        public void CanUseCustomMigrationCreationMethod()
        {
            var runner = new MigrationRunner(Mock.Object);

            runner.WithCreatMigration(t => new MigrationWithDependency(""));
            runner.ApplyMigrations(new[] { typeof(MigrationWithDependency) });

            DidUpdateVersionAndMigrationDocuments();
        }