File: test_drop_models_table.py

package info (click to toggle)
python-django-test-migrations 1.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 436 kB
  • sloc: python: 1,479; makefile: 26
file content (50 lines) | stat: -rw-r--r-- 1,835 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from django_test_migrations.sql import drop_models_tables

TESTING_DATABASE_NAME = 'test'


def test_drop_models_table_no_tables_detected(mocker):
    """Ensure any ``DROP TABLE`` statement executed when no tables detected."""
    testing_connection_mock = mocker.MagicMock()
    testing_connection_mock.introspection.django_table_names.return_value = []
    connections_mock = mocker.patch('django.db.connections._connections')
    connections_mock.test = testing_connection_mock

    drop_models_tables(TESTING_DATABASE_NAME)

    testing_connection_mock.ops.execute_sql_flush.assert_not_called()


def test_drop_models_table_table_detected(mocker):
    """Ensure ``DROP TABLE`` statements are executed when any table detected."""
    testing_connection_mock = mocker.MagicMock()
    testing_connection_mock.introspection.django_table_names.return_value = [
        'foo_bar',
        'foo_baz',
    ]
    connections_mock = mocker.patch('django.db.connections._connections')
    connections_mock.test = testing_connection_mock

    drop_models_tables(TESTING_DATABASE_NAME)

    testing_connection_mock.ops.execute_sql_flush.assert_called_once()


def test_drop_models_table_on_mysql(mocker):
    """Ensure queries disabling/enabling `FOREIGN_KEY_CHECKS` are executed."""
    testing_connection_mock = mocker.MagicMock(vendor='mysql')
    testing_connection_mock.introspection.django_table_names.return_value = [
        'foo_bar',
        'foo_baz',
    ]
    connections_mock = mocker.patch('django.db.connections._connections')
    connections_mock.test = testing_connection_mock

    drop_models_tables(TESTING_DATABASE_NAME)

    testing_connection_mock.ops.execute_sql_flush.assert_called_once_with([
        'SET FOREIGN_KEY_CHECKS = 0;',
        mocker.ANY,
        mocker.ANY,
        'SET FOREIGN_KEY_CHECKS = 1;',
    ])