Skip to content

Commit

Permalink
✅ management: add tests for runner module
Browse files Browse the repository at this point in the history
also:
exclude __name__ == '__main__' clause from coverage report
  • Loading branch information
asfaltboy committed May 25, 2015
1 parent 84cc7db commit 542685f
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
[run]
source = localshop
omit = *migrations*, localshop/settings.py

[report]
exclude_lines =
pragma: no cover
if __name__ == .__main__.:
43 changes: 43 additions & 0 deletions tests/management/test_runner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import copy
import os

import mock

from django.test import TestCase
from localshop.runner import main

manage_instance = mock.MagicMock()
manage_mock = mock.MagicMock(return_value=manage_instance)


@mock.patch('django.core.management.ManagementUtility', manage_mock)
class TestRunner(TestCase):

def tearDown(self):
manage_instance.reset_mock()
manage_mock.reset_mock()

@mock.patch('sys.argv', [])
def test_no_args_passed_manager(self):
main()
manage_mock.assert_called_once_with([])
manage_instance.execute.assert_called_once_with()

@mock.patch('sys.argv', ['init', '--no-superuser'])
def test_args_passed_manager(self):
main()
manage_mock.assert_called_once_with(['init', '--no-superuser'])
manage_instance.execute.assert_called_once_with()

def test_set_env_defaults(self):
# backup and remove global environment vars
oldenv = copy.copy(os.environ)
del os.environ['DJANGO_SETTINGS_MODULE']
del os.environ['DJANGO_CONFIGURATION']
main()
self.assertIn('DJANGO_SETTINGS_MODULE', os.environ)
self.assertIn('DJANGO_CONFIGURATION', os.environ)
self.assertEqual(os.environ['DJANGO_SETTINGS_MODULE'],
'localshop.settings')
self.assertEqual(os.environ['DJANGO_CONFIGURATION'], 'Localshop')
os.environ = oldenv

0 comments on commit 542685f

Please sign in to comment.