feat(subscription): add membership access preflight
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user