feat(subscription): add membership access preflight

This commit is contained in:
chengma
2026-07-21 17:38:05 +08:00
parent ca46c34dfe
commit 9ee48dc2aa
14 changed files with 788 additions and 4 deletions
+57
View File
@@ -22,6 +22,7 @@ from app import (
image_studio,
product_status,
prompts,
subscription,
update_check,
update_installer,
)
@@ -11154,6 +11155,62 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_main_window_displays_active_subscription_in_header(self):
with self.make_temp_dir() as temp_dir:
window = MainWindow(config=self.make_config(temp_dir))
self.addCleanup(window.close)
status = subscription.SubscriptionStatus(
subscription.STATUS_ACTIVE,
account_name="主账号",
plan_name="专业版",
expires_at="2026-08-20T23:59:59+08:00",
)
window._apply_subscription_status(status, show_prompt=False)
self.assertIn("主账号 · 专业版 · 有效至2026-08-20", window._subscription_label.text())
self.assertTrue(
all(window.tabs.isTabEnabled(index) for index in range(window.tabs.count()))
)
def test_main_window_restricts_tabs_when_subscription_is_invalid(self):
with self.make_temp_dir() as temp_dir:
window = MainWindow(config=self.make_config(temp_dir))
self.addCleanup(window.close)
status = subscription.SubscriptionStatus(subscription.STATUS_EXPIRED)
window._apply_subscription_status(status, show_prompt=False)
for index, title in enumerate(TAB_TITLES):
self.assertEqual(title == "设置", window.tabs.isTabEnabled(index))
self.assertEqual(TAB_TITLES.index("设置"), window.tabs.currentIndex())
def test_generate_and_suite_preflight_can_stop_new_submissions(self):
with self.make_temp_dir() as temp_dir:
config = self.make_config(temp_dir)
actions = []
def deny(action):
actions.append(action)
return False
generate_tab = GenerateTab(
config=config,
subscription_preflight_callback=deny,
)
self.addCleanup(generate_tab.close)
generate_tab.start_generate()
suite_tab = ProductSuiteTab(
config=config,
db_path=config["db_path"],
subscription_preflight_callback=deny,
)
self.addCleanup(suite_tab.close)
self.assertFalse(suite_tab.start_generation(None))
self.assertEqual(["开始 AI 生成", "生成商品套图"], actions)
def test_accounts_tab_launch_failure_restores_controls(self):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)