MCPcopy
hub / github.com/django/django / test_migrations_only

Method test_migrations_only

tests/migrate_signals/tests.py:103–169  ·  view source on GitHub ↗

If all apps have migrations, migration signals should be sent.

(self)

Source from the content-addressed store, hash-verified

101 MIGRATION_MODULES={"migrate_signals": "migrate_signals.custom_migrations"}
102 )
103 def test_migrations_only(self):
104 """
105 If all apps have migrations, migration signals should be sent.
106 """
107 pre_migrate_receiver = Receiver(signals.pre_migrate)
108 post_migrate_receiver = Receiver(signals.post_migrate)
109 management.call_command(
110 "migrate",
111 database=MIGRATE_DATABASE,
112 verbosity=MIGRATE_VERBOSITY,
113 interactive=MIGRATE_INTERACTIVE,
114 )
115 for receiver in [pre_migrate_receiver, post_migrate_receiver]:
116 args = receiver.call_args
117 self.assertEqual(receiver.call_counter, 1)
118 self.assertEqual(set(args), set(SIGNAL_ARGS))
119 self.assertEqual(args["app_config"], APP_CONFIG)
120 self.assertEqual(args["verbosity"], MIGRATE_VERBOSITY)
121 self.assertEqual(args["interactive"], MIGRATE_INTERACTIVE)
122 self.assertEqual(args["using"], "default")
123 self.assertIsInstance(args["plan"][0][0], migrations.Migration)
124 # The migration isn't applied backward.
125 self.assertFalse(args["plan"][0][1])
126 self.assertIsInstance(args["apps"], migrations.state.StateApps)
127 self.assertEqual(pre_migrate_receiver.call_args["apps"].get_models(), [])
128 self.assertEqual(
129 [
130 model._meta.label
131 for model in post_migrate_receiver.call_args["apps"].get_models()
132 ],
133 ["migrate_signals.Signal"],
134 )
135 # Migrating with an empty plan.
136 pre_migrate_receiver = Receiver(signals.pre_migrate)
137 post_migrate_receiver = Receiver(signals.post_migrate)
138 management.call_command(
139 "migrate",
140 database=MIGRATE_DATABASE,
141 verbosity=MIGRATE_VERBOSITY,
142 interactive=MIGRATE_INTERACTIVE,
143 )
144 self.assertEqual(
145 [
146 model._meta.label
147 for model in pre_migrate_receiver.call_args["apps"].get_models()
148 ],
149 ["migrate_signals.Signal"],
150 )
151 self.assertEqual(
152 [
153 model._meta.label
154 for model in post_migrate_receiver.call_args["apps"].get_models()
155 ],
156 ["migrate_signals.Signal"],
157 )
158 # Migrating with an empty plan and --check doesn't emit signals.
159 pre_migrate_receiver = Receiver(signals.pre_migrate)
160 post_migrate_receiver = Receiver(signals.post_migrate)

Callers

nothing calls this directly

Calls 2

ReceiverClass · 0.85
get_modelsMethod · 0.45

Tested by

no test coverage detected