Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
fun-apps / payment / tests / test_terms.py
Size: Mime:
# -*- coding: utf-8 -*-

from django.test import TestCase

from student.tests.factories import UserFactory

from fun.tests.utils import skipUnlessLms

from ..models import TermsAndConditions, UserAcceptance

from factories import TermsAndConditionsFactory, TranslatedTermsFactory

@skipUnlessLms
class TermsAndConditionTest(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.terms1v10 = TermsAndConditionsFactory(name='test1', version='1.0',
                text=u"https://xkcd.com/501/")
        self.terms1v11 = TermsAndConditionsFactory(name='test1', version='1.1',
                text=self.terms1v10.text)
        self.terms2v10 = TermsAndConditionsFactory(name='test2', version='1.0',
                text=self.terms1v10.text)

    def test_get_latest(self):
        terms = TermsAndConditions.get_latest(name='test1')
        self.assertEqual('1.1', terms.version)

    def test_user_never_accepted(self):
        terms = TermsAndConditions.user_has_to_accept_new_version(
                name='test1', user=self.user)
        self.assertEqual(self.terms1v11, terms)

        terms = TermsAndConditions.user_has_to_accept_new_version(
                name='test2', user=self.user)
        self.assertEqual(self.terms2v10, terms)

        terms = TermsAndConditions.user_has_to_accept_new_version(
                name='non-existent', user=self.user)
        self.assertEqual(False, terms)

    def test_user_accept_terms(self):
        terms = TermsAndConditions.user_has_to_accept_new_version(
                name='test1', user=self.user)
        result = terms.accept(user=self.user)
        self.assertEqual(True, result)
        result = terms.accept(user=self.user)
        self.assertEqual(False, result)  # already accepted this version

        terms = TermsAndConditions.user_has_to_accept_new_version(
                name='test1', user=self.user)
        self.assertEqual(False, result)  # already accepted latest

    def test_user_has_already_acccepted(self):
        UserAcceptance.objects.create(user=self.user, terms=self.terms1v11)
        terms = TermsAndConditions.user_has_to_accept_new_version(
                name='test1', user=self.user)
        self.assertEqual(False, terms)

    def test_version_zero(self):
        """if a terms has a version 0 we want to considere it as automaticaly accepted."""
        TermsAndConditions.objects.create(name='test3', version='0',
                text=u"https://xkcd.com/501/")
        terms = TermsAndConditions.user_has_to_accept_new_version(
                name='test3', user=self.user)
        self.assertEqual(False, terms)