summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJelle van der Waa <jelle@vdwaa.nl>2017-06-12 21:35:25 +0200
committerJelle van der Waa <jelle@vdwaa.nl>2017-08-25 18:35:39 +0200
commit840ff3684d2161f4748aac89b524b9c8a78c49a7 (patch)
tree332b6015b4cb7065d213e447d0673f2eb3603173
parentdcc32265ce815882544c2e6568e4c75dc359fc85 (diff)
downloadarchweb-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.gzbin0 -> 4099 bytes
-rw-r--r--devel/tests/__init__.py0
-rw-r--r--devel/tests/test_reporead.py43
-rw-r--r--devel/tests/test_user.py (renamed from devel/tests.py)4
-rw-r--r--requirements.txt1
5 files changed, 46 insertions, 2 deletions
diff --git a/devel/fixtures/core.db.tar.gz b/devel/fixtures/core.db.tar.gz
new file mode 100644
index 00000000..f532fa73
--- /dev/null
+++ b/devel/fixtures/core.db.tar.gz
Binary files differ
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