File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -59,6 +59,20 @@ export function extractNextParameters<
5959 }
6060}
6161
62+ export function haveParametersChanged (
63+ parameters : Record < string , unknown > ,
64+ nextParameters : Record < string , unknown > ,
65+ ) {
66+ const keys = [
67+ ...Object . keys ( parameters ) ,
68+ ...Object . keys ( nextParameters ) ,
69+ ] ;
70+ const uniqueKeys = new Set ( keys ) ;
71+ return [ ...uniqueKeys ] . some ( ( key ) =>
72+ `${ parameters [ key ] } ` !== `${ nextParameters [ key ] } ` // string comparison
73+ ) ;
74+ }
75+
6276function getSource ( ) {
6377 const moduleSource = `serpapi@${ version } ` ;
6478 try {
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ import {
2121 buildUrl ,
2222 execute ,
2323 extractNextParameters ,
24+ haveParametersChanged ,
2425} from "../src/utils.ts" ;
2526
2627loadSync ( { export : true } ) ;
@@ -68,6 +69,106 @@ describe("extractNextParameters", () => {
6869 } ) ;
6970} ) ;
7071
72+ describe ( "haveParametersChanged" , ( ) => {
73+ it ( "with different number of properties" , ( ) => {
74+ assertEquals (
75+ haveParametersChanged ( { q : "coffee" } , {
76+ kl : "us-en" ,
77+ q : "coffee" ,
78+ start : "26" ,
79+ } ) ,
80+ true ,
81+ ) ;
82+ assertEquals (
83+ haveParametersChanged ( { kl : "us-en" , q : "coffee" , start : "26" } , {
84+ q : "coffee" ,
85+ } ) ,
86+ true ,
87+ ) ;
88+ } ) ;
89+
90+ it ( "with same number of properties, but different properties" , ( ) => {
91+ assertEquals (
92+ haveParametersChanged ( {
93+ kl : "us-en" ,
94+ q : "coffee" ,
95+ safe : "1" ,
96+ } , {
97+ kl : "us-en" ,
98+ q : "coffee" ,
99+ start : "26" ,
100+ } ) ,
101+ true ,
102+ ) ;
103+ } ) ;
104+
105+ it ( "with same properties, but different values" , ( ) => {
106+ assertEquals (
107+ haveParametersChanged ( {
108+ kl : "us-en" ,
109+ q : "coffee" ,
110+ start : "30" ,
111+ } , {
112+ kl : "us-en" ,
113+ q : "coffee" ,
114+ start : "26" ,
115+ } ) ,
116+ true ,
117+ ) ;
118+ assertEquals (
119+ haveParametersChanged ( {
120+ kl : "us-en" ,
121+ q : "coffee" ,
122+ start : "26" ,
123+ } , {
124+ kl : "us-en" ,
125+ q : "coffee" ,
126+ start : "30" ,
127+ } ) ,
128+ true ,
129+ ) ;
130+ } ) ;
131+
132+ it ( "with same properties and same values, regardless of type" , ( ) => {
133+ assertEquals (
134+ haveParametersChanged ( {
135+ kl : "us-en" ,
136+ q : "coffee" ,
137+ start : "30" ,
138+ } , {
139+ kl : "us-en" ,
140+ q : "coffee" ,
141+ start : "30" ,
142+ } ) ,
143+ false ,
144+ ) ;
145+ assertEquals (
146+ haveParametersChanged ( {
147+ kl : "us-en" ,
148+ q : "coffee" ,
149+ start : 30 ,
150+ } , {
151+ kl : "us-en" ,
152+ q : "coffee" ,
153+ start : "30" ,
154+ } ) ,
155+ false ,
156+ ) ;
157+ assertEquals (
158+ haveParametersChanged ( {
159+ kl : "us-en" ,
160+ q : "coffee" ,
161+ start : "30" ,
162+ } , {
163+ kl : "us-en" ,
164+ q : "coffee" ,
165+ start : 30 ,
166+ } ) ,
167+ false ,
168+ ) ;
169+ } ) ;
170+ } ) ;
171+
71172describe ( "buildUrl" , ( ) => {
72173 let urlStub : Stub ;
73174
You can’t perform that action at this time.
0 commit comments