gva/gnuviechadmin/userdbs/tests/test_admin.py
Jan Dittberner 1649e4592e Add tests for userdbs app
This commit adds a set of unit tests for the userdbs app. Some tests
will fail because a refactoring to signals comes with the next commit.
2015-12-07 00:22:13 +00:00

172 lines
6 KiB
Python

"""
This module provides tests for :py:mod:`userdbs.admin`.
"""
from __future__ import absolute_import
from django.contrib.admin import AdminSite
from django.test import TestCase
from userdbs.admin import (DatabaseUserAdmin, DatabaseUserCreationForm,
UserDatabaseAdmin, UserDatabaseCreationForm)
from userdbs.models import DB_TYPES, DatabaseUser, UserDatabase
try:
from unittest.mock import MagicMock, Mock, patch
except ImportError:
from mock import MagicMock, Mock, patch
class DatabaseUserCreationFormTest(TestCase):
@patch('userdbs.admin.DatabaseUser.objects.create_database_user')
def test_save(self, create_database_user):
create_database_user.return_value = Mock()
form = DatabaseUserCreationForm()
mockuser = Mock(name='osuser')
form.cleaned_data = {
'osuser': mockuser,
'db_type': DB_TYPES.pgsql
}
retval = form.save()
self.assertTrue(create_database_user.called_with(
osuser=mockuser, db_type=DB_TYPES.pgsql, commit=True))
self.assertEqual(retval, create_database_user.return_value)
def test_save_m2m_returns_none(self):
form = DatabaseUserCreationForm()
self.assertIsNone(form.save_m2m())
class UserDatabaseCreationFormTest(TestCase):
@patch('userdbs.admin.UserDatabase.objects.create_userdatabase')
def test_save(self, create_userdatabase):
create_userdatabase.return_value = Mock()
form = UserDatabaseCreationForm()
mockuser = Mock(name='mockuser')
form.cleaned_data = {'db_user': mockuser}
retval = form.save()
self.assertTrue(create_userdatabase.called_with(
db_user=mockuser, commit=True))
self.assertEqual(retval, create_userdatabase.return_value)
def test_save_m2m_returns_none(self):
form = UserDatabaseCreationForm()
self.assertIsNone(form.save_m2m())
class DatabaseUserAdminTest(TestCase):
def setUp(self):
site = AdminSite()
self.dbuadmin = DatabaseUserAdmin(DatabaseUser, site)
super(DatabaseUserAdminTest, self).setUp()
def test_get_form_with_instance(self):
form = self.dbuadmin.get_form(
Mock(name='request'), obj=Mock(name='dbuser'))
self.assertEqual(
form.Meta.fields,
['osuser', 'name', 'db_type']
)
def test_get_form_without_instance(self):
form = self.dbuadmin.get_form(Mock(name='request'))
self.assertEqual(
form.Meta.fields,
['osuser', 'db_type']
)
def test_get_readonly_fields_with_instance(self):
fields = self.dbuadmin.get_readonly_fields(
Mock(name='request'), obj=Mock(name='dbuser'))
self.assertEqual(
fields, ['osuser', 'name', 'db_type'])
def test_get_readonly_fields_without_instance(self):
fields = self.dbuadmin.get_readonly_fields(
Mock(name='request'))
self.assertEqual(fields, [])
def test_save_model_change(self):
objmock = Mock()
self.dbuadmin.save_model(Mock(name='request'), objmock, Mock(), True)
self.assertTrue(objmock.create_in_database.not_called())
def test_save_model_no_change(self):
objmock = Mock()
self.dbuadmin.save_model(Mock(name='request'), objmock, Mock(), False)
self.assertTrue(objmock.create_in_database.called_with())
def test_perform_delete_selected(self):
usermock = Mock()
selected = Mock()
selected.all.return_value = [usermock]
self.dbuadmin.perform_delete_selected(Mock(name='request'), selected)
self.assertTrue(selected.all.called_with())
self.assertTrue(usermock.delete.called_with())
def test_get_actions(self):
requestmock = MagicMock(name='request')
self.assertNotIn(
'delete_selected',
self.dbuadmin.get_actions(requestmock))
self.assertIn(
'perform_delete_selected',
self.dbuadmin.get_actions(requestmock))
class UserDatabaseAdminTest(TestCase):
def setUp(self):
site = AdminSite()
self.udbadmin = UserDatabaseAdmin(UserDatabase, site)
super(UserDatabaseAdminTest, self).setUp()
def test_get_form_with_instance(self):
form = self.udbadmin.get_form(
Mock(name='request'), obj=Mock(name='userdb'))
self.assertEqual(form.Meta.fields, ['db_name', 'db_user'])
def test_get_form_without_instance(self):
form = self.udbadmin.get_form(Mock(name='request'))
self.assertEqual(form.Meta.fields, ['db_user'])
def test_get_readonly_fields_with_instance(self):
fields = self.udbadmin.get_readonly_fields(
Mock(name='request'), obj=Mock(name='userdb'))
self.assertEqual(
fields, ['db_name', 'db_user'])
def test_get_readonly_fields_without_instance(self):
fields = self.udbadmin.get_readonly_fields(
Mock(name='request'))
self.assertEqual(fields, [])
def test_save_model_change(self):
objmock = Mock()
self.udbadmin.save_model(Mock(name='request'), objmock, Mock(), True)
self.assertTrue(objmock.create_in_database.not_called())
def test_save_model_no_change(self):
objmock = Mock()
self.udbadmin.save_model(Mock(name='request'), objmock, Mock(), False)
self.assertTrue(objmock.create_in_database.called_with())
def test_perform_delete_selected(self):
userdbmock = Mock()
selected = Mock()
selected.all.return_value = [userdbmock]
self.udbadmin.perform_delete_selected(Mock(name='request'), selected)
self.assertTrue(selected.all.called_with())
self.assertTrue(userdbmock.delete.called_with())
def test_get_actions(self):
requestmock = MagicMock(name='request')
self.assertNotIn(
'delete_selected',
self.udbadmin.get_actions(requestmock))
self.assertIn(
'perform_delete_selected',
self.udbadmin.get_actions(requestmock))