diff options
| author | Chris Beaven <smileychris@gmail.com> | 2014-05-29 22:30:47 +1200 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2014-06-05 23:28:17 -0700 |
| commit | 9f1c4e4d3f997dea150d19ca43d2471d66def120 (patch) | |
| tree | e9046f21ea53d44215a7fd6060f67a7cafc919d0 /tests | |
| parent | 31fc34e447137631e6ea58fc33f3642e65479472 (diff) | |
[1.7.x] Implement Migration.run_before
This attribute (used for reverse dependencies) was previously declared
and mentioned in the code, but never actually used.
Diffstat (limited to 'tests')
5 files changed, 91 insertions, 0 deletions
diff --git a/tests/migrations/test_loader.py b/tests/migrations/test_loader.py index 01ead5e8ea..4c1e2d239c 100644 --- a/tests/migrations/test_loader.py +++ b/tests/migrations/test_loader.py @@ -102,6 +102,22 @@ class LoaderTests(TestCase): ["id", "user"] ) + @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_run_before"}) + def test_run_before(self): + """ + Makes sure the loader uses Migration.run_before. + """ + # Load and test the plan + migration_loader = MigrationLoader(connection) + self.assertEqual( + migration_loader.graph.forwards_plan(("migrations", "0002_second")), + [ + ("migrations", "0001_initial"), + ("migrations", "0003_third"), + ("migrations", "0002_second"), + ], + ) + @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"}) def test_name_match(self): "Tests prefix name matching" diff --git a/tests/migrations/test_migrations_run_before/0001_initial.py b/tests/migrations/test_migrations_run_before/0001_initial.py new file mode 100644 index 0000000000..7d44a8d789 --- /dev/null +++ b/tests/migrations/test_migrations_run_before/0001_initial.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + operations = [ + + migrations.CreateModel( + "Salamander", + [ + ("id", models.AutoField(primary_key=True)), + ("size", models.IntegerField(default=0)), + ("silly_field", models.BooleanField(default=False)), + ], + ), + + ] diff --git a/tests/migrations/test_migrations_run_before/0002_second.py b/tests/migrations/test_migrations_run_before/0002_second.py new file mode 100644 index 0000000000..c0e03b4620 --- /dev/null +++ b/tests/migrations/test_migrations_run_before/0002_second.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("migrations", "0001_initial"), + ] + + operations = [ + + migrations.CreateModel( + "Book", + [ + ("id", models.AutoField(primary_key=True)), + ("author", models.ForeignKey("migrations.Author", null=True)), + ], + ) + + ] diff --git a/tests/migrations/test_migrations_run_before/0003_third.py b/tests/migrations/test_migrations_run_before/0003_third.py new file mode 100644 index 0000000000..d5c098c730 --- /dev/null +++ b/tests/migrations/test_migrations_run_before/0003_third.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + """ + This is a wee bit crazy, but it's just to show that run_before works. + """ + + dependencies = [ + ("migrations", "0001_initial"), + ] + + run_before = [ + ("migrations", "0002_second"), + ] + + operations = [ + + migrations.CreateModel( + "Author", + [ + ("id", models.AutoField(primary_key=True)), + ("name", models.CharField(max_length=255)), + ("slug", models.SlugField(null=True)), + ("age", models.IntegerField(default=0)), + ], + ) + + ] diff --git a/tests/migrations/test_migrations_run_before/__init__.py b/tests/migrations/test_migrations_run_before/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/migrations/test_migrations_run_before/__init__.py |
