-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #19 from dstegelman/feature/tests
Tests
- Loading branch information
Showing
8 changed files
with
152 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
language: python | ||
|
||
python: | ||
- "2.7" | ||
|
||
env: | ||
- DJANGO_VERSION=Django==1.4.2 | ||
- DJANGO_VERSION=Django==1.5 | ||
- DJANGO_VERSION=Django==1.6 | ||
|
||
# command to install dependencies | ||
install: | ||
- pip install $DJANGO_VERSION south factory_boy mock | ||
|
||
# command to run tests | ||
|
||
script: | ||
- python runtests.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
from downtime.tests.test_models import * | ||
from downtime.tests.test_smoke import * | ||
from downtime.tests.test_middleware import * |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import factory | ||
import datetime | ||
|
||
from downtime.models import Period | ||
|
||
|
||
class PeriodFactory(factory.DjangoModelFactory): | ||
start_time = datetime.datetime.now() | ||
end_time = datetime.datetime.now() + datetime.timedelta(days=2) | ||
enabled = True | ||
|
||
class Meta: | ||
model = Period |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
from mock import Mock | ||
from django.test import TestCase | ||
|
||
|
||
from downtime.middleware import DowntimeMiddleware | ||
from downtime.tests.factories import PeriodFactory | ||
|
||
|
||
class DowntimeMiddlewareTest(TestCase): | ||
|
||
def setUp(self): | ||
self.dm = DowntimeMiddleware() | ||
self.request = Mock() | ||
self.request.session = {} | ||
self.period = PeriodFactory.create() | ||
|
||
def test_exempt_paths(self): | ||
self.request.path = '/admin' | ||
self.assertIsNone(self.dm.process_request(self.request)) | ||
|
||
def test_render(self): | ||
self.request.path = '/' | ||
response = self.dm.process_request(self.request) | ||
self.assertEqual(response.status_code, 503) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
import datetime | ||
|
||
|
||
from django.test import TestCase | ||
|
||
from downtime.tests.factories import PeriodFactory | ||
from downtime.models import Period | ||
|
||
|
||
class DowntimeModelTest(TestCase): | ||
|
||
def setUp(self): | ||
self.period = PeriodFactory.create() | ||
|
||
def test_unicode(self): | ||
self.assertEqual(self.period.__unicode__(), 'Scheduled downtime') | ||
|
||
def test_active(self): | ||
self.assertTrue(Period.objects.active().count()) | ||
|
||
def test_inactive(self): | ||
self.period.enabled = False | ||
self.period.save() | ||
|
||
self.assertFalse(Period.objects.active().count()) | ||
|
||
def test_is_down(self): | ||
self.assertTrue(Period.objects.is_down().count()) | ||
|
||
def test_is_not_down(self): | ||
self.period.start_time = datetime.datetime.now() - datetime.timedelta(days=4) | ||
self.period.end_time = datetime.datetime.now() - datetime.timedelta(days=1) | ||
self.period.save() | ||
|
||
self.assertFalse(Period.objects.is_down().count()) | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
from downtime.admin import * | ||
from downtime.managers import * | ||
from downtime.models import * | ||
from downtime.middleware import * |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
#!/usr/bin/env python | ||
|
||
import os, sys | ||
from django.conf import settings | ||
import django | ||
|
||
DIRNAME = os.path.dirname(__file__) | ||
|
||
if django.VERSION[1] < 4: | ||
# If the version is NOT django 4 or greater | ||
# then remove the TZ setting. | ||
|
||
settings.configure(DEBUG=True, | ||
DATABASES={ | ||
'default': { | ||
'ENGINE': 'django.db.backends.sqlite3', | ||
} | ||
}, | ||
INSTALLED_APPS=('django.contrib.auth', | ||
'django.contrib.contenttypes', | ||
'django.contrib.sessions', | ||
'django.contrib.admin', | ||
'downtime',)) | ||
else: | ||
settings.configure(DEBUG=True, | ||
DATABASES={ | ||
'default': { | ||
'ENGINE': 'django.db.backends.sqlite3', | ||
} | ||
}, | ||
INSTALLED_APPS=('django.contrib.auth', | ||
'django.contrib.contenttypes', | ||
'django.contrib.sessions', | ||
'django.contrib.admin', | ||
'downtime',), | ||
USE_TZ=True) | ||
|
||
|
||
try: | ||
# Django 1.7 needs this, but other versions dont. | ||
django.setup() | ||
except AttributeError: | ||
pass | ||
|
||
from django.test.simple import DjangoTestSuiteRunner | ||
test_runner = DjangoTestSuiteRunner(verbosity=1) | ||
failures = test_runner.run_tests(['downtime', ]) | ||
if failures: | ||
sys.exit(failures) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
south | ||
factory_boy | ||
mock |