@ -2,56 +2,68 @@
# Copyright 2017 Onestein (<http://www.onestein.eu>)
# Copyright 2017 Onestein (<http://www.onestein.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase , at_install , post_install
from odoo.exceptions import AccessError
from odoo.tests.common import Single TransactionCase, at_install , post_install
from odoo.exceptions import AccessError , UserError
class TestBiSqlViewEditor ( TransactionCase ) :
@at_install ( False )
@post_install ( True )
class TestBiSqlViewEditor ( SingleTransactionCase ) :
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 (
@classmethod
def setUpClass ( cls ) :
super ( TestBiSqlViewEditor , cls ) . setUpClass ( )
cls . res_partner = cls . env [ ' res.partner ' ]
cls . res_users = cls . env [ ' res.users ' ]
cls . bi_sql_view = cls . env [ ' bi.sql.view ' ]
cls . group_bi_user = cls . env . ref (
' sql_request_abstract.group_sql_request_manager ' )
' sql_request_abstract.group_sql_request_manager ' )
self . group_user = self . env . ref (
cl s. group_user = cl s. env . ref (
' base.group_user ' )
' base.group_user ' )
self . view = self . bi_sql_view . create ( {
cl s. view = cl s. bi_sql_view . create ( {
' name ' : ' Partners View 2 ' ,
' name ' : ' Partners View 2 ' ,
' is_materialized ' : Fals e,
' is_materialized ' : Tru e,
' technical_name ' : ' partners_view_2 ' ,
' technical_name ' : ' partners_view_2 ' ,
' query ' : " SELECT name as x_name, street as x_street, "
' query ' : " SELECT name as x_name, street as x_street, "
" company_id as x_company_id FROM res_partner "
" company_id as x_company_id FROM res_partner "
" ORDER BY name "
" ORDER BY name "
} )
} )
self . company = self . env . ref ( ' base.main_company ' )
cl s. company = cl s. env . ref ( ' base.main_company ' )
# Create bi user
# 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 )
cl s. bi_user = cl s. _create_user ( ' bi_user ' , cls . group_bi_user ,
cl s. company )
cl s. no_bi_user = cl s. _create_user ( ' no_bi_user ' , cls . group_user ,
cl s. company )
def _create_user ( self , login , groups , company ) :
@classmethod
def _create_user ( cls , login , groups , company ) :
""" Create a user. """
""" Create a user. """
group_ids = [ group . id for group in groups ]
user = self . res_users . create ( {
user = cls . res_users . create ( {
' name ' : ' Test BI User ' ,
' name ' : ' Test BI User ' ,
' login ' : login ,
' login ' : login ,
' password ' : ' demo ' ,
' password ' : ' demo ' ,
' email ' : ' example@yourcompany.com ' ,
' email ' : ' example@yourcompany.com ' ,
' notify_email ' : ' none ' ,
' company_id ' : company . id ,
' company_id ' : company . id ,
' groups_id ' : [ ( 6 , 0 , group_ ids ) ]
' groups_id ' : [ ( 6 , 0 , groups . ids ) ]
} )
} )
return user
return user
@at_install ( False )
@post_install ( True )
def test_process_view ( self ) :
def test_process_view ( self ) :
view = self . view
view = self . view
self . assertEqual ( view . state , ' draft ' , ' state not draft ' )
self . assertEqual ( view . state , ' draft ' , ' state not draft ' )
view . button_validate_sql_expression ( )
view . button_validate_sql_expression ( )
self . assertEqual ( view . state , ' sql_valid ' , ' state not sql_valid ' )
self . assertEqual ( view . state , ' sql_valid ' , ' state not sql_valid ' )
view . button_create_sql_view_and_model ( )
self . assertEqual ( view . state , ' model_valid ' , ' state not model_valid ' )
view . button_create_ui ( )
self . assertEqual ( view . state , ' ui_valid ' , ' state not ui_valid ' )
view . button_update_model_access ( )
self . assertEqual ( view . has_group_changed , False ,
' has_group_changed not False ' )
cron_res = view . cron_id . method_direct_trigger ( )
self . assertEqual ( cron_res , True , ' something went wrong with the cron ' )
def test_copy ( self ) :
def test_copy ( self ) :
copy_view = self . view . copy ( )
copy_view = self . view . copy ( )
@ -68,8 +80,10 @@ class TestBiSqlViewEditor(TransactionCase):
' bi %s ' % self . view . name )
' bi %s ' % self . view . name )
def test_unlink ( self ) :
def test_unlink ( self ) :
self . assertEqual ( self . view . state , ' draft ' , ' state not draft ' )
self . view . button_validate_sql_expression ( )
self . assertEqual ( self . view . state , ' ui_valid ' , ' state not ui_valid ' )
with self . assertRaises ( UserError ) :
self . view . unlink ( )
self . view . button_set_draft ( )
self . view . unlink ( )
self . view . unlink ( )
res = self . bi_sql_view . search ( [ ( ' name ' , ' = ' , ' Partners View 2 ' ) ] )
res = self . bi_sql_view . search ( [ ( ' name ' , ' = ' , ' Partners View 2 ' ) ] )
self . assertEqual ( len ( res ) , 0 , ' View not deleted ' )
self . assertEqual ( len ( res ) , 0 , ' View not deleted ' )