79 lines
3.0 KiB
Python
79 lines
3.0 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from contextlib import contextmanager
|
|
from datetime import datetime
|
|
from freezegun import freeze_time
|
|
from unittest.mock import patch
|
|
|
|
|
|
from odoo.tests.common import HttpCase, new_test_user
|
|
from odoo.addons.spreadsheet_edition.tests.spreadsheet_test_case import SpreadsheetTestCase
|
|
from odoo.tools import file_open, misc
|
|
|
|
|
|
TEST_CONTENT = "{}"
|
|
GIF = b"R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs="
|
|
|
|
|
|
class SpreadsheetTestCommon(SpreadsheetTestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.folder = cls.env["documents.document"].create({
|
|
"name": "Test folder",
|
|
"type": "folder",
|
|
"access_internal": "view",
|
|
"access_via_link": "none",
|
|
"owner_id": False,
|
|
"folder_id": False,
|
|
"sequence": -10,
|
|
})
|
|
cls.spreadsheet_user = new_test_user(
|
|
cls.env, login="spreadsheetDude", groups="documents.group_documents_user"
|
|
)
|
|
cls.portal_user = new_test_user(cls.env, "Portal user", groups="base.group_portal")
|
|
|
|
def create_spreadsheet(self, values=None, *, user=None, name="Untitled Spreadsheet"):
|
|
def _create():
|
|
vals = {
|
|
"spreadsheet_data": r"{}",
|
|
"folder_id": self.folder.id,
|
|
"handler": "spreadsheet",
|
|
"mimetype": "application/o-spreadsheet",
|
|
"name": name,
|
|
"access_via_link": "view",
|
|
**(values or {}),
|
|
}
|
|
return self.env["documents.document"].with_user(user or self.env.user).create(vals)
|
|
|
|
if values and 'create_date' in values:
|
|
_create = patch.object(self.env.cr, 'now', lambda: values['create_date'])(_create)
|
|
|
|
return _create()
|
|
|
|
@contextmanager
|
|
def _freeze_time(self, time):
|
|
time_format = "%Y-%m-%d %H:%M" if ':' in time else "%Y-%m-%d"
|
|
with patch.object(self.env.cr, 'now', lambda: datetime.strptime(time, time_format)), freeze_time(time):
|
|
yield
|
|
|
|
|
|
class SpreadsheetTestTourCommon(SpreadsheetTestCommon, HttpCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.spreadsheet_user.partner_id.country_id = cls.env.ref("base.us")
|
|
cls.env['res.users'].browse(2).partner_id.country_id = cls.env.ref("base.be")
|
|
# Avoid interference from the demo data which rename the admin user
|
|
cls.env['res.users'].browse(2).write({"name": "AdminDude"})
|
|
data_path = misc.file_path('documents_spreadsheet/tests/test_spreadsheet_data.json')
|
|
with file_open(data_path, 'rb') as f:
|
|
cls.spreadsheet = cls.env["documents.document"].create({
|
|
"handler": "spreadsheet",
|
|
"folder_id": cls.folder.id,
|
|
"raw": f.read(),
|
|
"name": "Res Partner Test Spreadsheet",
|
|
"access_internal": "edit",
|
|
"mimetype": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
})
|