Skip to content
Extraits de code Groupes Projets
tests.py 2,54 ko
Newer Older
Jamesie Pic's avatar
Jamesie Pic a validé
import datetime
import copy
Jamesie Pic's avatar
Jamesie Pic a validé
from django.test import TestCase, Client

from legislature.models import MemopolRepresentative
from positions.models import Position


class PositionTest(TestCase):
    def setUp(self):
        self.client = Client()
        self.tags = [u'foo', u'bar']

        self.mep = MemopolRepresentative.objects.create(
            full_name='%sfull' % self.id(), slug='slug')

        self.fixture = {
            'tags': ','.join(self.tags),
            'datetime': '2015-12-11',
            'text': '%stext' % self.id(),
            'link': 'http://example.com/%slink' % self.id(),
            'representative': self.mep.pk,
        }

    def test_create_position(self):
        response = self.client.post('/positions/create', self.fixture)
        expected = 'http://testserver/legislature/slug'
        assert response['Location'] == expected

        result = Position.objects.get(text='%stext' % self.id())
        assert list(result.tags.values_list('name', flat=True)) == self.tags
        assert result.datetime == datetime.date(2015, 12, 11)
        assert result.link == self.fixture['link']
        assert result.representative.representative_ptr_id == self.mep.pk
        assert result.published is False

    def test_position_publishing(self):
        self.client.post('/positions/create', self.fixture)
        position = Position.objects.get(text='%stext' % self.id())

        get_response = self.client.get(position.get_absolute_url())
        assert get_response.status_code == 404

        position.published = True
        position.save()

        get_response = self.client.get(position.get_absolute_url())
        assert get_response.status_code == 200

    def test_create_position_without_field(self):
        for key in self.fixture.keys():
            fixture = copy.copy(self.fixture)
            fixture.pop(key)

            response = self.client.post('/positions/create', fixture)
            assert response.context['form'].is_valid() is False

    def test_position_detail(self):
        fixture = copy.copy(self.fixture)
        fixture['representative'] = self.mep
        fixture.pop('tags')

        position = Position.objects.create(published=True, **fixture)
        position.tags.add('%stag' % self.id())

        response = self.client.get(position.get_absolute_url())

        assert 'Dec. 11, 2015' in response.content
        assert '%stag' % self.id() in response.content
        assert fixture['link'] in response.content
        assert fixture['text'] in response.content
        assert self.mep.full_name in response.content