From 32b452dd1ce6e85305233308c91e5e653efd0837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 4 Mar 2010 14:09:16 +0100 Subject: [PATCH] New unittest design --- tests/test_currency.py | 105 +++++++++++++++++++++++++---------------- 1 file changed, 65 insertions(+), 40 deletions(-) diff --git a/tests/test_currency.py b/tests/test_currency.py index fff367ab99..2a9502284c 100644 --- a/tests/test_currency.py +++ b/tests/test_currency.py @@ -2,6 +2,9 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. +import logging +logging.basicConfig(level=logging.FATAL) + import sys, os DIR = os.path.abspath(os.path.normpath(os.path.join(__file__, '..', '..', '..', '..', '..', 'trytond'))) @@ -10,7 +13,7 @@ if os.path.isdir(DIR): import unittest import trytond.tests.test_tryton -from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK, test_view +from trytond.tests.test_tryton import POOL, DB, USER, CONTEXT, test_view from decimal import Decimal @@ -21,12 +24,17 @@ class CurrencyTestCase(unittest.TestCase): def setUp(self): trytond.tests.test_tryton.install_module('currency') - self.rate = RPCProxy('currency.currency.rate') - self.currency = RPCProxy('currency.currency') - self.date = RPCProxy('ir.date') + self.rate = POOL.get('currency.currency.rate') + self.currency = POOL.get('currency.currency') + self.date = POOL.get('ir.date') + self.cursor = DB.cursor() + + def tearDown(self): + self.cursor.commit() + self.cursor.close() def get_currency(self, code): - return self.currency.search([ + return self.currency.search(self.cursor, USER, [ ('code', '=', code), ], 0, 1, None, CONTEXT)[0] @@ -40,13 +48,13 @@ class CurrencyTestCase(unittest.TestCase): ''' Create currencies ''' - cu1_id = self.currency.create({ + cu1_id = self.currency.create(self.cursor, USER, { 'name': 'cu1', 'symbol': 'cu1', 'code': 'cu1' }, CONTEXT) self.assert_(cu1_id) - cu2_id = self.currency.create({ + cu2_id = self.currency.create(self.cursor, USER, { 'name': 'cu2', 'symbol': 'cu2', 'code': 'cu2' @@ -58,16 +66,16 @@ class CurrencyTestCase(unittest.TestCase): Check grouping ''' cu1_id = self.get_currency('cu1') - self.assertRaises(Exception, self.currency.write, + self.assertRaises(Exception, self.currency.write, self.cursor, USER, cu1_id, {'mon_grouping': ''}, CONTEXT) - self.assertRaises(Exception, self.currency.write, + self.assertRaises(Exception, self.currency.write, self.cursor, USER, cu1_id, {'mon_grouping': '[a]'}, CONTEXT) - self.assertRaises(Exception, self.currency.write, + self.assertRaises(Exception, self.currency.write, self.cursor, USER, cu1_id, {'mon_grouping': '[1,"a"]'}, CONTEXT) - self.assertRaises(Exception, self.currency.write, + self.assertRaises(Exception, self.currency.write, self.cursor, USER, cu1_id, {'mon_grouping': '[1,"1"]'}, CONTEXT) def test0030rate(self): @@ -78,44 +86,47 @@ class CurrencyTestCase(unittest.TestCase): cu2_id = self.get_currency('cu2') rate1 = Decimal("1.3") - rate1_id = self.rate.create({ + rate1_id = self.rate.create(self.cursor, USER, { 'rate': rate1, 'currency': cu1_id, }, CONTEXT) self.assert_(rate1_id) - rate2_id = self.rate.create({ + rate2_id = self.rate.create(self.cursor, USER, { 'rate': 1, 'currency': cu2_id, }, CONTEXT) self.assert_(rate2_id) - self.assertEqual(rate1, self.currency.read( + self.assertEqual(rate1, self.currency.read(self.cursor, USER, cu1_id, ['rate'], CONTEXT)['rate']) def test0040rate_unicity(self): ''' Rate unicity ''' - today = self.date.today(CONTEXT) + cursor = DB.cursor() + today = self.date.today(cursor, USER, CONTEXT) - cu_id = self.currency.create({ + cu_id = self.currency.create(cursor, USER, { 'name': 'cu', 'symbol': 'cu', 'code': 'cu' }, CONTEXT) - rate1_id = self.rate.create({ + rate1_id = self.rate.create(cursor, USER, { 'rate': 1.3, 'currency': cu_id, 'date': today, }, CONTEXT) - self.assertRaises(Exception, self.rate.create, { + self.assertRaises(Exception, self.rate.create, cursor, USER, { 'rate': 1.3, 'currency': cu_id, 'date': today, }, CONTEXT) + cursor.rollback() + cursor.close() def test0050compute_simple(self): ''' @@ -126,7 +137,7 @@ class CurrencyTestCase(unittest.TestCase): amount = Decimal("10") expected = Decimal("13") - converted_amount = self.currency.compute( + converted_amount = self.currency.compute(self.cursor, USER, cu2_id, amount, cu1_id, True, CONTEXT) self.assertEqual(converted_amount, expected) @@ -139,7 +150,7 @@ class CurrencyTestCase(unittest.TestCase): amount = Decimal("10") expected = Decimal("7.69") - converted_amount = self.currency.compute( + converted_amount = self.currency.compute(self.cursor, USER, cu1_id, amount, cu2_id, True, CONTEXT) self.assert_(converted_amount == expected) @@ -152,7 +163,7 @@ class CurrencyTestCase(unittest.TestCase): amount = Decimal("10") expected = Decimal('7.692307692307692307692307692') - converted_amount = self.currency.compute( + converted_amount = self.currency.compute(self.cursor, USER, cu1_id, amount, cu2_id, False, CONTEXT) self.assert_(converted_amount == expected) @@ -163,7 +174,7 @@ class CurrencyTestCase(unittest.TestCase): cu1_id = self.get_currency('cu1') amount = Decimal("10") - converted_amount = self.currency.compute( + converted_amount = self.currency.compute(self.cursor, USER, cu1_id, amount, cu1_id, True, CONTEXT) self.assert_(converted_amount == amount) @@ -176,7 +187,7 @@ class CurrencyTestCase(unittest.TestCase): amount = Decimal("10") expected = Decimal("0") - converted_amount = self.currency.compute( + converted_amount = self.currency.compute(self.cursor, USER, cu1_id, Decimal("0"), cu2_id, True, CONTEXT) self.assert_(converted_amount == expected) @@ -184,13 +195,14 @@ class CurrencyTestCase(unittest.TestCase): ''' Conversion with zero rate ''' + cursor = DB.cursor() cu1_id = self.get_currency('cu1') cu2_id = self.get_currency('cu2') - rate_ids = self.rate.search([ + rate_ids = self.rate.search(cursor, USER, [ ('currency', '=', cu1_id), ], 0, 1, None, CONTEXT) - self.rate.write(rate_ids, { + self.rate.write(cursor, USER, rate_ids, { 'rate': 0, }, CONTEXT) amount = Decimal("10") @@ -198,59 +210,72 @@ class CurrencyTestCase(unittest.TestCase): cu1_id, amount, cu2_id, True, CONTEXT) self.assertRaises(Exception, self.currency.compute, cu2_id, amount, cu1_id, True, CONTEXT) + cursor.rollback() + cursor.close() def test0110compute_missingrate(self): ''' Conversion with missing rate ''' + cursor = DB.cursor() cu1_id = self.get_currency('cu1') - cu3_id = self.currency.create({ + cu3_id = self.currency.create(cursor, USER, { 'name': 'cu3', 'symbol': 'cu3', 'code': 'cu3' }, CONTEXT) amount = Decimal("10") - self.assertRaises(Exception, self.currency.compute, + self.assertRaises(Exception, self.currency.compute, cursor, USER, cu3_id, amount, cu1_id, True, CONTEXT) - self.assertRaises(Exception, self.currency.compute, + self.assertRaises(Exception, self.currency.compute, cursor, USER, cu1_id, amount, cu3_id, True, CONTEXT) + cursor.rollback() + cursor.close() def test0120compute_bothmissingrate(self): ''' Conversion with both missing rate ''' - cu3_id = self.get_currency('cu3') - cu4_id = self.currency.create({ + cursor = DB.cursor() + cu3_id = self.currency.create(cursor, USER, { + 'name': 'cu3', + 'symbol': 'cu3', + 'code': 'cu3' + }, CONTEXT) + cu4_id = self.currency.create(cursor, USER, { 'name': 'cu4', 'symbol': 'cu4', 'code': 'cu4' }, CONTEXT) amount = Decimal("10") - self.assertRaises(Exception, self.currency.compute, + self.assertRaises(Exception, self.currency.compute, cursor, USER, cu3_id, amount, cu4_id, True, CONTEXT) + cursor.rollback() + cursor.close() def test0130delete_cascade(self): ''' Test deletion of currency deletes rates ''' - codes = ['cu%s' % (i + 1) for i in range(4)] + cursor = DB.cursor() + codes = ['cu%s' % (i + 1) for i in range(2)] currency_ids = [self.get_currency(i) for i in codes] - self.currency.delete(currency_ids, CONTEXT) + self.currency.delete(cursor, USER, currency_ids, CONTEXT) - rate_ids = self.rate.search([( + rate_ids = self.rate.search(cursor, USER, [( 'currency', 'in', currency_ids, )], 0, None, None, CONTEXT) self.assertFalse(rate_ids) + cursor.rollback() + cursor.close() def suite(): - return unittest.TestLoader().loadTestsFromTestCase(CurrencyTestCase) + suite = trytond.tests.test_tryton.suite() + suite.addTests(unittest.TestLoader().loadTestsFromTestCase(CurrencyTestCase)) + return suite if __name__ == '__main__': - suiteTrytond = trytond.tests.test_tryton.suite() - suiteCurrency = suite() - alltests = unittest.TestSuite([suiteTrytond, suiteCurrency]) - unittest.TextTestRunner(verbosity=2).run(alltests) - SOCK.disconnect() + unittest.TextTestRunner(verbosity=2).run(suite())