Skip to content

Commit

Permalink
[10.0][IMP] Use the technical user to recompute and export (buttons o…
Browse files Browse the repository at this point in the history
…n shopinvader backend view)

[ADD] Add unit tests
  • Loading branch information
acsonefho authored and Cédric Pigeon committed Mar 20, 2020
1 parent a4f7eb8 commit acc37cf
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 3 deletions.
6 changes: 5 additions & 1 deletion shopinvader_search_engine/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@
"website": "www.akretion.com",
"license": "AGPL-3",
"category": "Generic Modules",
"depends": ["shopinvader", "connector_search_engine"],
"depends": [
"shopinvader",
"connector_search_engine",
"base_technical_user",
],
"data": [
"views/shopinvader_backend_view.xml",
"views/product_view.xml",
Expand Down
20 changes: 18 additions & 2 deletions shopinvader_search_engine/models/shopinvader_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,31 @@ def _get_default_models(self):

@api.multi
def force_recompute_all_binding_index(self):
self.mapped("se_backend_id.index_ids").force_recompute_all_binding()
self_sudoer = self._use_technical_user_if_set()
self_sudoer.mapped(
"se_backend_id.index_ids"
).force_recompute_all_binding()
return True

@api.multi
def force_batch_export_index(self):
for index in self.mapped("se_backend_id.index_ids"):
self_sudoer = self._use_technical_user_if_set()
for index in self_sudoer.mapped("se_backend_id.index_ids"):
index.force_batch_export()
return True

def _use_technical_user_if_set(self):
"""
Change the current user by the technical user if it's set on the
current user's company.
:return: self
"""
self_sudoer = self
tech_user = self.env.user.company_id.user_tech_id
if tech_user:
self_sudoer = self.sudo(tech_user.id)
return self_sudoer

@api.multi
def clear_index(self):
for index in self.mapped("se_backend_id.index_ids"):
Expand Down
3 changes: 3 additions & 0 deletions shopinvader_search_engine/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_shopinvader_backend
54 changes: 54 additions & 0 deletions shopinvader_search_engine/tests/test_shopinvader_backend.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from uuid import uuid4

from odoo.addons.shopinvader.tests.common import CommonCase


class TestShopinvaderBackend(CommonCase):
"""
Tests for shopinvader.backend
"""

def _create_technical_user(self):
"""
:return:
"""
return self.env["res.users"].create(
{"name": "Super awesome technical user", "login": str(uuid4())}
)

def test_use_technical_user_if_set(self):
"""
Check if the _use_technical_user_if_set change the current user (sudo)
correctly.
:return:
"""
# For this case, disable the user_tech_id. So it should take current
# user.
user = self.env.user
self.env.user.company_id.write({"user_tech_id": False})
self.assertEqual(
user, self.backend._use_technical_user_if_set().env.user
)
# Now create a technical user and assign it on the company
user = self._create_technical_user()
self.env.user.company_id.write({"user_tech_id": user.id})
self.assertEqual(
user, self.backend._use_technical_user_if_set().env.user
)
# Try with another technical user
user = self._create_technical_user()
self.env.user.company_id.write({"user_tech_id": user.id})
self.assertEqual(
user, self.backend._use_technical_user_if_set().env.user
)
# Finally remove the technical user
self.env.user.company_id.write({"user_tech_id": False})
user = self.env.user
self.assertEqual(
user, self.backend._use_technical_user_if_set().env.user
)
return

0 comments on commit acc37cf

Please sign in to comment.