diff --git a/packages/e2e/cypress/e2e/clearOnDefault.cy.js b/packages/e2e/cypress/e2e/clearOnDefault.cy.js index 189bfbaef..42097ef23 100644 --- a/packages/e2e/cypress/e2e/clearOnDefault.cy.js +++ b/packages/e2e/cypress/e2e/clearOnDefault.cy.js @@ -1,7 +1,9 @@ /// it('Clears the URL when setting the default value when `clearOnDefault` is used', () => { - cy.visit('/app/clearOnDefault?a=a&b=b') + cy.visit( + '/app/clearOnDefault?a=a&b=b&array=1,2,3&json-ref={"egg":"spam"}&json-new={"egg":"spam"}' + ) cy.contains('#hydration-marker', 'hydrated').should('be.hidden') cy.get('button').click() cy.location('search').should('eq', '?a=') diff --git a/packages/e2e/src/app/app/clearOnDefault/page.tsx b/packages/e2e/src/app/app/clearOnDefault/page.tsx index 652ed2810..505ec850b 100644 --- a/packages/e2e/src/app/app/clearOnDefault/page.tsx +++ b/packages/e2e/src/app/app/clearOnDefault/page.tsx @@ -1,6 +1,11 @@ 'use client' -import { useQueryState } from 'nuqs' +import { + parseAsArrayOf, + parseAsInteger, + parseAsJson, + useQueryState +} from 'nuqs' import { Suspense } from 'react' export default function Page() { @@ -11,18 +16,37 @@ export default function Page() { ) } +const defaultJSON = { foo: 'bar' } + function Client() { const [, setA] = useQueryState('a') const [, setB] = useQueryState('b', { defaultValue: '', clearOnDefault: true }) + const [, setArray] = useQueryState( + 'array', + parseAsArrayOf(parseAsInteger) + .withDefault([]) + .withOptions({ clearOnDefault: true }) + ) + const [, setJsonRef] = useQueryState( + 'json-ref', + parseAsJson().withDefault(defaultJSON).withOptions({ clearOnDefault: true }) + ) + const [, setJsonNew] = useQueryState( + 'json-new', + parseAsJson().withDefault(defaultJSON).withOptions({ clearOnDefault: true }) + ) return ( <>