1 package pagination
2
3 import (
4 "testing"
5
6 freightv1 "go.einride.tech/aip/proto/gen/einride/example/freight/v1"
7 "google.golang.org/genproto/googleapis/example/library/v1"
8 "gotest.tools/v3/assert"
9 )
10
11 func TestCalculateRequestChecksum(t *testing.T) {
12 t.Parallel()
13 for _, tt := range []struct {
14 name string
15 request1 Request
16 request2 Request
17 equal bool
18 }{
19 {
20 name: "same request",
21 request1: &library.ListBooksRequest{
22 Parent: "shelves/1",
23 PageSize: 100,
24 PageToken: "token",
25 },
26 request2: &library.ListBooksRequest{
27 Parent: "shelves/1",
28 PageSize: 100,
29 PageToken: "token",
30 },
31 equal: true,
32 },
33 {
34 name: "different parents",
35 request1: &library.ListBooksRequest{
36 Parent: "shelves/1",
37 PageSize: 100,
38 PageToken: "token",
39 },
40 request2: &library.ListBooksRequest{
41 Parent: "shelves/2",
42 PageSize: 100,
43 PageToken: "token",
44 },
45 equal: false,
46 },
47 {
48 name: "different page sizes",
49 request1: &library.ListBooksRequest{
50 Parent: "shelves/1",
51 PageSize: 100,
52 PageToken: "token",
53 },
54 request2: &library.ListBooksRequest{
55 Parent: "shelves/1",
56 PageSize: 200,
57 PageToken: "token",
58 },
59 equal: true,
60 },
61 {
62 name: "different page tokens",
63 request1: &library.ListBooksRequest{
64 Parent: "shelves/1",
65 PageSize: 100,
66 PageToken: "token",
67 },
68 request2: &library.ListBooksRequest{
69 Parent: "shelves/1",
70 PageSize: 100,
71 PageToken: "token2",
72 },
73 equal: true,
74 },
75 {
76 name: "different skips",
77 request1: &freightv1.ListSitesRequest{
78 Parent: "shippers/1",
79 PageSize: 100,
80 Skip: 0,
81 },
82 request2: &freightv1.ListSitesRequest{
83 Parent: "shippers/1",
84 PageSize: 100,
85 Skip: 30,
86 },
87 equal: true,
88 },
89 } {
90 tt := tt
91 t.Run(tt.name, func(t *testing.T) {
92 t.Parallel()
93 checksum1, err := calculateRequestChecksum(tt.request1)
94 assert.NilError(t, err)
95 checksum2, err := calculateRequestChecksum(tt.request2)
96 assert.NilError(t, err)
97 if tt.equal {
98 assert.Assert(t, checksum1 == checksum2)
99 } else {
100 assert.Assert(t, checksum1 != checksum2)
101 }
102 })
103 }
104 }
105
View as plain text