import unittest from types import SimpleNamespace from unittest.mock import MagicMock from app.crud.production_task_set import assert_set_writable, is_super_admin_user class TestAssertSetWritable(unittest.TestCase): def test_missing(self): db = MagicMock() db.query.return_value.filter.return_value.first.return_value = None with self.assertRaisesRegex(ValueError, "集合不存在"): assert_set_writable(db, "s1", "zkxw", {"role": "admin"}) def test_builtin_blocks_admin(self): db = MagicMock() db.query.return_value.filter.return_value.first.return_value = SimpleNamespace( id="s1", is_builtin="1" ) with self.assertRaisesRegex(ValueError, "内置模版"): assert_set_writable(db, "s1", "zkxw", {"role": "admin"}) def test_builtin_allows_super(self): db = MagicMock() row = SimpleNamespace(id="s1", is_builtin="1") db.query.return_value.filter.return_value.first.return_value = row self.assertIs(assert_set_writable(db, "s1", "zkxw", {"role": "super_admin"}), row) def test_super_admin_helper(self): self.assertTrue(is_super_admin_user({"role": "super_admin"})) self.assertFalse(is_super_admin_user({"role": "admin"})) if __name__ == "__main__": unittest.main()