From b05cd582d7989cb2a3c93cb6bc414d3c5734a23b Mon Sep 17 00:00:00 2001 From: Ivan Ursulovic Date: Fri, 21 Feb 2025 12:27:20 +0100 Subject: [PATCH] Added tests for testing query preservation --- .../gno.land/p/demo/avl/pager/pager_test.gno | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/examples/gno.land/p/demo/avl/pager/pager_test.gno b/examples/gno.land/p/demo/avl/pager/pager_test.gno index a631c541c87..9fb9b9d6d68 100644 --- a/examples/gno.land/p/demo/avl/pager/pager_test.gno +++ b/examples/gno.land/p/demo/avl/pager/pager_test.gno @@ -222,3 +222,60 @@ func TestPager_ParseQuery(t *testing.T) { } } } + +func TestPage_PickerQueryParamPreservation(t *testing.T) { + tree := avl.NewTree() + for i := 1; i <= 6; i++ { + tree.Set(ufmt.Sprintf("key%d", i), i) + } + + pager := NewPager(tree, 2, false) + + tests := []struct { + name string + pageNumber int + path string + expected string + }{ + { + name: "single query param", + pageNumber: 1, + path: "/test?foo=bar", + expected: "**1** | [2](?page=2&foo=bar) | [3](?page=3&foo=bar)", + }, + { + name: "multiple query params", + pageNumber: 2, + path: "/test?foo=bar&baz=qux", + expected: "[1](?page=1&foo=bar&baz=qux) | **2** | [3](?page=3&foo=bar&baz=qux)", + }, + { + name: "overwrite existing page param", + pageNumber: 1, + path: "/test?param1=value1&page=999¶m2=value2", + expected: "**1** | [2](?page=2¶m1=value1¶m2=value2) | [3](?page=3¶m1=value1¶m2=value2)", + }, + { + name: "empty query string", + pageNumber: 2, + path: "/test", + expected: "[1](?page=1) | **2** | [3](?page=3)", + }, + { + name: "query string with only page param", + pageNumber: 2, + path: "/test?page=2", + expected: "[1](?page=1) | **2** | [3](?page=3)", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + page := pager.GetPageWithSize(tt.pageNumber, 2) + result := page.Picker(tt.path) + if result != tt.expected { + t.Errorf("\nwant: %s\ngot: %s", tt.expected, result) + } + }) + } +}