django/tests/backends/base/test_client.py

31 lines
1.1 KiB
Python

from unittest import mock
from django.db import connection
from django.db.backends.base.client import BaseDatabaseClient
from django.test import SimpleTestCase
class SimpleDatabaseClientTests(SimpleTestCase):
def setUp(self):
self.client = BaseDatabaseClient(connection=connection)
def test_settings_to_cmd_args_env(self):
msg = (
'subclasses of BaseDatabaseClient must provide a '
'settings_to_cmd_args_env() method or override a runshell().'
)
with self.assertRaisesMessage(NotImplementedError, msg):
self.client.settings_to_cmd_args_env(None, None)
def test_runshell_use_environ(self):
for env in [None, {}]:
with self.subTest(env=env):
with mock.patch('subprocess.run') as run:
with mock.patch.object(
BaseDatabaseClient,
'settings_to_cmd_args_env',
return_value=([], env),
):
self.client.runshell(None)
run.assert_called_once_with([], env=None, check=True)