diff --git a/packages/toolkit/src/query/tests/errorHandling.test.tsx b/packages/toolkit/src/query/tests/errorHandling.test.tsx index c19b507ed6..a7cc2248fc 100644 --- a/packages/toolkit/src/query/tests/errorHandling.test.tsx +++ b/packages/toolkit/src/query/tests/errorHandling.test.tsx @@ -459,10 +459,10 @@ describe('error handling in a component', () => { baseQuery: fetchBaseQuery({ baseUrl: 'https://example.com' }), endpoints: (build) => ({ update: build.mutation({ - query: () => ({ url: 'success' }), + query: () => ({ url: '/success' }), }), failedUpdate: build.mutation({ - query: () => ({ url: 'error' }), + query: () => ({ url: '/error' }), }), }), }) diff --git a/packages/toolkit/src/query/tests/queryFn.test.tsx b/packages/toolkit/src/query/tests/queryFn.test.tsx index a285cd6d8a..58de9299e6 100644 --- a/packages/toolkit/src/query/tests/queryFn.test.tsx +++ b/packages/toolkit/src/query/tests/queryFn.test.tsx @@ -319,7 +319,7 @@ describe('usage scenario tests', () => { throw randomResult.error } const post = randomResult.data as Post - const result = await fetchWithBQ(`/post/${post.id}`) + const result = await fetchWithBQ(`post/${post.id}`) return result.data ? { data: result.data as Post } : { error: result.error as FetchBaseQueryError } diff --git a/packages/toolkit/src/query/tests/utils.test.ts b/packages/toolkit/src/query/tests/utils.test.ts index 4b111b2a00..6629a170a1 100644 --- a/packages/toolkit/src/query/tests/utils.test.ts +++ b/packages/toolkit/src/query/tests/utils.test.ts @@ -75,20 +75,17 @@ describe('isDocumentVisible', () => { describe('joinUrls', () => { test('correctly joins variations of relative urls', () => { - expect(joinUrls('/api/', '/banana')).toBe('/api/banana') expect(joinUrls('/api/', 'banana')).toBe('/api/banana') - expect(joinUrls('/api', 'banana')).toBe('/api/banana') expect(joinUrls('/api', '/banana/')).toBe('/api/banana/') expect(joinUrls('', '/banana')).toBe('/banana') expect(joinUrls('', 'banana')).toBe('banana') + + expect(joinUrls('/api', '?foo=bar')).toBe('/api?foo=bar') }) test('correctly joins variations of absolute urls', () => { - expect(joinUrls('https://example.com/api', 'banana')).toBe( - 'https://example.com/api/banana' - ) expect(joinUrls('https://example.com/api', '/banana')).toBe( 'https://example.com/api/banana' ) @@ -96,8 +93,13 @@ describe('joinUrls', () => { expect(joinUrls('https://example.com/api/', 'banana')).toBe( 'https://example.com/api/banana' ) - expect(joinUrls('https://example.com/api/', '/banana/')).toBe( - 'https://example.com/api/banana/' + + expect(joinUrls('https://example.com/api/', '?foo=bar')).toBe( + 'https://example.com/api/?foo=bar' + ) + + expect(joinUrls('https://example.com/api', '?foo=bar')).toBe( + 'https://example.com/api?foo=bar' ) }) }) diff --git a/packages/toolkit/src/query/utils/joinUrls.ts b/packages/toolkit/src/query/utils/joinUrls.ts index f675338611..e68cd32a7c 100644 --- a/packages/toolkit/src/query/utils/joinUrls.ts +++ b/packages/toolkit/src/query/utils/joinUrls.ts @@ -1,12 +1,6 @@ import { isAbsoluteUrl } from './isAbsoluteUrl' -const withoutTrailingSlash = (url: string) => url.replace(/\/$/, '') -const withoutLeadingSlash = (url: string) => url.replace(/^\//, '') - -export function joinUrls( - base: string | undefined, - url: string | undefined -): string { +export function joinUrls(base?: string, url?: string): string { if (!base) { return url! } @@ -18,8 +12,5 @@ export function joinUrls( return url } - base = withoutTrailingSlash(base) - url = withoutLeadingSlash(url) - - return `${base}/${url}` + return `${base}${url}`; }