33 lines
1.6 KiB
Python
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()
|