Esempio n. 1
0
    def test_custom_per_project_upper_limit(self):
        """Error if trying to donate more than a project needs"""
        data = {'payment_amount': '50.00'}
        account = Account(goal=8000, current=3001)
        form = DonationAmountForm(data=data, account=account)
        self.assertFalse(form.is_valid())
        errors = form.errors.as_data()
        self.assertEqual('max_value', errors['payment_amount'][0].code)
        self.assertTrue('$49.99' in errors['payment_amount'][0].message)

        account.current = 3000
        form = DonationAmountForm(data=data, account=account)
        self.assertTrue(form.is_valid())
Esempio n. 2
0
    def test_custom_per_project_upper_limit(self):
        """Error if trying to donate more than a project needs"""
        data = {'payment_amount': '50.00'}
        account = Account(goal=8000, current=3001)
        form = DonationAmountForm(data=data, account=account)
        self.assertFalse(form.is_valid())
        errors = form.errors.as_data()
        self.assertEqual('max_value', errors['payment_amount'][0].code)
        self.assertTrue('$49.99' in errors['payment_amount'][0].message)

        account.current = 3000
        form = DonationAmountForm(data=data, account=account)
        self.assertTrue(form.is_valid())
Esempio n. 3
0
    def test_serialize_account(self):
        account = Account()
        project = Project(account=account)

        result = api._serialize_account(project)
        self.assertEqual(result['goal'], None)
        self.assertEqual(result['community_contribution'], None)
        self.assertEqual(result['total_donated'], 0)
        self.assertEqual(result['total_raised'], 0)
        self.assertEqual(result['total_cost'], 0)
        self.assertEqual(result['percent_raised'], 0)
        self.assertEqual(result['percent_community'], 0)
        self.assertEqual(result['remaining'], 0)
        self.assertEqual(result['funded'], False)

        account.goal = 2400
        account.community_contribution = 600
        account.current = 900
        result = api._serialize_account(project)
        self.assertEqual(result['goal'], 2400)
        self.assertEqual(result['community_contribution'], 600)
        self.assertEqual(result['total_donated'], 900)
        self.assertEqual(result['total_raised'], 1500)
        self.assertEqual(result['total_cost'], 3000)
        self.assertEqual(result['percent_raised'], 50)
        self.assertEqual(result['percent_community'], 20)
        self.assertEqual(result['remaining'], 1500)
        self.assertEqual(result['funded'], False)

        account.current = 2400
        result = api._serialize_account(project)
        self.assertEqual(result['total_donated'], 2400)
        self.assertEqual(result['total_raised'], 3000)
        self.assertEqual(result['percent_raised'], 100)
        self.assertEqual(result['remaining'], 0)
        self.assertEqual(result['funded'], True)
Esempio n. 4
0
    def test_amount_errors(self):
        pd = api.ProjectDonation()
        host = 'example.com'
        account = Account(goal=200, current=0)
        # no payment amount
        data = {}
        result = pd.errors_or_paygov(account, data, host)
        self.assertEqual(result.status_code, 400)
        self.assertTrue('amount' in result.content.decode('utf-8'))

        # low payment amount
        data['payment_amount'] = '0.99'
        result = pd.errors_or_paygov(account, data, host)
        self.assertEqual(result.status_code, 400)
        self.assertTrue('amount' in result.content.decode('utf-8'))

        # high payment amount
        data['payment_amount'] = '10000'
        result = pd.errors_or_paygov(account, data, host)
        self.assertEqual(result.status_code, 400)
        self.assertTrue('amount' in result.content.decode('utf-8'))

        # too much for project
        data['payment_amount'] = '3'
        result = pd.errors_or_paygov(account, data, host)
        self.assertEqual(result.status_code, 400)
        self.assertTrue('amount' in result.content.decode('utf-8'))

        # passes the amount test but not the donor form
        data['payment_amount'] = '2'
        result = pd.errors_or_paygov(account, data, host)
        self.assertEqual(result.status_code, 400)
        self.assertTrue('amount' not in result.content.decode('utf-8'))

        # account is full
        account.current = 200
        result = pd.errors_or_paygov(account, data, host)
        self.assertEqual(result.status_code, 400)
        self.assertTrue('amount' in result.content.decode('utf-8'))