# Copyright 2017-2019 MuK IT GmbH. # Copyright 2020 Creu Blanca # Copyright 2021-2022 Tecnativa - Víctor Martínez # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). from odoo.exceptions import UserError from odoo.tests.common import users from odoo.tools import mute_logger from .common import StorageDatabaseBaseCase class FileDatabaseTestCase(StorageDatabaseBaseCase): @classmethod def setUpClass(cls): super().setUpClass() cls.file_demo_01 = cls.env.ref("dms.file_01_demo") cls.directory2 = cls.create_directory(storage=cls.storage) cls.new_storage2 = cls.create_storage(save_type="database") cls.directory3 = cls.create_directory(storage=cls.new_storage2) @users("dms-manager", "dms-user") def test_create_file(self): root_directory = self.create_directory(storage=self.storage) self.create_file(directory=root_directory) sub_directory = self.create_directory(directory=root_directory) self.create_file(sub_directory) self.assertEqual(root_directory.count_total_files, 2) self.assertEqual(sub_directory.count_files, 1) @users("dms-manager", "dms-user") def test_lock_file(self): file = self.create_file(directory=self.directory) file.lock() self.assertTrue(file.is_locked) file.unlock() self.assertFalse(file.is_locked) @users("dms-manager", "dms-user") def test_copy_file(self): copy_file = self.file.copy() self.assertEqual(self.file.storage_id, copy_file.storage_id) self.assertEqual(self.file.content, copy_file.content) @users("dms-manager", "dms-user") def test_rename_file(self): file = self.create_file(directory=self.directory) extension = file.extension file.write({"name": "test-%s.jpg" % self.env.user.login}) self.assertNotEqual(file.extension, extension) @users("dms-manager", "dms-user") def test_move_file(self): file = self.create_file(directory=self.directory) path_names = file.path_names file.write({"directory_id": self.directory2.id}) file.flush_recordset() self.assertNotEqual(path_names, file.path_names) @users("dms-manager", "dms-user") def test_move_directory(self): with self.assertRaises(UserError): self.directory.write( { "is_root_directory": False, "parent_id": self.directory3.id, } ) @users("dms-manager", "dms-user") @mute_logger("odoo.models.unlink") def test_unlink_file(self): file = self.create_file(directory=self.directory) file.unlink() self.assertFalse(file.exists()) @users("dms-manager", "dms-user") def test_compute_thumbnail(self): self.assertTrue(self.file_demo_01.image_128) @users("dms-manager", "dms-user") def test_compute_path_names(self): self.assertTrue(self.file.path_names) @users("dms-manager", "dms-user") def test_compute_path_json(self): self.assertTrue(self.file.path_json) @users("dms-manager", "dms-user") def test_compute_mimetype(self): self.assertTrue(self.file.mimetype) @users("dms-manager", "dms-user") def test_compute_extension(self): self.assertTrue(self.file.extension) @users("dms-manager", "dms-user") def test_size_calculation(self): self.assertTrue(self.file.size) @users("dms-manager", "dms-user") def test_checksum_calculation(self): self.assertTrue(self.file.checksum) @users("dms-manager", "dms-user") def test_compute_content(self): self.assertTrue(self.file.with_context(bin_size=True).content) self.assertTrue(self.file.with_context(bin_size=False).content) self.assertNotEqual( self.file.with_context(bin_size=False).content, self.file.with_context(bin_size=True).content, ) @users("dms-manager", "dms-user") def test_compute_save_type(self): self.assertTrue(self.file.save_type) @users("dms-manager", "dms-user") def test_compute_migration(self): self.assertTrue(self.file.migration) @users("dms-manager", "dms-user") def test_search_panel(self): self.assertTrue(self.file.search_panel_select_range("directory_id")) self.assertTrue(self.file.search_panel_select_multi_range("directory_id")) self.assertTrue(self.file.search_panel_select_multi_range("tag_ids")) res = self.file.search_panel_select_range("directory_id", enable_counters=True) self.assertTrue(self.directory2.id == x["id"] for x in res["values"])