Statistics
| Branch: | Tag: | Revision:

root / logic / tests.py @ 92c53da1

History | View | Annotate | Download (1.8 kB)

1 09c936a7 Vassilios Karakoidas
#
2 09c936a7 Vassilios Karakoidas
# Unit Tests for logic
3 09c936a7 Vassilios Karakoidas
#
4 09c936a7 Vassilios Karakoidas
# Provides automated tests for logic module
5 09c936a7 Vassilios Karakoidas
#
6 09c936a7 Vassilios Karakoidas
# Copyright 2010 Greek Research and Technology Network
7 09c936a7 Vassilios Karakoidas
#
8 92c53da1 Vassilios Karakoidas
9 92c53da1 Vassilios Karakoidas
from db.models import *
10 92c53da1 Vassilios Karakoidas
11 92c53da1 Vassilios Karakoidas
from logic import credits
12 92c53da1 Vassilios Karakoidas
13 92c53da1 Vassilios Karakoidas
from django.test import TestCase
14 92c53da1 Vassilios Karakoidas
15 92c53da1 Vassilios Karakoidas
16 92c53da1 Vassilios Karakoidas
class ChargeTestCase(TestCase):
17 92c53da1 Vassilios Karakoidas
    fixtures = [ 'db_test_data' ]
18 92c53da1 Vassilios Karakoidas
19 92c53da1 Vassilios Karakoidas
    def test_charge_method(self):
20 92c53da1 Vassilios Karakoidas
        """Test VirtualMachine.charge() method"""
21 92c53da1 Vassilios Karakoidas
22 92c53da1 Vassilios Karakoidas
        # Since we have tested the costs, with this test
23 92c53da1 Vassilios Karakoidas
        # we must ensure the following:
24 92c53da1 Vassilios Karakoidas
        # 1. The vm.charged is updated
25 92c53da1 Vassilios Karakoidas
        # 2. Users credits are decreased
26 92c53da1 Vassilios Karakoidas
27 92c53da1 Vassilios Karakoidas
        vm_started = VirtualMachine.objects.get(pk=30000)
28 92c53da1 Vassilios Karakoidas
29 92c53da1 Vassilios Karakoidas
        initial_date = vm_started.charged
30 92c53da1 Vassilios Karakoidas
        initial_credits = vm_started.owner.credit
31 92c53da1 Vassilios Karakoidas
32 92c53da1 Vassilios Karakoidas
        credits.charge(vm_started)
33 92c53da1 Vassilios Karakoidas
34 92c53da1 Vassilios Karakoidas
        self.assertTrue(vm_started.charged > initial_date, 'Initial charged date should not be greater')
35 92c53da1 Vassilios Karakoidas
        self.assertTrue(initial_credits > vm_started.owner.credit, 'The user should have less credits now! (%d>%d)' % (initial_credits, vm_started.owner.credit))
36 92c53da1 Vassilios Karakoidas
37 92c53da1 Vassilios Karakoidas
38 92c53da1 Vassilios Karakoidas
class SynnefoUserTestCase(TestCase):
39 92c53da1 Vassilios Karakoidas
    fixtures = [ 'db_test_data' ]
40 92c53da1 Vassilios Karakoidas
41 92c53da1 Vassilios Karakoidas
    def test_synnefo_user(self):
42 92c53da1 Vassilios Karakoidas
        """Test a SynnefoUser object"""
43 92c53da1 Vassilios Karakoidas
        s_user = SynnefoUser.objects.get(pk=30000)
44 92c53da1 Vassilios Karakoidas
        v_machine = VirtualMachine.objects.get(pk=30000)
45 92c53da1 Vassilios Karakoidas
46 92c53da1 Vassilios Karakoidas
        # charge the user
47 92c53da1 Vassilios Karakoidas
        credits.debit_account(s_user, 10, v_machine, "This should be a structured debit message!")
48 92c53da1 Vassilios Karakoidas
49 92c53da1 Vassilios Karakoidas
        # should have only one debit object
50 92c53da1 Vassilios Karakoidas
        d_list = Debit.objects.all()
51 92c53da1 Vassilios Karakoidas
52 92c53da1 Vassilios Karakoidas
        self.assertEqual(len(d_list), 1, 'SynnefoUser.debit_account() writes more than one or zero (%d) debit entries!' % ( len(d_list), ))
53 92c53da1 Vassilios Karakoidas
54 92c53da1 Vassilios Karakoidas
        # retrieve the user, now he/she should have zero credits
55 92c53da1 Vassilios Karakoidas
        s_user = SynnefoUser.objects.get(pk=30000)
56 92c53da1 Vassilios Karakoidas
57 92c53da1 Vassilios Karakoidas
        self.assertEqual(0, s_user.credit, 'SynnefoUser (pk=30000) should have zero credits (%d)' % ( s_user.credit, ))