-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_odoo_data_workflows.py
More file actions
65 lines (50 loc) · 2.4 KB
/
Copy pathtest_odoo_data_workflows.py
File metadata and controls
65 lines (50 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from __future__ import annotations
import importlib.util
import os
import sys
import types
import unittest
from pathlib import Path
from unittest.mock import patch
def _load_data_workflows_module() -> types.ModuleType:
module_path = Path(__file__).resolve().parents[1] / "docker" / "scripts" / "run_odoo_data_workflows.py"
spec = importlib.util.spec_from_file_location("odoo_devkit_run_odoo_data_workflows_test_module", module_path)
if spec is None or spec.loader is None:
raise RuntimeError(f"Unable to load module from {module_path}")
module = importlib.util.module_from_spec(spec)
sys.modules[spec.name] = module
psycopg2_module = types.ModuleType("psycopg2")
psycopg2_module.sql = types.SimpleNamespace(SQL=lambda value: value, Identifier=lambda value: value)
psycopg2_extensions_module = types.ModuleType("psycopg2.extensions")
psycopg2_extensions_module.connection = object
with patch.dict(
sys.modules,
{
"psycopg2": psycopg2_module,
"psycopg2.extensions": psycopg2_extensions_module,
},
):
spec.loader.exec_module(module)
return module
odoo_data_workflows = _load_data_workflows_module()
class OdooDataWorkflowShellEnvironmentTests(unittest.TestCase):
@staticmethod
def _local_settings() -> object:
return odoo_data_workflows.LocalServerSettings(
ODOO_DB_HOST="database",
ODOO_DB_PORT="5432",
ODOO_DB_USER="odoo",
ODOO_DB_PASSWORD="database-password",
ODOO_DB_NAME="cm",
ODOO_FILESTORE_PATH="/volumes/data/filestore/cm",
)
def test_data_workflow_shell_can_import_runtime_script_helpers(self) -> None:
with patch.dict(os.environ, {"PYTHONPATH": "/opt/custom:/volumes/scripts"}, clear=True):
runner = odoo_data_workflows.OdooDataWorkflowRunner(self._local_settings(), upstream=None, env_file=None)
self.assertEqual(runner.os_env["PYTHONPATH"], "/volumes/scripts:/opt/custom")
def test_data_workflow_shell_prepends_runtime_scripts_to_pythonpath(self) -> None:
with patch.dict(os.environ, {"PYTHONPATH": "/opt/custom"}, clear=True):
runner = odoo_data_workflows.OdooDataWorkflowRunner(self._local_settings(), upstream=None, env_file=None)
self.assertEqual(runner.os_env["PYTHONPATH"], "/volumes/scripts:/opt/custom")
if __name__ == "__main__":
unittest.main()