def test_load_migration_object(self): db = MigrationDb(directory=self.mock_migrations_dir) db.warn = WarningsMocker() for name in ['001_foo', '0001', '001', '01', '1', 1]: self.assert_attrs(db.load_migration_object(name), name = '001_foo', dev = False, sql_up = "INSERT INTO mock VALUES (1)", ) for name in ['002_bar', '0002', '002', '02', '2', 2]: self.assert_attrs(db.load_migration_object(name), name = '002_bar', dev = False, sql_up = "INSERT INTO mock VALUES (2)", ) for name in ['005_DEV_hello', '0005', '005', '05', '5', 5]: self.assert_attrs(db.load_migration_object(name), name = '005_DEV_hello', dev = True, sql_up = "INSERT INTO mock VALUES (5)", ) for name in ['3', '02_foo', '2_foo', 3]: self.assert_raises(NoSuchMigrationError, lambda: db.load_migration_object(name))
def test_find_unique_migration_by_number(self): db = MigrationDb(directory=self.mock_migrations_dir) db.warn = WarningsMocker() self.assert_equal("001_foo", db.find_unique_migration_by_number(1)) self.assert_equal("002_bar", db.find_unique_migration_by_number(2)) self.assert_equal(None, db.find_unique_migration_by_number(3)) self.assert_raises(AmbiguousMigrationNameError, lambda: db.find_unique_migration_by_number(9))
def test_migrations_can_be_initialized_from_directory(self): db = MigrationDb(directory=self.mock_migrations_dir) db.warn = WarningsMocker() self.assert_equal([ "001_foo", "002_bar", "005_DEV_hello", "009_one", "09_two", ], db.list() )
def test_dup_warnings(self): db = MigrationDb() db.warn = WarningsMocker() db.populate_migrations_from_ls([ "17_foo.py", "017_bar.py", "0018_foo.py", "00018_foo.py", "180_hello.py", ]) self.assert_equal( [ u'There are multiple migrations with the same number 17: 017_bar, 17_foo', u'There are multiple migrations with the same number 18: 00018_foo, 0018_foo' ], db.warn.warnings )
def test_load_migration_object_with_dups(self): db = MigrationDb(directory=self.mock_migrations_dir) db.warn = WarningsMocker() self.assert_attrs(db.load_migration_object('009_one'), name = '009_one', dev = False, sql_up = "INSERT INTO mock VALUES (9, 1)", ) self.assert_attrs(db.load_migration_object('09_two'), name = '09_two', dev = False, sql_up = "INSERT INTO mock VALUES (9, 2)", ) for name in ['0009', '009', '09', '9', 9]: self.assert_raises(AmbiguousMigrationNameError, lambda: db.load_migration_object(name))
def test_when_doing_something_then_loggged(self): db = MigrationDb(directory=self.mock_migrations_dir) db.warn = WarningsMocker() si = MigrationState(migration_db=db, dev=True) si.init() si.apply('001_foo') si.mark_as_unapplied('001_foo') si.apply('001_foo') si.mark_as_applied('005_omg') si.unapply('001_foo') self.assert_equal([ ("apply", "001_foo", "success"), ("mark_as_unapplied", "001_foo", "success"), ("apply", "001_foo", "success"), ("mark_as_applied", "005_omg", "success"), ("unapply", "001_foo", "success"), ], [row[:3] for row in get_log()]) self.assert_equal(True, isinstance(get_log()[0][3], datetime))
def test_when_doing_something_then_loggged(self): db = MigrationDb(directory=self.mock_migrations_dir) db.warn = WarningsMocker() si = MigrationState(migration_db=db, dev=True) si.init() si.apply("001_foo") si.mark_as_unapplied("001_foo") si.apply("001_foo") si.mark_as_applied("005_omg") si.unapply("001_foo") self.assert_equal( [ ("apply", "001_foo", "success"), ("mark_as_unapplied", "001_foo", "success"), ("apply", "001_foo", "success"), ("mark_as_applied", "005_omg", "success"), ("unapply", "001_foo", "success"), ], [row[:3] for row in get_log()], ) self.assert_equal(True, isinstance(get_log()[0][3], datetime))
def test_migration_path(self): db = MigrationDb(directory=self.mock_migrations_dir) db.warn = WarningsMocker() self.assert_equal(self.mock_migrations_dir + '/010_foo.py', db.migration_path('foo'))