From 3c358e6df521b2a90733e52787109450f20b4188 Mon Sep 17 00:00:00 2001 From: aheficent Date: Thu, 10 Aug 2017 17:32:46 +0200 Subject: [PATCH] [FIX]remove cr.commit, that removed the savepoint [UPT]add test --- bi_sql_editor/models/bi_sql_view.py | 4 +- bi_sql_editor/tests/__init__.py | 3 + bi_sql_editor/tests/test_bi_sql_view.py | 74 +++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 bi_sql_editor/tests/__init__.py create mode 100644 bi_sql_editor/tests/test_bi_sql_view.py diff --git a/bi_sql_editor/models/bi_sql_view.py b/bi_sql_editor/models/bi_sql_view.py index 293644e1..68949bae 100644 --- a/bi_sql_editor/models/bi_sql_view.py +++ b/bi_sql_editor/models/bi_sql_view.py @@ -449,7 +449,6 @@ class BiSQLView(models.Model): # Drop table, created by the ORM req = "DROP TABLE %s" % (sql_view.view_name) self.env.cr.execute(req) - self.env.cr.commit() # pylint: disable=invalid-commit @api.multi def _create_model_access(self): @@ -482,7 +481,6 @@ class BiSQLView(models.Model): AND attnum > 0 ORDER BY attnum;""" % (self.view_name) self.env.cr.execute(req) - self.env.cr.commit() # pylint: disable=invalid-commit return self.env.cr.fetchall() @api.multi @@ -571,4 +569,4 @@ class BiSQLView(models.Model): sql_view.view_name) self.env.cr.execute(req) sql_view.size = self.env.cr.fetchone()[0] - self.env.cr.commit() # pylint: disable=invalid-commit + diff --git a/bi_sql_editor/tests/__init__.py b/bi_sql_editor/tests/__init__.py new file mode 100644 index 00000000..e01cc721 --- /dev/null +++ b/bi_sql_editor/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from . import test_bi_sql_view diff --git a/bi_sql_editor/tests/test_bi_sql_view.py b/bi_sql_editor/tests/test_bi_sql_view.py new file mode 100644 index 00000000..0f9ce8be --- /dev/null +++ b/bi_sql_editor/tests/test_bi_sql_view.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp.tests.common import TransactionCase, at_install, post_install +from openerp.exceptions import AccessError + + +class TestBiSqlViewEditor(TransactionCase): + + def setUp(self): + super(TestBiSqlViewEditor, self).setUp() + self.res_partner = self.env['res.partner'] + self.res_users = self.env['res.users'] + self.bi_sql_view = self.env['bi.sql.view'] + self.group_bi_user = self.env.ref( + 'sql_request_abstract.group_sql_request_manager') + self.group_user = self.env.ref( + 'base.group_user') + self.view = self.bi_sql_view.create({ + 'name': 'Partners View 2', + 'is_materialized': False, + 'technical_name': 'partners_view_2', + 'query': "SELECT name as x_name, street as x_street," + "company_id as x_company_id FROM res_partner " + "ORDER BY name" + }) + self.company = self.env.ref('base.main_company') + # Create bi user + self.bi_user = self._create_user('bi_user', [self.group_bi_user], + self.company) + self.no_bi_user = self._create_user('no_bi_user', [self.group_user], + self.company) + + def _create_user(self, login, groups, company): + """Create a user.""" + group_ids = [group.id for group in groups] + user = self.res_users.create({ + 'name': 'Test BI User', + 'login': login, + 'password': 'demo', + 'email': 'example@yourcompany.com', + 'company_id': company.id, + 'groups_id': [(6, 0, group_ids)] + }) + return user + + @at_install(False) + @post_install(True) + def test_process_view(self): + view = self.view + self.assertEqual(view.state, 'draft', 'state not draft') + view.button_validate_sql_expression() + self.assertEqual(view.state, 'sql_valid', 'state not sql_valid') + + def test_copy(self): + copy_view = self.view.copy() + self.assertEqual(copy_view.name, 'Partners View 2 (Copy)', 'Wrong name') + + def test_security(self): + with self.assertRaises(AccessError): + self.bi_sql_view.sudo(self.no_bi_user.id).search( + [('name', '=', 'Partners View 2')]) + bi = self.bi_sql_view.sudo(self.bi_user.id).search( + [('name', '=', 'Partners View 2')]) + self.assertEqual(len(bi), 1, 'Bi user should not have access to ' + 'bi %s' % self.view.name) + + def test_unlink(self): + self.assertEqual(self.view.state, 'draft', 'state not draft') + self.view.button_validate_sql_expression() + self.view.unlink() + res = self.bi_sql_view.search([('name', '=', 'Partners View 2')]) + self.assertEqual(len(res), 0, 'View not deleted')