Skip to content

Commit

Permalink
added tests for the logic of mii_rss
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexis Durand committed Jan 11, 2016
1 parent 93646e7 commit a071303
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 16 deletions.
24 changes: 24 additions & 0 deletions mii_rss/factories.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from datetime import timedelta

from django.utils import timezone
from factory import DjangoModelFactory
from factory.fuzzy import FuzzyInteger, FuzzyChoice, FuzzyDateTime

from mii_rss.models import FeedDownloaded, FeedEntries


class FeedDownloadedFactory(DjangoModelFactory):
class Meta:
model = FeedDownloaded
django_get_or_create = ('re_filter', 'season', 'episode',)

season = FuzzyInteger(0, 20)
episode = FuzzyInteger(0, 20)
re_filter = FuzzyChoice(['Serie1', 'Serie2', 'Serie3'])


class FeedEntriesFactory(DjangoModelFactory):
class Meta:
model = FeedEntries
json_entries = '{"entries": [{"link": "/file.torrent?", "title": "file"}]}'
date = FuzzyDateTime(timezone.now() - timedelta(days=2))
2 changes: 1 addition & 1 deletion mii_rss/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ class FeedEntries(Model):
date = DateTimeField(default=timezone.now)

class Meta:
get_latest_by = 'date'
get_latest_by = 'date'
18 changes: 4 additions & 14 deletions tests/test_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,10 @@

class TestViews(TestCase):
def setUp(self):
MovieTaggingFactory.create()
MovieTaggingFactory.create()
MovieTaggingFactory.create()
MovieRelationFactory.create()
MovieRelationFactory.create()
MovieRelationFactory.create()
MovieRelationFactory.create()
EpisodeFactory.create()
EpisodeFactory.create()
EpisodeFactory.create()
EpisodeFactory.create()
EpisodeFactory.create()
ReportFactory.create()
ReportFactory.create()
MovieTaggingFactory.create_batch(3)
MovieRelationFactory.create_batch(5)
EpisodeFactory.create_batch(6)
ReportFactory.create_batch(5)
self.report = ReportFactory.create()

def test_index(self):
Expand Down
19 changes: 18 additions & 1 deletion tests/test_mii_rss.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import mock
from django.test import TestCase, override_settings
from fake_filesystem_unittest import TestCase as FakeFsTestCase

from mii_rss.factories import FeedEntriesFactory
from mii_rss.logic import already_exists, match, get_or_create_downloading_object, get_dict_from_feeds
from mii_rss.models import FeedDownloaded, FeedEntries
from mii_rss.tasks import check_feed_and_download_torrents
from mii_rss.tasks import check_feed_and_download_torrents, recheck_feed_and_download_torrents
from mii_sorter.models import Season, Episode
from mii_sorter.models import Serie

Expand Down Expand Up @@ -139,4 +141,19 @@ def test_task_feed_matching_downloading(self, feedparser, urllib):
check_feed_and_download_torrents()
assert urllib.urlretrieve.called

@mock.patch('mii_rss.tasks.urllib')
@mock.patch('mii_rss.tasks.feedparser')
@mock.patch('mii_rss.tasks.get_or_create_downloading_object')
def test_task_feed_matching_already_downloading(self, get_or_create, feedparser, urllib):
get_or_create.return_value = False
feedparser.parse.return_value = {'status': 200,
'entries': [{'title': 'non_matching', 'link': '/test.torrent?'}]
}
check_feed_and_download_torrents()
assert not urllib.urlretrieve.called

@mock.patch('mii_rss.tasks.process_feeds')
def test_recheck_feeds(self, process_feeds):
FeedEntriesFactory.create_batch(10)
recheck_feed_and_download_torrents()
assert process_feeds.called

0 comments on commit a071303

Please sign in to comment.