1 # -*- coding: utf-8 -*-
2 from datetime import datetime
5 from openerp.tests.common import TransactionCase
6 from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
9 # ---------------------------------------------------------
11 # ---------------------------------------------------------
12 class TestTheoreticalAmount(TransactionCase):
14 super(TestTheoreticalAmount, self).setUp()
15 cr, uid, = self.cr, self.uid
16 crossovered_budget_id = self.registry('crossovered.budget').create(cr, uid, {
17 'name': 'test budget name',
18 'code': 'test budget code',
19 'date_from': '2014-01-01',
20 'date_to': '2014-12-31',
22 crossovered_budget_line_obj = self.registry('crossovered.budget.lines')
23 crossovered_budget_line_id = crossovered_budget_line_obj.create(cr, uid, {
24 'crossovered_budget_id': crossovered_budget_id,
25 'general_budget_id': self.ref('account_budget.account_budget_post_sales0'),
26 'date_from': '2014-01-01',
27 'date_to': '2014-12-31',
28 'planned_amount': -364,
30 self.line = crossovered_budget_line_obj.browse(cr, uid, crossovered_budget_line_id)
32 self.patcher = patch('openerp.addons.account_budget.account_budget.datetime', wraps=datetime)
33 self.mock_datetime = self.patcher.start()
37 date = datetime.strptime('2014-01-01 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
38 self.mock_datetime.now.return_value = date
39 self.assertEqual(self.line.theoritical_amount, 0)
43 date = datetime.strptime('2014-01-02 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
44 self.mock_datetime.now.return_value = date
45 self.assertEqual(self.line.theoritical_amount, -1)
49 date = datetime.strptime('2014-01-02 12:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
50 self.mock_datetime.now.return_value = date
51 self.assertEqual(self.line.theoritical_amount, -1.5)
55 date = datetime.strptime('2014-01-03 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
56 self.mock_datetime.now.return_value = date
57 self.assertEqual(self.line.theoritical_amount, -2)
61 date = datetime.strptime('2014-01-11 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
62 self.mock_datetime.now.return_value = date
63 self.assertEqual(self.line.theoritical_amount, -10)
67 date = datetime.strptime('2014-02-20 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
68 self.mock_datetime.now.return_value = date
69 self.assertEqual(self.line.theoritical_amount, -50)
72 """After 182 days, exactly half of the budget line"""
73 date = datetime.strptime('2014-07-02 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
74 self.mock_datetime.now.return_value = date
75 self.assertEqual(self.line.theoritical_amount, -182)
78 """After 308 days at noon"""
79 date = datetime.strptime('2014-11-05 12:00:00', DEFAULT_SERVER_DATETIME_FORMAT) # remember, remember
80 self.mock_datetime.now.return_value = date
81 self.assertEqual(self.line.theoritical_amount, -308.5)
85 date = datetime.strptime('2014-12-30 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
86 self.mock_datetime.now.return_value = date
87 self.assertEqual(self.line.theoritical_amount, -363)
91 date = datetime.strptime('2014-12-31 00:00:00', DEFAULT_SERVER_DATETIME_FORMAT)
92 self.mock_datetime.now.return_value = date
93 self.assertEqual(self.line.theoritical_amount, -364)
97 super(TestTheoreticalAmount, self).tearDown()