Merge pull request #976 from normanjaeckel/MoreTests
Add tests. Setup coverage.
This commit is contained in:
commit
fbbbdf8caf
2
fabfile.py
vendored
2
fabfile.py
vendored
@ -31,7 +31,7 @@ def coverage_report_plain():
|
|||||||
Runs all tests and prints the coverage report.
|
Runs all tests and prints the coverage report.
|
||||||
"""
|
"""
|
||||||
test()
|
test()
|
||||||
local('coverage report -m')
|
local('coverage report -m --fail-under=73')
|
||||||
|
|
||||||
|
|
||||||
def coverage():
|
def coverage():
|
||||||
|
@ -13,6 +13,7 @@ from django.contrib.auth.models import Permission
|
|||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from django.test.client import Client
|
from django.test.client import Client
|
||||||
|
from mock import patch
|
||||||
|
|
||||||
from openslides.config.api import (config, ConfigGroup, ConfigGroupedPage,
|
from openslides.config.api import (config, ConfigGroup, ConfigGroupedPage,
|
||||||
ConfigPage, ConfigVariable)
|
ConfigPage, ConfigVariable)
|
||||||
@ -210,6 +211,18 @@ class ConfigFormTest(TestCase):
|
|||||||
text = '<script src="/static/javascript/test-config-djg4dFGVslk4209f.js" type="text/javascript"></script>'
|
text = '<script src="/static/javascript/test-config-djg4dFGVslk4209f.js" type="text/javascript"></script>'
|
||||||
self.assertContains(response=response, text=text, status_code=200)
|
self.assertContains(response=response, text=text, status_code=200)
|
||||||
|
|
||||||
|
@patch('openslides.config.views.FormView.get_context_data')
|
||||||
|
def test_extra_stylefiles_other_context(self, mock_get_context_data):
|
||||||
|
"""
|
||||||
|
Tests the view with empty context data at the beginning.
|
||||||
|
"""
|
||||||
|
mock_get_context_data.return_value = {}
|
||||||
|
response = self.client_manager.get('/config/testgroupedpage1/')
|
||||||
|
text1 = '<link href="/static/styles/test-config-sjNN56dFGDrg2.css" type="text/css" rel="stylesheet" />'
|
||||||
|
text2 = '<script src="/static/javascript/test-config-djg4dFGVslk4209f.js" type="text/javascript"></script>'
|
||||||
|
self.assertContains(response=response, text=text1, status_code=200)
|
||||||
|
self.assertContains(response=response, text=text2, status_code=200)
|
||||||
|
|
||||||
|
|
||||||
class ConfigWeightTest(TestCase):
|
class ConfigWeightTest(TestCase):
|
||||||
|
|
||||||
|
@ -9,16 +9,53 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from django.test.client import Client
|
from django.test.client import Client
|
||||||
|
from mock import MagicMock, patch
|
||||||
|
|
||||||
from openslides import get_version
|
from openslides import get_version
|
||||||
|
from openslides.agenda.models import Item
|
||||||
from openslides.participant.models import User
|
from openslides.participant.models import User
|
||||||
from openslides.utils.test import TestCase
|
from openslides.utils.test import TestCase
|
||||||
|
|
||||||
|
|
||||||
class VersionViewTest(TestCase):
|
class VersionViewTest(TestCase):
|
||||||
def test_get(self):
|
def setUp(self):
|
||||||
User.objects.create_user('CoreMaximilian', 'xxx@xx.xx', 'default')
|
User.objects.create_user('CoreMaximilian', 'xxx@xx.xx', 'default')
|
||||||
client = Client()
|
self.client = Client()
|
||||||
client.login(username='CoreMaximilian', password='default')
|
self.client.login(username='CoreMaximilian', password='default')
|
||||||
response = client.get('/version/')
|
|
||||||
|
def test_get(self):
|
||||||
|
response = self.client.get('/version/')
|
||||||
self.assertContains(response, get_version(), status_code=200)
|
self.assertContains(response, get_version(), status_code=200)
|
||||||
|
|
||||||
|
@patch('openslides.core.views.settings')
|
||||||
|
def test_with_missing_plugin(self, mock_settings):
|
||||||
|
"""
|
||||||
|
Tests that an not existing app does not appear on the version view.
|
||||||
|
"""
|
||||||
|
mock_settings.INSTALLED_PLUGINS = ('unexisting_app_nvhbkdfgmnsd',)
|
||||||
|
response = self.client.get('/version/')
|
||||||
|
self.assertNotContains(response, 'unexisting_app_nvhbkdfgmnsd', status_code=200)
|
||||||
|
|
||||||
|
@patch('openslides.core.views.settings')
|
||||||
|
@patch('openslides.core.views.import_module')
|
||||||
|
def test_with_plugin_without_version(self, mock_import_module, mock_settings):
|
||||||
|
"""
|
||||||
|
Tests that an exisiting app does not appear in the version view if
|
||||||
|
there are no version data.
|
||||||
|
"""
|
||||||
|
mock_settings.INSTALLED_PLUGINS = ('existing_app_without_version',)
|
||||||
|
mock_module = MagicMock(spec=['some_useless_attribute_ghbnckj756j36'])
|
||||||
|
mock_import_module.configure_mock(return_value=mock_module)
|
||||||
|
response = self.client.get('/version/')
|
||||||
|
self.assertNotContains(response, 'unexisting_app_nvhbkdfgmnsd', status_code=200)
|
||||||
|
|
||||||
|
|
||||||
|
class SearchViewTest(TestCase):
|
||||||
|
def test_simple_search(self):
|
||||||
|
Item.objects.create(title='agenda_item_bnghfdjkgndkjdfg')
|
||||||
|
User.objects.create_user('CoreMaximilian', 'xxx@xx.xx', 'default')
|
||||||
|
self.client = Client()
|
||||||
|
self.client.login(username='CoreMaximilian', password='default')
|
||||||
|
response = self.client.get('/search/?q=agenda_item_bnghfd')
|
||||||
|
text = '<span class="highlighted">agenda_item_bnghfd</span>jkgndkjdfg'
|
||||||
|
self.assertContains(response, text)
|
||||||
|
@ -7,6 +7,10 @@
|
|||||||
:license: GNU GPL, see LICENSE for more details.
|
:license: GNU GPL, see LICENSE for more details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
from mock import MagicMock, patch
|
||||||
|
|
||||||
from openslides import get_git_commit_id, get_version
|
from openslides import get_git_commit_id, get_version
|
||||||
from openslides.utils.test import TestCase
|
from openslides.utils.test import TestCase
|
||||||
|
|
||||||
@ -24,10 +28,28 @@ class InitTest(TestCase):
|
|||||||
self.assertEqual(get_version(version=(2, 5, 3, 'alpha', 0), release=True), '2.5.3a0')
|
self.assertEqual(get_version(version=(2, 5, 3, 'alpha', 0), release=True), '2.5.3a0')
|
||||||
self.assertEqual(get_version(version=(2, 5, 3, 'final', 0), release=True), '2.5.3')
|
self.assertEqual(get_version(version=(2, 5, 3, 'final', 0), release=True), '2.5.3')
|
||||||
|
|
||||||
def test_get_git_commit_id(self):
|
def test_get_git_commit_id_general(self):
|
||||||
"""
|
"""
|
||||||
Tests the lenght of the git commit id.
|
Tests the lenght of the git commit id.
|
||||||
"""
|
"""
|
||||||
git_commit_id = get_git_commit_id()
|
git_commit_id = get_git_commit_id()
|
||||||
if not git_commit_id == 'unknown':
|
if not git_commit_id == 'unknown':
|
||||||
self.assertEqual(len(git_commit_id), 40)
|
self.assertEqual(len(git_commit_id), 40)
|
||||||
|
|
||||||
|
@patch('__builtin__.open', MagicMock(side_effect=IOError))
|
||||||
|
def test_get_commit_id_unknown(self):
|
||||||
|
"""
|
||||||
|
Tests unknown git commit id.
|
||||||
|
"""
|
||||||
|
self.assertEqual(get_git_commit_id(), 'unknown')
|
||||||
|
|
||||||
|
@patch('__builtin__.open')
|
||||||
|
def test_get_commit_id_without_ref(self, mock):
|
||||||
|
"""
|
||||||
|
Tests reading the content of the git_commit_id file.
|
||||||
|
"""
|
||||||
|
with tempfile.TemporaryFile() as git_file:
|
||||||
|
git_file.write('test_id_ahyuGo7yefai7Nai')
|
||||||
|
git_file.seek(0)
|
||||||
|
mock.return_value = git_file
|
||||||
|
self.assertEqual(get_git_commit_id(), 'test_id_ahyuGo7yefai7Nai')
|
||||||
|
@ -12,13 +12,18 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
from mock import MagicMock, patch
|
||||||
|
|
||||||
from openslides.utils.main import (
|
from openslides.utils.main import (
|
||||||
get_browser_url,
|
get_browser_url,
|
||||||
|
get_database_path_from_settings,
|
||||||
get_default_settings_path,
|
get_default_settings_path,
|
||||||
get_default_user_data_path,
|
get_default_user_data_path,
|
||||||
|
get_port,
|
||||||
|
get_portable_paths,
|
||||||
get_user_data_path_values,
|
get_user_data_path_values,
|
||||||
setup_django_settings_module,
|
setup_django_settings_module,
|
||||||
|
start_browser,
|
||||||
UNIX_VERSION,
|
UNIX_VERSION,
|
||||||
WINDOWS_PORTABLE_VERSION)
|
WINDOWS_PORTABLE_VERSION)
|
||||||
from openslides.utils.test import TestCase
|
from openslides.utils.test import TestCase
|
||||||
@ -64,3 +69,31 @@ class TestFunctions(TestCase):
|
|||||||
self.assertEqual(get_browser_url('123.456.789.365', 80), 'http://123.456.789.365')
|
self.assertEqual(get_browser_url('123.456.789.365', 80), 'http://123.456.789.365')
|
||||||
self.assertEqual(get_browser_url('0.0.0.0', 6789), 'http://localhost:6789')
|
self.assertEqual(get_browser_url('0.0.0.0', 6789), 'http://localhost:6789')
|
||||||
self.assertEqual(get_browser_url('0.0.0.0', 80), 'http://localhost')
|
self.assertEqual(get_browser_url('0.0.0.0', 80), 'http://localhost')
|
||||||
|
|
||||||
|
def test_get_port(self):
|
||||||
|
class MyException(Exception):
|
||||||
|
pass
|
||||||
|
self.assertEqual(get_port('localhost', 8234), 8234)
|
||||||
|
with patch('openslides.utils.main.socket') as mock_socket:
|
||||||
|
mock_socket.error = MyException
|
||||||
|
mock_socket.socket().listen = MagicMock(side_effect=MyException)
|
||||||
|
self.assertEqual(get_port('localhost', 80), 8000)
|
||||||
|
|
||||||
|
@patch('openslides.utils.main.time')
|
||||||
|
@patch('openslides.utils.main.webbrowser')
|
||||||
|
def test_start_browser(self, mock_webbrowser, mock_time):
|
||||||
|
browser_mock = MagicMock()
|
||||||
|
mock_webbrowser.get.return_value = browser_mock
|
||||||
|
start_browser('http://localhost:8234')
|
||||||
|
browser_mock.open.assert_called_with('http://localhost:8234')
|
||||||
|
|
||||||
|
def test_get_database_path_from_settings_memory(self):
|
||||||
|
self.assertEqual(get_database_path_from_settings(), ':memory:')
|
||||||
|
|
||||||
|
@patch('openslides.utils.main.get_win32_portable_path')
|
||||||
|
def test_get_portable_paths(self, mock_get_win32_portable_path):
|
||||||
|
mock_get_win32_portable_path.return_value = '/test_path_AhgheeGee1eixaeYe1ra'
|
||||||
|
self.assertEqual(get_portable_paths('database'), '/test_path_AhgheeGee1eixaeYe1ra/openslides/database.sqlite')
|
||||||
|
self.assertEqual(get_portable_paths('media'), '/test_path_AhgheeGee1eixaeYe1ra/openslides/media/')
|
||||||
|
self.assertEqual(get_portable_paths('whoosh_index'), '/test_path_AhgheeGee1eixaeYe1ra/openslides/whoosh_index/')
|
||||||
|
self.assertRaisesMessage(TypeError, 'Unknown type unknown_string', get_portable_paths, 'unknown_string')
|
||||||
|
Loading…
Reference in New Issue
Block a user