From 6f047a2271c1d08437af9b5a6a8e2e1690864056 Mon Sep 17 00:00:00 2001 From: Greg Johnston Date: Tue, 16 Sep 2025 16:22:42 -0400 Subject: [PATCH] test: add regression test for #4296 --- .../e2e/features/issue_4296.feature | 18 ++++++++++ examples/regression/src/app.rs | 5 ++- examples/regression/src/issue_4296.rs | 36 +++++++++++++++++++ examples/regression/src/lib.rs | 1 + 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 examples/regression/e2e/features/issue_4296.feature create mode 100644 examples/regression/src/issue_4296.rs diff --git a/examples/regression/e2e/features/issue_4296.feature b/examples/regression/e2e/features/issue_4296.feature new file mode 100644 index 000000000..9be920a88 --- /dev/null +++ b/examples/regression/e2e/features/issue_4296.feature @@ -0,0 +1,18 @@ +@check_issue_4296 +Feature: Check that issue 4296 does not reappear + + Scenario: Query param signals created in LazyRoute::data() are reactive in ::view(). + Given I see the app + And I can access regression test 4296 + Then I see the result is the string None + When I select the link abc + Then I see the result is the string Some("abc") + When I select the link def + Then I see the result is the string Some("def") + + Scenario: Loading page with query signal works as well. + Given I see the app + And I can access regression test 4296 + When I select the link abc + When I reload the page + Then I see the result is the string Some("abc") diff --git a/examples/regression/src/app.rs b/examples/regression/src/app.rs index 6e34905a0..134a92d2c 100644 --- a/examples/regression/src/app.rs +++ b/examples/regression/src/app.rs @@ -1,6 +1,7 @@ use crate::{ issue_4005::Routes4005, issue_4088::Routes4088, issue_4217::Routes4217, - issue_4285::Routes4285, pr_4015::Routes4015, pr_4091::Routes4091, + issue_4285::Routes4285, issue_4296::Routes4296, pr_4015::Routes4015, + pr_4091::Routes4091, }; use leptos::prelude::*; use leptos_meta::{MetaTags, *}; @@ -45,6 +46,7 @@ pub fn App() -> impl IntoView { + @@ -70,6 +72,7 @@ fn HomePage() -> impl IntoView {
  • "4217"
  • "4005"
  • "4285"
  • +
  • "4296"
  • } diff --git a/examples/regression/src/issue_4296.rs b/examples/regression/src/issue_4296.rs new file mode 100644 index 000000000..338ef1515 --- /dev/null +++ b/examples/regression/src/issue_4296.rs @@ -0,0 +1,36 @@ +use leptos::prelude::*; +#[allow(unused_imports)] +use leptos_router::{ + components::Route, path, Lazy, MatchNestedRoutes, NavigateOptions, +}; +use leptos_router::{hooks::use_query_map, LazyRoute}; + +#[component] +pub fn Routes4296() -> impl MatchNestedRoutes + Clone { + view! { + ::new()}/> + } + .into_inner() +} + +struct Issue4296 { + query: Signal>, +} + +impl LazyRoute for Issue4296 { + fn data() -> Self { + let query = use_query_map(); + let query = Signal::derive(move || query.read().get("q")); + Self { query } + } + + async fn view(this: Self) -> AnyView { + let Issue4296 { query } = this; + view! { + "abc" + "def" +

    {move || format!("{:?}", query.get())}

    + } + .into_any() + } +} diff --git a/examples/regression/src/lib.rs b/examples/regression/src/lib.rs index 44afab978..a326d4e4d 100644 --- a/examples/regression/src/lib.rs +++ b/examples/regression/src/lib.rs @@ -3,6 +3,7 @@ mod issue_4005; mod issue_4088; mod issue_4217; mod issue_4285; +mod issue_4296; mod pr_4015; mod pr_4091;