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)); }
/// <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); }
public void CanUseCustomMigrationCreationMethod() { var runner = new MigrationRunner(Mock.Object); runner.WithCreatMigration(t => new MigrationWithDependency("")); runner.ApplyMigrations(new[] { typeof(MigrationWithDependency) }); DidUpdateVersionAndMigrationDocuments(); }