Files
Yamen Ahmad 3e83d8d7d5 feat: add complete EnCoach backend — Odoo 19 + all addons
Includes:
- Odoo 19 framework (odoo/)
- 27 custom EnCoach addons (new_project/custom_addons/)
  - encoach_core, encoach_api, encoach_lms_api, encoach_adaptive_api
  - encoach_exam, encoach_taxonomy, encoach_adaptive, encoach_assignment
  - encoach_ai, encoach_ai_grading, encoach_ai_generation, encoach_ai_media
  - encoach_courseware, encoach_communication, encoach_subscription
  - encoach_notification, encoach_approval, encoach_branding
  - encoach_classroom, encoach_registration, encoach_stats
  - encoach_faq, encoach_ticket, encoach_training, encoach_resources
  - encoach_adaptive_ai, encoach_sis
- 21 OpenEduCat Enterprise modules (new_project/enterprise-19/)
- 14 OpenEduCat Community modules (new_project/openeducat_erp-19.0/)
- Configuration: odoo.conf, requirements.txt, scripts
- 200+ REST API endpoints with JWT authentication
- SRS and test documentation

Made-with: Cursor
2026-04-01 17:10:04 +04:00

67 lines
2.5 KiB
Python

import datetime
from odoo.tests.common import TransactionCase
from odoo.addons.spreadsheet.utils.formatting import (
date_to_spreadsheet_date_number,
datetime_to_spreadsheet_date_number,
)
from odoo.addons.spreadsheet.utils.json import extend_serialized_json
class TestSpreadsheetUtils(TransactionCase):
def test_extend_serialized_json(self):
self.assertEqual(extend_serialized_json('{}', []), '{}')
self.assertEqual(extend_serialized_json('{}', [('key', '{}')]), '{"key":{}}')
self.assertEqual(extend_serialized_json('{}', [('key', '[]')]), '{"key":[]}')
self.assertEqual(
extend_serialized_json('{}', [('key', '"value"')]),
'{"key":"value"}'
)
self.assertEqual(
extend_serialized_json('{"a": 1}', [('key', '"value"')]),
'{"a": 1,"key":"value"}'
)
self.assertEqual(
extend_serialized_json('{"a": 1}', [('key', '{"b": 2}')]),
'{"a": 1,"key":{"b": 2}}'
)
self.assertEqual(
extend_serialized_json('{"a": {}}', [('key', '{"b": 2}')]),
'{"a": {},"key":{"b": 2}}'
)
self.assertEqual(
extend_serialized_json('{"a": 1}', [('key', '[]')]),
'{"a": 1,"key":[]}'
)
self.assertEqual(
extend_serialized_json('{"a": []}', [('key', '[]')]),
'{"a": [],"key":[]}'
)
self.assertEqual(
extend_serialized_json('{}', [('key1', '1'), ('key2', '2')]),
'{"key1":1,"key2":2}'
)
def test_date_to_spreadsheet_date_number(self):
d = datetime.date(1899, 12, 30)
self.assertEqual(date_to_spreadsheet_date_number(d), 0)
d = datetime.date(2023, 10, 1)
self.assertEqual(date_to_spreadsheet_date_number(d), 45200)
def test_datetime_to_spreadsheet_date_number(self):
test_tz_offset = 8 / 24 # Etc/GMT-8 is UTC+8
dt = datetime.datetime(1899, 12, 30, 0, 0, 0)
self.assertEqual(datetime_to_spreadsheet_date_number(dt, 'UTC'), 0)
dt = datetime.datetime(1899, 12, 30, 0, 0, 0)
self.assertEqual(datetime_to_spreadsheet_date_number(dt, 'Etc/GMT-8'), test_tz_offset)
dt = datetime.datetime(2023, 10, 1, 12, 0, 0)
self.assertEqual(datetime_to_spreadsheet_date_number(dt, 'UTC'), 45200.5)
dt = datetime.datetime(2023, 10, 1, 12, 0, 0)
self.assertEqual(datetime_to_spreadsheet_date_number(dt, 'Etc/GMT-8'), 45200.5 + test_tz_offset)