view downloads/tests/test_receivers.py @ 967:734a4a350bd5

Merge with upstream.
author Brian Neal <bgneal@gmail.com>
date Wed, 02 Sep 2015 20:50:44 -0500
parents 9f9e50df5b83
children
line wrap: on
line source
"""Tests for the downloads app signal handlers."""

from django.contrib.auth.models import User
from django.test import TestCase

from mock import Mock

import custom_search.receivers

from downloads.models import Category
from downloads.models import Download
from downloads.models import PendingDownload


class ReceiverTestCase(TestCase):

    fixtures = ['downloads_categories.json']

    def setUp(self):
        self.user = User.objects.create_user('user', 'user@example.com', 'pw')

        # Don't let our custom search signal handler class catch any of the
        # signals we are throwing here.
        custom_search.receivers.signal_processor.teardown()

    def tearDown(self):
        custom_search.receivers.signal_processor.setup()

    def test_download_signal_handlers(self):

        category = Category.objects.get(pk=1)
        dl = Download(category=category,
                      title='Title',
                      description='Cool stuff',
                      is_public=True,
                      user=self.user,
                      ip_address='127.0.0.1')
        dl.save()

        category = Category.objects.get(pk=1)
        self.assertEqual(1, category.count)

        category2 = Category.objects.get(pk=4)
        dl.category = category2
        dl.save()

        category = Category.objects.get(pk=1)
        self.assertEqual(0, category.count)
        category2 = Category.objects.get(pk=4)
        self.assertEqual(1, category2.count)

        dl.delete()
        category2 = Category.objects.get(pk=4)
        self.assertEqual(0, category2.count)

    def test_pending_download_signal_handlers(self):

        category = Category.objects.get(pk=1)
        dl = PendingDownload(
                category=category,
                title='Title',
                description='Cool stuff',
                user=self.user,
                ip_address='127.0.0.1')
        dl.save()

        dl.file = Mock()
        dl.delete()

        dl.file.delete.assert_called_with(save=False)