diff options
author | Jelle van der Waa <jelle@vdwaa.nl> | 2017-06-12 21:35:25 +0200 |
---|---|---|
committer | Jelle van der Waa <jelle@vdwaa.nl> | 2017-08-25 18:35:39 +0200 |
commit | 840ff3684d2161f4748aac89b524b9c8a78c49a7 (patch) | |
tree | 332b6015b4cb7065d213e447d0673f2eb3603173 | |
parent | dcc32265ce815882544c2e6568e4c75dc359fc85 (diff) | |
download | archweb-840ff3684d2161f4748aac89b524b9c8a78c49a7.tar.gz archweb-840ff3684d2161f4748aac89b524b9c8a78c49a7.zip |
devel: Add reporead test
Add a test for reporead import database functionality. Move tests for
devel to a separate directory and depend on mock for patching the
logging functonality. (Included by default in Python 3)
-rw-r--r-- | devel/fixtures/core.db.tar.gz | bin | 0 -> 4099 bytes | |||
-rw-r--r-- | devel/tests/__init__.py | 0 | ||||
-rw-r--r-- | devel/tests/test_reporead.py | 43 | ||||
-rw-r--r-- | devel/tests/test_user.py (renamed from devel/tests.py) | 4 | ||||
-rw-r--r-- | requirements.txt | 1 |
5 files changed, 46 insertions, 2 deletions
diff --git a/devel/fixtures/core.db.tar.gz b/devel/fixtures/core.db.tar.gz Binary files differnew file mode 100644 index 00000000..f532fa73 --- /dev/null +++ b/devel/fixtures/core.db.tar.gz diff --git a/devel/tests/__init__.py b/devel/tests/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/devel/tests/__init__.py diff --git a/devel/tests/test_reporead.py b/devel/tests/test_reporead.py new file mode 100644 index 00000000..4e542f4c --- /dev/null +++ b/devel/tests/test_reporead.py @@ -0,0 +1,43 @@ +import tarfile +from mock import patch + + +from django.core.management import call_command +from django.core.management.base import CommandError +from django.test import TransactionTestCase +from django.utils.six import StringIO + + +from main.models import Package + + +# Django's TestCase is wrapped in transaction, therefore use TransactionTestCase +class RepoReadTest(TransactionTestCase): + fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json'] + + def test_invalid_args(self): + with self.assertRaises(CommandError) as e: + call_command('reporead') + self.assertIn('Architecture is required', str(e.exception)) + + with self.assertRaises(CommandError) as e: + call_command('reporead', 'x86_64') + self.assertIn('Package database file is required.', str(e.exception)) + + with self.assertRaises(CommandError) as e: + call_command('reporead', 'x86_64', 'nothing.db.tar.gz') + self.assertIn('Specified package database file does not exist.', str(e.exception)) + + def test_read_packages(self): + out = StringIO() + with patch('devel.management.commands.reporead.logger') as logger: + call_command('reporead', 'x86_64', 'devel/fixtures/core.db.tar.gz') + logger.info.assert_called() + + # Verify contents + with tarfile.open('devel/fixtures/core.db.tar.gz') as tar: + files = [name.replace('core.db/', '') for name in tar.getnames() if name != 'core.db' and not 'desc' in name] + + packages = Package.objects.all() + import_packages = ["{}-{}-{}".format(pkg.pkgname, pkg.pkgver, pkg.pkgrel) for pkg in packages] + self.assertItemsEqual(files, import_packages) diff --git a/devel/tests.py b/devel/tests/test_user.py index 03351f57..88713bfb 100644 --- a/devel/tests.py +++ b/devel/tests/test_user.py @@ -1,8 +1,8 @@ from django.contrib.auth.models import User from django.test import TestCase -from .utils import UserFinder -from .models import UserProfile +from devel.utils import UserFinder +from devel.models import UserProfile class DevelTest(TestCase): def test_index(self): diff --git a/requirements.txt b/requirements.txt index f47573fd..d5a4f3c0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ django-countries==3.3 jsmin==2.2.2 pgpdump==1.5 pytz>=2015.4 +mock==2.0.0 |