diff --git a/ankihub/gui/menu.py b/ankihub/gui/menu.py index daab42a03..fccccaee4 100644 --- a/ankihub/gui/menu.py +++ b/ankihub/gui/menu.py @@ -448,7 +448,7 @@ def _ankihub_help_setup(parent: QMenu): """Set up the sub menu for help related items.""" help_menu = QMenu("🆘 Help", parent) - if config.get_feature_flags().get("addon_tours", False): + if config.get_feature_flags().get("onboarding_tour", False): q_onboarding_action = QAction("Start onboarding tour", help_menu) qconnect( q_onboarding_action.triggered, diff --git a/ankihub/gui/operations/ankihub_sync.py b/ankihub/gui/operations/ankihub_sync.py index aa3a8976a..6dbe40b57 100644 --- a/ankihub/gui/operations/ankihub_sync.py +++ b/ankihub/gui/operations/ankihub_sync.py @@ -109,7 +109,7 @@ def get_subscriptions_in_background() -> None: ) if ( - config.get_feature_flags().get("addon_tours", False) + config.get_feature_flags().get("onboarding_tour", False) and config.last_deck_sync() is None and not config.deck_config(config.intro_deck_id) ): diff --git a/ankihub/gui/tutorial.py b/ankihub/gui/tutorial.py index 4850e7d28..f7d4aeeee 100644 --- a/ankihub/gui/tutorial.py +++ b/ankihub/gui/tutorial.py @@ -554,7 +554,7 @@ def wrapper(*args: Any, **kwargs: Any) -> None: def prompt_for_onboarding_tutorial() -> None: from aqt.deckbrowser import DeckBrowser, DeckBrowserBottomBar - if active_tutorial or not config.get_feature_flags().get("addon_tours", True): + if active_tutorial or not config.get_feature_flags().get("onboarding_tour", False): return config.set_onboarding_tutorial_pending(True) diff --git a/tests/addon/test_integration.py b/tests/addon/test_integration.py index 8fc2c1979..fc8845922 100644 --- a/tests/addon/test_integration.py +++ b/tests/addon/test_integration.py @@ -9789,24 +9789,24 @@ def test_sets_onboarding_tutorial_pending_to_true( with anki_session_with_addon_data.profile_loaded(): config.set_onboarding_tutorial_pending(False) mocker.patch.object(tutorial, "active_tutorial", None) - mocker.patch.object(config, "get_feature_flags", return_value={"addon_tours": True}) + mocker.patch.object(config, "get_feature_flags", return_value={"onboarding_tour": True}) mocker.patch.object(tutorial, "inject_tutorial_assets") tutorial.prompt_for_onboarding_tutorial() assert config.onboarding_tutorial_pending() is True - def test_returns_early_when_addon_tours_feature_flag_is_false( + def test_returns_early_when_onboarding_tour_feature_flag_is_false( self, anki_session_with_addon_data: AnkiSession, mocker: MockerFixture, ): - """Test that function returns early when addon_tours feature flag is False.""" + """Test that function returns early when onboarding_tour feature flag is False.""" from ankihub.gui import tutorial with anki_session_with_addon_data.profile_loaded(): config.set_onboarding_tutorial_pending(False) mocker.patch.object(tutorial, "active_tutorial", None) - mocker.patch.object(config, "get_feature_flags", return_value={"addon_tours": False}) + mocker.patch.object(config, "get_feature_flags", return_value={"onboarding_tour": False}) mock_inject = mocker.patch.object(tutorial, "inject_tutorial_assets") tutorial.prompt_for_onboarding_tutorial() @@ -9824,7 +9824,7 @@ def test_injects_assets( with anki_session_with_addon_data.profile_loaded(): config.set_onboarding_tutorial_pending(False) mocker.patch.object(tutorial, "active_tutorial", None) - mocker.patch.object(config, "get_feature_flags", return_value={"addon_tours": True}) + mocker.patch.object(config, "get_feature_flags", return_value={"onboarding_tour": True}) mock_inject = mocker.patch.object(tutorial, "inject_tutorial_assets") tutorial.prompt_for_onboarding_tutorial() @@ -9868,11 +9868,11 @@ def test_show_onboarding_prompt_if_first_sync_skips_when_not_first_sync( class TestSubscribeToIntroDeck: @pytest.mark.qt_no_exception_capture @pytest.mark.parametrize( - "addon_tours_enabled, is_first_sync, intro_deck_already_configured, expected_subscribe_called", + "onboarding_tour_enabled, is_first_sync, intro_deck_already_configured, expected_subscribe_called", [ # All conditions met → subscribe_to_deck is called (True, True, False, True), - # addon_tours feature flag is False → subscribe_to_deck is not called + # onboarding_tour feature flag is False → subscribe_to_deck is not called (False, True, False, False), # last_deck_sync is not None (not first sync) → subscribe_to_deck is not called (True, False, False, False), @@ -9891,7 +9891,7 @@ def test_subscribe_to_intro_deck_conditions( qtbot: QtBot, mock_client_methods_called_during_ankihub_sync: None, install_ah_deck: InstallAHDeck, - addon_tours_enabled: bool, + onboarding_tour_enabled: bool, is_first_sync: bool, intro_deck_already_configured: bool, expected_subscribe_called: bool, @@ -9902,7 +9902,7 @@ def test_subscribe_to_intro_deck_conditions( mocker.patch.object( config, "get_feature_flags", - return_value={"addon_tours": addon_tours_enabled}, + return_value={"onboarding_tour": onboarding_tour_enabled}, ) mocker.patch.object( config, @@ -9935,7 +9935,7 @@ def test_subscribe_to_intro_deck_failure_is_propagated( mocker.patch.object( config, "get_feature_flags", - return_value={"addon_tours": True}, + return_value={"onboarding_tour": True}, ) mocker.patch.object(config, "last_deck_sync", return_value=None) error_message = "Test subscription error" @@ -9965,7 +9965,7 @@ def test_subscribe_to_intro_deck_success_continues_sync( mocker.patch.object( config, "get_feature_flags", - return_value={"addon_tours": True}, + return_value={"onboarding_tour": True}, ) mocker.patch.object(config, "last_deck_sync", return_value=None) subscribe_mock = mocker.patch.object(AnkiHubClient, "subscribe_to_deck")