dy-dashboard/tests/test_field_permission_coverage.py
2026-10-28 11:14:17 +08:00

33 lines
1.6 KiB
Python

import unittest
from pathlib import Path
from services.field_perms import FIELD_REGISTRY, FIELD_RESP_KEYS, _FIELD_REGISTRY_ALIASES, _PAGE_ALIASES
ROOT = Path(__file__).resolve().parents[1]
APP = (ROOT / 'static' / 'js' / 'app.js').read_text(encoding='utf-8')
class FieldPermissionCoverageTest(unittest.TestCase):
def test_product_packaging_is_independent_registry(self):
self.assertIn('product_packaging', FIELD_REGISTRY)
self.assertNotEqual(FIELD_REGISTRY['product_packaging'], FIELD_REGISTRY['product_new'])
self.assertNotIn('product_packaging', _FIELD_REGISTRY_ALIASES)
self.assertEqual(_PAGE_ALIASES['product_packaging'], ['product_packaging'])
keys = {f['key'] for f in FIELD_REGISTRY['product_packaging']}
self.assertIn('供应商', keys)
self.assertIn('单价/元', keys)
self.assertIn('货款/元', keys)
def test_product_packaging_response_keys_are_mapped(self):
for label, key in [('供应商','supplier'), ('单价/元','unit_price'), ('货款/元','amount')]:
self.assertEqual(FIELD_RESP_KEYS[('product_packaging', label)][0], key)
def test_detail_popup_uses_field_permissions(self):
self.assertIn("window._canViewField('planning', permissionField)", APP)
self.assertIn("window._canViewField('bom', '成本价')", APP)
self.assertIn("window._canViewField('bom', '供应商')", APP)
def test_new_packaging_table_uses_independent_permissions(self):
self.assertIn("_hasFieldPerm('product_packaging', f.label, 'view')", APP)
if __name__ == '__main__':
unittest.main()