product_library adds some fields to product and some utilities addons from OCA
This commit is contained in:
parent
9145e0cabe
commit
6c8876b991
334 changed files with 92878 additions and 0 deletions
3
mass_editing/tests/__init__.py
Normal file
3
mass_editing/tests/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import test_mass_editing
|
238
mass_editing/tests/test_mass_editing.py
Normal file
238
mass_editing/tests/test_mass_editing.py
Normal file
|
@ -0,0 +1,238 @@
|
|||
# Copyright 2016 Serpent Consulting Services Pvt. Ltd. (support@serpentcs.com)
|
||||
# Copyright 2018 Aitor Bouzas <aitor.bouzas@adaptivecity.com)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
# import ast
|
||||
|
||||
from odoo.modules import registry
|
||||
from odoo.tests import common
|
||||
|
||||
from ..hooks import uninstall_hook
|
||||
|
||||
|
||||
class TestMassEditing(common.SavepointCase):
|
||||
at_install = False
|
||||
post_install = True
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.MassEditingWizard = self.env["mass.editing.wizard"]
|
||||
self.ResPartnerTitle = self.env["res.partner.title"]
|
||||
self.ResLang = self.env["res.lang"]
|
||||
self.IrTranslation = self.env["ir.translation"]
|
||||
self.IrActionsActWindow = self.env["ir.actions.act_window"]
|
||||
|
||||
self.mass_editing_user = self.env.ref("mass_editing.mass_editing_user")
|
||||
self.mass_editing_partner_title = self.env.ref(
|
||||
"mass_editing.mass_editing_partner_title"
|
||||
)
|
||||
|
||||
self.users = self.env["res.users"].search([])
|
||||
self.user = self.env.ref("base.user_demo")
|
||||
self.partner_title = self._create_partner_title()
|
||||
|
||||
def _create_partner_title(self):
|
||||
"""Create a Partner Title."""
|
||||
# Loads German to work with translations
|
||||
self.ResLang.load_lang("de_DE")
|
||||
# Creating the title in English
|
||||
partner_title = self.ResPartnerTitle.create(
|
||||
{"name": "Ambassador", "shortcut": "Amb."}
|
||||
)
|
||||
# Adding translated terms
|
||||
ctx = {"lang": "de_DE"}
|
||||
partner_title.with_context(ctx).write(
|
||||
{"name": "Botschafter", "shortcut": "Bots."}
|
||||
)
|
||||
return partner_title
|
||||
|
||||
def _create_wizard_and_apply_values(self, mass_editing, items, vals):
|
||||
return self.MassEditingWizard.with_context(
|
||||
mass_operation_mixin_name="mass.editing",
|
||||
mass_operation_mixin_id=mass_editing.id,
|
||||
active_ids=items.ids,
|
||||
).create(vals)
|
||||
|
||||
def test_wiz_fields_view_get(self):
|
||||
"""Test whether fields_view_get method returns arch.
|
||||
with dynamic fields.
|
||||
"""
|
||||
result = self.MassEditingWizard.with_context(
|
||||
mass_operation_mixin_name="mass.editing",
|
||||
mass_operation_mixin_id=self.mass_editing_user.id,
|
||||
active_ids=[],
|
||||
).fields_view_get()
|
||||
|
||||
arch = result.get("arch", "")
|
||||
self.assertTrue(
|
||||
"selection__email" in arch,
|
||||
"Fields view get must return architecture with fields" "created dynamicaly",
|
||||
)
|
||||
|
||||
def test_wiz_read_fields(self):
|
||||
"""Test whether read method returns all fields or not."""
|
||||
fields_view = self.MassEditingWizard.with_context(
|
||||
mass_operation_mixin_name="mass.editing",
|
||||
mass_operation_mixin_id=self.mass_editing_user.id,
|
||||
active_ids=[],
|
||||
).fields_view_get()
|
||||
|
||||
fields = list(fields_view["fields"].keys())
|
||||
# add a real field
|
||||
fields.append("display_name")
|
||||
vals = {"selection__email": "remove", "selection__phone": "remove"}
|
||||
mass_wizard = self._create_wizard_and_apply_values(
|
||||
self.mass_editing_user, self.users, vals
|
||||
)
|
||||
result = mass_wizard.read(fields)[0]
|
||||
self.assertTrue(
|
||||
all([field in result for field in fields]), "Read must return all fields."
|
||||
)
|
||||
|
||||
def test_mass_edit_partner_title(self):
|
||||
"""Test Case for MASS EDITING which will check if translation
|
||||
was loaded for new partner title, and if they are removed
|
||||
as well as the value for the abbreviation for the partner title."""
|
||||
search_domain = [
|
||||
("res_id", "=", self.partner_title.id),
|
||||
("type", "=", "model"),
|
||||
("name", "=", "res.partner.title,shortcut"),
|
||||
("lang", "=", "de_DE"),
|
||||
]
|
||||
translation_ids = self.IrTranslation.search(search_domain)
|
||||
self.assertEqual(
|
||||
len(translation_ids),
|
||||
1,
|
||||
"Translation for Partner Title's Abbreviation " "was not loaded properly.",
|
||||
)
|
||||
# Removing partner title with mass edit action
|
||||
vals = {"selection__shortcut": "remove"}
|
||||
self._create_wizard_and_apply_values(
|
||||
self.mass_editing_partner_title, self.partner_title, vals
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
self.partner_title.shortcut,
|
||||
False,
|
||||
"Partner Title's Abbreviation should be removed.",
|
||||
)
|
||||
# Checking if translations were also removed
|
||||
translation_ids = self.IrTranslation.search(search_domain)
|
||||
self.assertEqual(
|
||||
len(translation_ids),
|
||||
0,
|
||||
"Translation for Partner Title's Abbreviation " "was not removed properly.",
|
||||
)
|
||||
|
||||
def test_mass_edit_email(self):
|
||||
"""Test Case for MASS EDITING which will remove and after add
|
||||
User's email and will assert the same."""
|
||||
# Remove email and phone
|
||||
vals = {"selection__email": "remove", "selection__phone": "remove"}
|
||||
self._create_wizard_and_apply_values(self.mass_editing_user, self.user, vals)
|
||||
|
||||
self.assertEqual(self.user.email, False, "User's Email should be removed.")
|
||||
|
||||
# Set email address
|
||||
vals = {"selection__email": "set", "email": "sample@mycompany.com"}
|
||||
self._create_wizard_and_apply_values(self.mass_editing_user, self.user, vals)
|
||||
self.assertNotEqual(self.user.email, False, "User's Email should be set.")
|
||||
|
||||
def test_mass_edit_m2m_categ(self):
|
||||
"""Test Case for MASS EDITING which will remove and add
|
||||
Partner's category m2m."""
|
||||
# Remove m2m categories
|
||||
vals = {"selection__category_id": "remove_m2m"}
|
||||
self._create_wizard_and_apply_values(self.mass_editing_user, self.user, vals)
|
||||
self.assertNotEqual(
|
||||
self.user.category_id, False, "User's category should be removed."
|
||||
)
|
||||
# Add m2m categories
|
||||
dist_categ_id = self.env.ref("base.res_partner_category_14").id
|
||||
vend_categ_id = self.env.ref("base.res_partner_category_0").id
|
||||
vals = {
|
||||
"selection__category_id": "add",
|
||||
"category_id": [[6, 0, [dist_categ_id, vend_categ_id]]],
|
||||
}
|
||||
self._create_wizard_and_apply_values(self.mass_editing_user, self.user, vals)
|
||||
self.assertTrue(
|
||||
all(
|
||||
item in self.user.category_id.ids
|
||||
for item in [dist_categ_id, vend_categ_id]
|
||||
),
|
||||
"Partner's category should be added.",
|
||||
)
|
||||
# Remove one m2m category
|
||||
vals = {
|
||||
"selection__category_id": "remove_m2m",
|
||||
"category_id": [[6, 0, [vend_categ_id]]],
|
||||
}
|
||||
self._create_wizard_and_apply_values(self.mass_editing_user, self.user, vals)
|
||||
self.assertTrue(
|
||||
[dist_categ_id] == self.user.category_id.ids,
|
||||
"User's category should be removed.",
|
||||
)
|
||||
|
||||
def test_mass_edit_o2m_log_ids(self):
|
||||
"""Test Case for MASS EDITING which will remove and after add
|
||||
User's log_ids and will assert the same."""
|
||||
# Add one log_ids
|
||||
self.env['res.users.log'].sudo(self.user).create({})
|
||||
self.assertTrue(self.user.log_ids)
|
||||
# Remove one log_ids
|
||||
vals = {"selection__log_ids": "remove_o2m"}
|
||||
self._create_wizard_and_apply_values(
|
||||
self.mass_editing_user, self.user, vals)
|
||||
self.assertFalse(
|
||||
self.user.log_ids.exists(), "User's log_ids should be removed.")
|
||||
# Set one log_ids
|
||||
vals = {
|
||||
'selection__log_ids': "set_o2m",
|
||||
'log_ids': [[
|
||||
0,
|
||||
0,
|
||||
{}
|
||||
]]}
|
||||
self._create_wizard_and_apply_values(
|
||||
self.mass_editing_user, self.user, vals)
|
||||
self.assertTrue(
|
||||
self.user.log_ids, "User's log_ids should be set.")
|
||||
|
||||
def test_sidebar_action(self):
|
||||
"""Test if Sidebar Action is added / removed to / from give object."""
|
||||
|
||||
self.assertTrue(
|
||||
self.mass_editing_user.ref_ir_act_window_id, "Sidebar action must exist."
|
||||
)
|
||||
|
||||
# Remove the sidebar actions
|
||||
self.mass_editing_user.disable_mass_operation()
|
||||
self.assertFalse(
|
||||
self.mass_editing_user.ref_ir_act_window_id,
|
||||
"Sidebar action must be removed.",
|
||||
)
|
||||
|
||||
def test_unlink_mass(self):
|
||||
"""Test if related actions are removed when mass editing
|
||||
record is unlinked."""
|
||||
act_window = self.mass_editing_user.ref_ir_act_window_id
|
||||
|
||||
self.mass_editing_user.unlink()
|
||||
|
||||
self.assertFalse(
|
||||
act_window.exists(),
|
||||
"Sidebar action must be removed when mass" " editing is unlinked.",
|
||||
)
|
||||
|
||||
def test_uninstall_hook(self):
|
||||
"""Test if related actions are removed when mass editing
|
||||
record is uninstalled."""
|
||||
uninstall_hook(self.cr, registry)
|
||||
mass_action_id = self.mass_editing_user.ref_ir_act_window_id.id
|
||||
count = len(self.IrActionsActWindow.browse(mass_action_id))
|
||||
self.assertTrue(
|
||||
count == 0,
|
||||
"Sidebar action must be removed when mass"
|
||||
" editing module is uninstalled.",
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue