Skip to content

Commit 084d53e

Browse files
authored
Merge pull request #100 from Relewise/fix/handle-aborted-requests
Fix: Handle aborted requests
2 parents 2c66ca2 + 90d018e commit 084d53e

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

packages/client/src/relewise.client.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ export abstract class RelewiseClient {
9696

9797
private handleRequestError(err: unknown): never {
9898
if (err instanceof ProblemDetailsError) throw err;
99-
99+
if (err instanceof DOMException) throw err;
100+
100101
console.error("Network error or preflight request failed. Check API Key and Dataset ID.");
101102
throw new Error("Network error or preflight request failed. Check API Key and Dataset ID.");
102103
}

packages/client/tests/integration-tests/productSearch.integration.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Searcher, ProductSearchBuilder, ProductSearchRequest, UserFactory, ValueSelectorFactory, DataValueFactory, GetProductFacet, ProductAssortmentFacet, ProductDataStringValueFacetResult, CategoryFacetResult, BrandFacetResult, Tracker } from '../../src';
22
import { Integrator, ProductUpdateBuilder, ProductVariantBuilder } from '@relewise/integrations';
33
import { test, expect } from '@jest/globals'
4+
import { fail } from 'assert';
45

56
const { npm_config_API_KEY: API_KEY, npm_config_DATASET_ID: DATASET_ID, npm_config_SERVER_URL: SERVER_URL } = process.env;
67

@@ -189,3 +190,23 @@ test('Highlighting', async() => {
189190
expect(result?.results![0].highlight?.offsets?.data[0].value.length).toBeGreaterThan(0);
190191
expect(result?.results![0].highlight?.snippets?.data[0].value[0].text).toBe("SomeValue");
191192
})
193+
194+
test('Aborting a search throws the expected error', async() => {
195+
const controller = new AbortController();
196+
const signal = controller.signal;
197+
198+
const request: ProductSearchRequest = baseProductBuilder()
199+
.setTerm('SomeValue')
200+
.build();
201+
202+
controller.abort()
203+
204+
try {
205+
await searcher.searchProducts(request, { abortSignal: signal });
206+
fail('Expected an AbortError to be thrown');
207+
} catch (e) {
208+
expect(e).toBeDefined();
209+
expect(e instanceof DOMException).toBe(true);
210+
expect((e as DOMException).name).toBe('AbortError');
211+
}
212+
});

0 commit comments

Comments
 (0)