From daf6a8660df1db2a1c75a2217b575f1fb98f510d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 19 Sep 2013 15:25:01 +0200 Subject: [PATCH] [ADD] unit tests + test data --- .../tests/data/faulty_moves.csv | 7 ++ .../tests/data/one_move.csv | 6 +- .../tests/data/one_move2.csv | 4 + .../tests/test_async_import.py | 73 ++++++++++++++++--- 4 files changed, 75 insertions(+), 15 deletions(-) create mode 100644 async_move_line_importer/tests/data/faulty_moves.csv create mode 100644 async_move_line_importer/tests/data/one_move2.csv diff --git a/async_move_line_importer/tests/data/faulty_moves.csv b/async_move_line_importer/tests/data/faulty_moves.csv new file mode 100644 index 000000000..5b619f323 --- /dev/null +++ b/async_move_line_importer/tests/data/faulty_moves.csv @@ -0,0 +1,7 @@ +ref;date;period_id;journal_id;line_id / account_id;line_id / partner_id;line_id / name;line_id / debit;line_id / credit;line_id/tax_code_id +test_3;2013-10-01;X 01/2013;MISC;X2001;Camptocamp;TEST C2C;;1000;Tax Received +;;;;X11003;Camptocamp;TEST C2C;;200;Tax Paid +;;;;X11002;Camptocamp;TEST C2C;1200;; +test_3b;2013-10-01;X 01/2013;MISC;X2001;Camptocamp;TEST C2C;;1000;Tax Received +;;;;X11003;Camptocamp;TEST C2C;;200;Faulty code +;;;;X11002;Camptocamp;TEST C2C;1200;; \ No newline at end of file diff --git a/async_move_line_importer/tests/data/one_move.csv b/async_move_line_importer/tests/data/one_move.csv index 5407b8cf9..886f23db9 100644 --- a/async_move_line_importer/tests/data/one_move.csv +++ b/async_move_line_importer/tests/data/one_move.csv @@ -1,4 +1,4 @@ -ref;date;period_id;journal_id;line_id / account_id;line_id / partner_id;line_id / name;line_id / debit;line_id / credit;line_id/tax_code_id/id -éöüàè_test_1;2013-10-01;X 01/2013;MISC;X2001;Camptocamp;TEST C2C;;1000;__export__.account_tax_code_3 -;;;;X11003;Camptocamp;TEST C2C;;200;__export__.account_tax_code_6 +ref;date;period_id;journal_id;line_id / account_id;line_id / partner_id;line_id / name;line_id / debit;line_id / credit;line_id/tax_code_id +éöüàè_test_1;2013-10-01;X 01/2013;MISC;X2001;Camptocamp;TEST C2C;;1000;Tax Received +;;;;X11003;Camptocamp;TEST C2C;;200;Tax Paid ;;;;X11002;Camptocamp;TEST C2C;1200;; diff --git a/async_move_line_importer/tests/data/one_move2.csv b/async_move_line_importer/tests/data/one_move2.csv new file mode 100644 index 000000000..df18b39d1 --- /dev/null +++ b/async_move_line_importer/tests/data/one_move2.csv @@ -0,0 +1,4 @@ +ref;date;period_id;journal_id;line_id / account_id;line_id / partner_id;line_id / name;line_id / debit;line_id / credit;line_id/tax_code_id +test_2;2013-10-01;X 01/2013;MISC;X2001;Camptocamp;TEST C2C;;1000;Tax Received +;;;;X11003;Camptocamp;TEST C2C;;200;Tax Paid +;;;;X11002;Camptocamp;TEST C2C;1200;; diff --git a/async_move_line_importer/tests/test_async_import.py b/async_move_line_importer/tests/test_async_import.py index 2bfc3606b..ff93891a2 100644 --- a/async_move_line_importer/tests/test_async_import.py +++ b/async_move_line_importer/tests/test_async_import.py @@ -21,17 +21,17 @@ import base64 import tempfile -from . import odbc_test_common +import openerp.tests.common as test_common from openerp import addons -from ..model import async_move_line_importer +from ..model import move_line_importer -class TestMoveLineImporter(odbc_test_common.ODBCBaseTestClass): +class TestMoveLineImporter(test_common.SingleTransactionCase): def get_file(self, filename): """Retrive file from test data""" path = addons.get_module_resource('async_move_line_importer', - 'test', 'data', filename) + 'tests', 'data', filename) with open(path) as test_data: with tempfile.TemporaryFile() as out: base64.encode(test_data, out) @@ -42,22 +42,22 @@ class TestMoveLineImporter(odbc_test_common.ODBCBaseTestClass): super(TestMoveLineImporter, self).setUp() self.importer_model = self.registry('move.line.importer') self.move_model = self.registry('account.move') - async_move_line_importer.USE_THREAD = False def tearDown(self): super(TestMoveLineImporter, self).tearDown() - async_move_line_importer.USE_THREAD = True - def test_01_one_line_direct_import_without_by_pass(self): + def test_01_one_line_without_orm_bypass(self): """Test one line import without bypassing orm""" cr, uid = self.cr, self.uid importer_id = self.importer_model.create(cr, uid, - {'file': self.get_file('one_move.csv')}) + {'file': self.get_file('one_move.csv'), + 'delimiter': ';'}) importer = self.importer_model.browse(cr, uid, importer_id) - self.asertTrue(importer.company_id, 'Not default company set') - self.assertFalse(importer.bypass_orm, 'By pass orm must not be active') + self.assertTrue(importer.company_id, 'Not default company set') + self.assertFalse(importer.bypass_orm, 'Bypass orm must not be active') self.assertEqual(importer.state, 'draft') - importer.import_file() + head, data = self.importer_model._parse_csv(cr, uid, importer.id) + self.importer_model._load_data(cr, uid, importer.id, head, data, _do_commit=False, context={}) importer = self.importer_model.browse(cr, uid, importer_id) self.assertEquals(importer.state, 'done', 'Exception %s during import' % importer.report) @@ -65,10 +65,59 @@ class TestMoveLineImporter(odbc_test_common.ODBCBaseTestClass): self.assertTrue(created_move_ids, 'No move imported') created_move = self.move_model.browse(cr, uid, created_move_ids[0]) self.assertTrue(len(created_move.line_id) == 3, 'Wrong number of move line imported') - debit, credit = 0.0 + debit = credit = 0.0 for line in created_move.line_id: debit += line.debit if line.debit else 0.0 credit += line.credit if line.credit else 0.0 self.assertEqual(debit, 1200.00) self.assertEqual(credit, 1200.00) self.assertEqual(created_move.state, 'draft', 'Wrong move state') + + def test_02_one_line_using_orm_bypass(self): + """Test one line import using orm bypass""" + cr, uid = self.cr, self.uid + importer_id = self.importer_model.create(cr, uid, + {'file': self.get_file('one_move2.csv'), + 'delimiter': ';', + 'bypass_orm': True}) + importer = self.importer_model.browse(cr, uid, importer_id) + self.assertTrue(importer.company_id, 'Not default company set') + self.assertTrue(importer.bypass_orm, 'Bypass orm must be active') + self.assertEqual(importer.state, 'draft') + head, data = self.importer_model._parse_csv(cr, uid, importer.id) + context = {'async_bypass_create': True, + 'company_id': 1} + self.importer_model._load_data(cr, uid, importer.id, head, data, + _do_commit=False, context=context) + importer = self.importer_model.browse(cr, uid, importer_id) + self.assertEquals(importer.state, 'done', + 'Exception %s during import' % importer.report) + created_move_ids = self.move_model.search(cr, uid, [('ref', '=', 'test_2')]) + self.assertTrue(created_move_ids, 'No move imported') + created_move = self.move_model.browse(cr, uid, created_move_ids[0]) + self.assertTrue(len(created_move.line_id) == 3, 'Wrong number of move line imported') + debit = credit = 0.0 + for line in created_move.line_id: + debit += line.debit if line.debit else 0.0 + credit += line.credit if line.credit else 0.0 + self.assertEqual(debit, 1200.00) + self.assertEqual(credit, 1200.00) + self.assertEqual(created_move.state, 'draft', 'Wrong move state') + + def test_03_one_line_failing(self): + """Test one line import with faulty CSV file""" + cr, uid = self.cr, self.uid + importer_id = self.importer_model.create(cr, uid, + {'file': self.get_file('faulty_moves.csv'), + 'delimiter': ';'}) + importer = self.importer_model.browse(cr, uid, importer_id) + self.assertTrue(importer.company_id, 'Not default company set') + self.assertFalse(importer.bypass_orm, 'Bypass orm must not be active') + self.assertEqual(importer.state, 'draft') + head, data = self.importer_model._parse_csv(cr, uid, importer.id) + self.importer_model._load_data(cr, uid, importer.id, head, data, _do_commit=False, context={}) + importer = self.importer_model.browse(cr, uid, importer_id) + self.assertEquals(importer.state, 'error', + 'No exception %s during import' % importer.report) + created_move_ids = self.move_model.search(cr, uid, [('ref', '=', 'test_3')]) + self.assertFalse(created_move_ids, 'Move was imported but it should not be the case')