# encoding: utf8 from django.core import checks from django.core.checks.migrations import check_migrations from django.test import override_settings from .test_base import MigrationTestBase class CheckMigrationTests(MigrationTestBase): """ Test checks for unapplied migrations. """ @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"}) def test_unapplied(self): """ check_migrations should return a warning when there are unapplied migrations. """ expected = [ checks.Warning( "You have unapplied migrations; " "your app may not work properly until they are applied.", hint="Run 'python manage.py migrate' to apply them.", ) ] errors = check_migrations() self.assertEqual(errors, expected) @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"}, DATABASES={}) def test_no_databases(self): """ Migration checks should not consider unapplied migrations if there is no database configured. """ errors = check_migrations() self.assertEqual(errors, []) def test_no_unapplied(self): """ No warning should be issued if all migrations have been applied. """ errors = check_migrations() self.assertEqual(errors, [])