euscan-ng/euscanwww/djeuscan/tests/test_models.py
volpino fab19a6bfc euscanwww: Watch/unwatch packages, categories, maintainers, overlays
Added a button for watch/unwatch and a dashboard with user selected
stuff only

Signed-off-by: volpino <fox91@anche.no>
2012-07-10 16:15:06 +02:00

106 lines
3.5 KiB
Python

"""
tests for models
"""
from datetime import datetime
from django.test import TestCase
from django.db import IntegrityError
from django.core.exceptions import ValidationError
from django.utils.timezone import utc
from djeuscan.models import Package, EuscanResult
from djeuscan.tests.euscan_factory import VersionFactory, PackageFactory, \
EuscanResultFactory, setup_maintainers, setup_herds, setup_categories, \
setup_overlays
class VersionModelTests(TestCase):
def test_creation(self):
package = PackageFactory.build()
version = VersionFactory.build(package=package)
self.assertEqual(version.package, package)
def test_not_allowed_creation(self):
package = PackageFactory.create()
VersionFactory.create(package=package)
with self.assertRaises((IntegrityError, ValidationError)):
VersionFactory.create(package=package)
class PackageModelTests(TestCase):
def test_homepages(self):
homepage = "http://gentoo.org http://mypackage.com"
package = PackageFactory.build(homepage=homepage)
self.assertEqual(package.homepages,
["http://gentoo.org", "http://mypackage.com"])
def test_for_maintainer(self):
maintainers, packages = setup_maintainers()
maintainer = maintainers[0]
self.assertEqual(
list(Package.objects.for_maintainer(maintainer)),
packages[:1]
)
def test_for_herd(self):
herds, packages = setup_herds()
herd = herds[0]
self.assertEqual(
list(Package.objects.for_herd(herd)),
packages[:1]
)
def test_for_category(self):
categories, packages = setup_categories()
category = categories[0]
self.assertEqual(
list(Package.objects.for_category(category)),
packages[:1]
)
def test_for_overlay(self):
overlays, packages = setup_overlays()
overlay = overlays[0]
package_ids = [p.pk for p in packages[overlay]]
for package in Package.objects.for_overlay(overlay):
self.assertTrue(package["id"] in package_ids)
def test_maintainers(self):
maintainers, packages = setup_maintainers()
maintainer_ids = [m.pk for m in maintainers]
for maintainer in Package.objects.maintainers():
self.assertTrue(maintainer["maintainers__id"] in maintainer_ids)
def test_herds(self):
herds, packages = setup_herds()
herd_names = [h.herd for h in herds]
for herd in Package.objects.herds():
self.assertTrue(herd["herds__herd"] in herd_names)
def test_categories(self):
categories, packages = setup_categories()
cat_names = [c["category"] for c in Package.objects.categories()]
for category in categories:
self.assertTrue(category in cat_names)
def test_overlays(self):
overlays, packages = setup_overlays()
overlay_names = Package.objects.overlays()
for overlay in overlays:
self.assertTrue(overlay in overlay_names)
class EuscanResultModelTests(TestCase):
def test_lastest(self):
result1 = EuscanResultFactory.create(
datetime=datetime(2012, 04, 01, 12, 0, 0, 0, utc)
)
result2 = EuscanResultFactory.create(
datetime=datetime(2012, 01, 01, 12, 0, 0, 0, utc)
)
self.assertEqual(result1, EuscanResult.objects.latest())
self.assertNotEqual(result2, EuscanResult.objects.latest())