import { RetailerProductVariant } from '@/entities'; import { filterRetailerByUrlUsingWhitelist, getFilterRetailersUsingWhitelistMiddleware, getRetailerFromUrl, } from './retailer'; describe('retailer', () => { it('should work when calling getRetailerFromUrl with url without scheme', async () => { const urlWithoutScheme = 'www.jossandmain.com/-/pdp/-j000892128.html'; expect(() => getRetailerFromUrl(urlWithoutScheme)).not.toThrow(); }); it('should not error when calling getRetailerFromUrl with a valid url', async () => { const validUrl = 'https://www.jossandmain.com/-/pdp/-j000892128.html'; expect(() => getRetailerFromUrl(validUrl)).not.toThrow(); }); }); describe('retailer whitelist', () => { let retailerDomainWhitelistSet: Set; beforeAll(() => { retailerDomainWhitelistSet = new Set(['whitelisted-domain']); }); it('should filter retailer by URL using domain whitelist', async () => { const trueResult = filterRetailerByUrlUsingWhitelist( 'https://www.whitelisted-domain.com/abc/def', retailerDomainWhitelistSet ); expect(trueResult).toBe(true); const falseResult = filterRetailerByUrlUsingWhitelist( 'https://www.another-domain.com/abc/def', retailerDomainWhitelistSet ); expect(falseResult).toBe(false); }); it('should create middleware function that works correctly', async () => { const middleware = getFilterRetailersUsingWhitelistMiddleware( retailerDomainWhitelistSet ); const urlThatShouldNotBeFiltered = 'https://www.whitelisted-domain.com/abc/def'; const urlThatShouldBeFiltered = 'https://www.another-domain.com/abc/def'; const retailers: Partial[] = [ { url: urlThatShouldBeFiltered }, { url: urlThatShouldNotBeFiltered }, ]; const filteredRetailers = await middleware( null as any, async () => retailers ); expect(filteredRetailers.length).toBe(1); expect(filteredRetailers[0].url).toBe(urlThatShouldNotBeFiltered); expect(filteredRetailers[0]).not.toContain(urlThatShouldBeFiltered); }); });