refactor(gui): move membership summary to window title

This commit is contained in:
chengma
2026-07-23 14:51:05 +08:00
parent fd82d3b047
commit c734e3fe79
5 changed files with 84 additions and 66 deletions
+44 -19
View File
@@ -635,21 +635,9 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertEqual(gui.display_name(), window.windowTitle())
self.assertIsNone(window.findChild(QLabel, "appHeaderTitle"))
subscription_label = window.findChild(QLabel, "subscriptionStatusLabel")
self.assertIsNotNone(subscription_label)
header = window.centralWidget().layout().itemAt(0).widget()
self.assertEqual("appHeader", header.objectName())
self.assertEqual("会员状态栏", header.accessibleName())
margins = header.layout().contentsMargins()
self.assertEqual(
(18, 4, 18, 2),
(
margins.left(),
margins.top(),
margins.right(),
margins.bottom(),
),
)
self.assertIsNone(window.findChild(QLabel, "subscriptionStatusLabel"))
self.assertEqual(1, window.centralWidget().layout().count())
self.assertIs(window.tabs, window.centralWidget().layout().itemAt(0).widget())
self.assertEqual(6, window.tabs.count())
self.assertEqual(
[
@@ -11185,11 +11173,44 @@ class GuiTests(TempDirMixin, unittest.TestCase):
window._apply_subscription_status(status)
self.assertIn("主账号 · 专业版 · 有效至2026-08-20", window._subscription_label.text())
self.assertEqual(
"%s | 主账号 · 专业版 · 有效至2026-08-20" % gui.display_name(),
window.windowTitle(),
)
self.assertTrue(
all(window.tabs.isTabEnabled(index) for index in range(window.tabs.count()))
)
def test_main_window_membership_title_uses_grace_and_resets_for_invalid_status(self):
with self.make_temp_dir() as temp_dir:
window = MainWindow(config=self.make_config(temp_dir))
self.addCleanup(window.close)
grace = subscription.SubscriptionStatus(
subscription.STATUS_GRACE,
account_name="主账号",
plan_name="测试",
expires_at="2026-08-21T23:59:59+08:00",
grace_expires_at="2026-08-23T23:59:59+08:00",
manage_url="https://cm.example.com/subscription",
notice_id="private-notice",
)
window._apply_subscription_status(grace)
self.assertEqual(
"%s | 主账号 · 测试 · 宽限至2026-08-23" % gui.display_name(),
window.windowTitle(),
)
self.assertNotIn("cm.example.com", window.windowTitle())
self.assertNotIn("private-notice", window.windowTitle())
window._apply_subscription_status(
subscription.SubscriptionStatus(subscription.STATUS_UNAVAILABLE)
)
self.assertEqual(gui.display_name(), window.windowTitle())
self.assertIn("当前不影响使用", window.statusBar().currentMessage())
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))
@@ -11252,7 +11273,8 @@ class GuiTests(TempDirMixin, unittest.TestCase):
worker_factory.assert_called_once()
self.assertTrue(thread.started)
self.assertEqual("会员:正在验证", window._subscription_label.text())
self.assertEqual(gui.display_name(), window.windowTitle())
self.assertEqual("正在验证会员状态", window.statusBar().currentMessage())
self.assertTrue(
all(window.tabs.isTabEnabled(index) for index in range(window.tabs.count()))
)
@@ -11262,7 +11284,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
window._apply_subscription_status(expired)
notice.assert_not_called()
self.assertIn("当前不影响使用", window._subscription_label.text())
self.assertEqual(gui.display_name(), window.windowTitle())
self.assertIn("当前不影响使用", window.statusBar().currentMessage())
self.assertTrue(
all(window.tabs.isTabEnabled(index) for index in range(window.tabs.count()))
@@ -11285,7 +11307,10 @@ class GuiTests(TempDirMixin, unittest.TestCase):
window._apply_subscription_status(status)
notice.assert_not_called()
self.assertIn("主账号 · 测试 · 有效至2026-08-21", window._subscription_label.text())
self.assertEqual(
"%s | 主账号 · 测试 · 有效至2026-08-21" % gui.display_name(),
window.windowTitle(),
)
self.assertIn("观察模式", window.statusBar().currentMessage())
with mock.patch.object(window, "begin_subscription_check") as check: