Пример #1
0
    def test_can_if_an_anonymous_user_has_already_voted_in_a_poll(self):
        # Setup
        def get_rendered(poll, user):
            request = self.request_factory.get('/')
            request.user = user
            t = Template(self.loadstatement +
                         '{% if poll|has_been_completed_by:request.user %}'
                         'HAS_VOTED{% else %}HAS_NOT_VOTED{% endif %}')
            c = Context({'poll': poll, 'request': request})
            rendered = t.render(c)

            return rendered

        u2 = AnonymousUser()
        u2.forum_key = 'dummy'
        u3 = AnonymousUser()
        poll_option_1 = TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollVoteFactory.create(poll_option=poll_option_1,
                                    anonymous_key='dummy')

        # Run & check
        assert get_rendered(self.poll_1, u2) == 'HAS_VOTED'
        assert get_rendered(self.poll_2, u2) == 'HAS_NOT_VOTED'
        assert get_rendered(self.poll_2, u3) == 'HAS_NOT_VOTED'
        assert get_rendered(self.poll_2, u3) == 'HAS_NOT_VOTED'
Пример #2
0
 def test_can_return_a_list_of_all_related_votes(self):
     # Setup
     u2 = UserFactory.create()
     poll = TopicPollFactory.create(topic=self.topic, max_options=2)
     option_1 = TopicPollOptionFactory.create(poll=poll)
     option_2 = TopicPollOptionFactory.create(poll=poll)
     # Run
     vote_1 = TopicPollVoteFactory.create(poll_option=option_1, voter=self.u1)
     vote_2 = TopicPollVoteFactory.create(poll_option=option_2, voter=self.u1)
     vote_3 = TopicPollVoteFactory.create(poll_option=option_2, voter=u2)
     # Check
     assert set(poll.votes) == set([vote_1, vote_2, vote_3])
Пример #3
0
 def test_can_be_used_to_change_a_vote(self):
     # Setup
     self.poll.user_changes = True
     self.poll.save()
     TopicPollVoteFactory.create(voter=self.user, poll_option=self.option_2)
     correct_url = reverse('forum_conversation:topic_poll_vote', kwargs={'pk': self.poll.pk})
     post_data = {
         'options': [self.option_1.pk, ],
     }
     # Run
     response = self.client.post(correct_url, post_data, follow=True)
     # Check
     assert response.status_code == 200
     votes = TopicPollVote.objects.filter(voter=self.user)
     assert votes.count() == 1
     assert votes[0].poll_option == self.option_1
Пример #4
0
    def test_knows_if_a_user_can_vote_again_in_a_poll(self):
        # Setup
        poll_1 = TopicPollFactory.create(topic=self.forum_1_topic, user_changes=True)
        poll_option_1 = TopicPollOptionFactory.create(poll=poll_1)
        TopicPollOptionFactory.create(poll=poll_1)

        poll_2 = TopicPollFactory.create(topic=self.forum_3_topic)
        poll_option_2 = TopicPollOptionFactory.create(poll=poll_2)
        TopicPollOptionFactory.create(poll=poll_2)

        TopicPollVoteFactory.create(poll_option=poll_option_1, voter=self.u1)
        TopicPollVoteFactory.create(poll_option=poll_option_2, voter=self.u1)

        assign_perm('can_vote_in_polls', self.u1, self.forum_1)
        assign_perm('can_vote_in_polls', self.u1, self.forum_3)
        # Run & check
        assert self.perm_handler.can_vote_in_poll(poll_1, self.u1)
        assert not self.perm_handler.can_vote_in_poll(poll_2, self.u1)
Пример #5
0
    def test_knows_if_a_user_can_vote_again_in_a_poll(self):
        # Setup
        poll_1 = TopicPollFactory.create(topic=self.forum_1_topic, user_changes=True)
        poll_option_1 = TopicPollOptionFactory.create(poll=poll_1)
        TopicPollOptionFactory.create(poll=poll_1)

        poll_2 = TopicPollFactory.create(topic=self.forum_3_topic)
        poll_option_2 = TopicPollOptionFactory.create(poll=poll_2)
        TopicPollOptionFactory.create(poll=poll_2)

        TopicPollVoteFactory.create(poll_option=poll_option_1, voter=self.u1)
        TopicPollVoteFactory.create(poll_option=poll_option_2, voter=self.u1)

        assign_perm('can_vote_in_polls', self.u1, self.forum_1)
        assign_perm('can_vote_in_polls', self.u1, self.forum_3)
        # Run & check
        assert self.perm_handler.can_vote_in_poll(poll_1, self.u1)
        assert not self.perm_handler.can_vote_in_poll(poll_2, self.u1)
Пример #6
0
    def test_can_tell_if_an_authenticated_user_has_already_voted_in_a_poll(self):
        # Setup
        def get_rendered(poll, user):
            request = self.request_factory.get('/')
            request.user = user
            t = Template(self.loadstatement + '{% if poll|has_been_completed_by:request.user %}HAS_VOTED{% else %}HAS_NOT_VOTED{% endif %}')
            c = Context({'poll': poll, 'request': request})
            rendered = t.render(c)

            return rendered

        # Setup
        poll_option_1 = TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollVoteFactory.create(poll_option=poll_option_1, voter=self.u1)

        # Run & check
        assert get_rendered(self.poll_1, self.u1) == 'HAS_VOTED'
        assert get_rendered(self.poll_2, self.u1) == 'HAS_NOT_VOTED'
Пример #7
0
    def test_knows_if_an_anonymous_user_can_vote_again_in_a_poll(self):
        # Setup
        u3 = AnonymousUser()
        u3.forum_key = 1
        poll_1 = TopicPollFactory.create(topic=self.forum_1_topic, user_changes=True)
        poll_option_1 = TopicPollOptionFactory.create(poll=poll_1)
        TopicPollOptionFactory.create(poll=poll_1)

        poll_2 = TopicPollFactory.create(topic=self.forum_3_topic)
        poll_option_2 = TopicPollOptionFactory.create(poll=poll_2)
        TopicPollOptionFactory.create(poll=poll_2)

        TopicPollVoteFactory.create(poll_option=poll_option_1, anonymous_key=1)
        TopicPollVoteFactory.create(poll_option=poll_option_2, anonymous_key=1)

        assign_perm('can_vote_in_polls', u3, self.forum_1)
        assign_perm('can_vote_in_polls', u3, self.forum_3)
        # Run & check
        assert self.perm_handler.can_vote_in_poll(poll_1, u3)
        assert not self.perm_handler.can_vote_in_poll(poll_2, u3)
Пример #8
0
 def test_knows_its_percentage(self):
     # Setup
     u2 = UserFactory.create()
     poll = TopicPollFactory.create(topic=self.topic, max_options=2)
     option_1 = TopicPollOptionFactory.create(poll=poll)
     option_2 = TopicPollOptionFactory.create(poll=poll)
     TopicPollVoteFactory.create(poll_option=option_1, voter=self.u1)
     TopicPollVoteFactory.create(poll_option=option_2, voter=self.u1)
     TopicPollVoteFactory.create(poll_option=option_1, voter=u2)
     TopicPollVoteFactory.create(poll_option=option_2, voter=u2)
     # Run & check
     assert option_1.percentage == 50
     assert option_2.percentage == 50
Пример #9
0
    def test_cannot_be_associated_with_a_user_and_a_session_key_at_the_same_time_to_be_created(self):  # noqa
        # Setup
        poll = TopicPollFactory.create(topic=self.topic, max_options=2)
        option_1 = TopicPollOptionFactory.create(poll=poll)
        TopicPollOptionFactory.create(poll=poll)

        # Run & check
        with pytest.raises(ValidationError):
            vote = TopicPollVoteFactory.build(
                poll_option=option_1, voter=self.u1, anonymous_key='ertyue')
            vote.clean()
Пример #10
0
    def test_must_be_associated_with_a_user_or_a_session_key_to_be_created(self):
        # Setup
        poll = TopicPollFactory.create(topic=self.topic, max_options=2)
        option_1 = TopicPollOptionFactory.create(poll=poll)
        TopicPollOptionFactory.create(poll=poll)

        # Run & check
        with pytest.raises(ValidationError):
            vote = TopicPollVoteFactory.build(
                poll_option=option_1, voter=None, anonymous_key=None)
            vote.clean()
Пример #11
0
    def test_cannot_be_associated_with_a_user_and_a_session_key_at_the_same_time_to_be_created(self):  # noqa
        # Setup
        poll = TopicPollFactory.create(topic=self.topic, max_options=2)
        option_1 = TopicPollOptionFactory.create(poll=poll)
        TopicPollOptionFactory.create(poll=poll)

        # Run & check
        with pytest.raises(ValidationError):
            vote = TopicPollVoteFactory.build(
                poll_option=option_1, voter=self.u1, anonymous_key='ertyue')
            vote.clean()
Пример #12
0
    def test_must_be_associated_with_a_user_or_a_session_key_to_be_created(self):
        # Setup
        poll = TopicPollFactory.create(topic=self.topic, max_options=2)
        option_1 = TopicPollOptionFactory.create(poll=poll)
        TopicPollOptionFactory.create(poll=poll)

        # Run & check
        with pytest.raises(ValidationError):
            vote = TopicPollVoteFactory.build(
                poll_option=option_1, voter=None, anonymous_key=None)
            vote.clean()
Пример #13
0
    def test_knows_if_an_anonymous_user_can_vote_again_in_a_poll(self):
        # Setup
        u3 = AnonymousUser()
        u3.forum_key = 1
        poll_1 = TopicPollFactory.create(topic=self.forum_1_topic, user_changes=True)
        poll_option_1 = TopicPollOptionFactory.create(poll=poll_1)
        TopicPollOptionFactory.create(poll=poll_1)

        poll_2 = TopicPollFactory.create(topic=self.forum_3_topic)
        poll_option_2 = TopicPollOptionFactory.create(poll=poll_2)
        TopicPollOptionFactory.create(poll=poll_2)

        TopicPollVoteFactory.create(poll_option=poll_option_1, anonymous_key=1)
        TopicPollVoteFactory.create(poll_option=poll_option_2, anonymous_key=1)

        assign_perm('can_vote_in_polls', u3, self.forum_1)
        assign_perm('can_vote_in_polls', u3, self.forum_3)
        # Run & check
        assert self.perm_handler.can_vote_in_poll(poll_1, u3)
        assert not self.perm_handler.can_vote_in_poll(poll_2, u3)
Пример #14
0
    def test_can_tell_if_an_authenticated_user_has_already_voted_in_a_poll(self):
        # Setup
        def get_rendered(poll, user):
            request = self.request_factory.get('/')
            request.user = user
            t = Template(
                self.loadstatement + '{% if poll|has_been_completed_by:request.user %}HAS_VOTED'
                                     '{% else %}HAS_NOT_VOTED{% endif %}')
            c = Context({'poll': poll, 'request': request})
            rendered = t.render(c)

            return rendered

        # Setup
        poll_option_1 = TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollVoteFactory.create(poll_option=poll_option_1, voter=self.u1)

        # Run & check
        assert get_rendered(self.poll_1, self.u1) == 'HAS_VOTED'
        assert get_rendered(self.poll_2, self.u1) == 'HAS_NOT_VOTED'
Пример #15
0
    def test_can_if_an_anonymous_user_has_already_voted_in_a_poll(self):
        # Setup
        def get_rendered(poll, user):
            request = self.request_factory.get('/')
            request.user = user
            t = Template(self.loadstatement + '{% if poll|has_been_completed_by:request.user %}HAS_VOTED{% else %}HAS_NOT_VOTED{% endif %}')
            c = Context({'poll': poll, 'request': request})
            rendered = t.render(c)

            return rendered

        u2 = AnonymousUser()
        u2.forum_key = 'dummy'
        u3 = AnonymousUser()
        poll_option_1 = TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollOptionFactory.create(poll=self.poll_1)
        TopicPollVoteFactory.create(poll_option=poll_option_1, anonymous_key='dummy')

        # Run & check
        assert get_rendered(self.poll_1, u2) == 'HAS_VOTED'
        assert get_rendered(self.poll_2, u2) == 'HAS_NOT_VOTED'
        assert get_rendered(self.poll_2, u3) == 'HAS_NOT_VOTED'
        assert get_rendered(self.poll_2, u3) == 'HAS_NOT_VOTED'