Exemple #1
0
        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);
        }