public void FindMigrations_HasMatchingFiles_IsThoseMigrations() { using (_mocks.Record()) { _files.Add("001_migration.cs"); SetupResult.For(_configuration.MigrationsDirectory).Return("MigrationsDirectory"); SetupResult.For(_fileSystem.GetFiles("MigrationsDirectory")).Return(_files.ToArray()); SetupResult.For(_fileSystem.GetDirectories("MigrationsDirectory")).Return(new string[0]); SetupResult.For(_namer.ToCamelCase("migration")).Return("Migration"); } List <MigrationReference> migrations = new List <MigrationReference>(_target.FindMigrations()); Assert.AreEqual(1, migrations.Count); _mocks.VerifyAll(); }
public ICollection <MigrationReference> FindMigrations() { var migrations = new Dictionary <string, MigrationReference>(); foreach (var match in FindFiles(_configuration.MigrationsDirectory)) { var m = match.Match; var migration = new MigrationReference(Int64.Parse(m.Groups[1].Value), _namer.ToCamelCase(m.Groups[2].Value), match.Path, match.ConfigurationKey); if (migrations.ContainsKey(migration.ConfigurationKey + migration.Version)) { throw new DuplicateMigrationVersionException("Duplicate Version " + migration.Version); } migrations.Add(migration.ConfigurationKey + migration.Version, migration); } var sortedMigrations = new List <MigrationReference>(migrations.Values); sortedMigrations.Sort((mr1, mr2) => mr1.Version.CompareTo(mr2.Version)); if (sortedMigrations.Count == 0) { _log.InfoFormat("Found {0} migrations in '{1}'!", migrations.Count, _configuration.MigrationsDirectory); } return(sortedMigrations); }