@@ -3,7 +3,14 @@ import type { Server } from 'node:http';
33import http from 'node:http' ;
44import type { AddressInfo } from 'node:net' ;
55
6- import type { CrawlingContext , ErrorHandler , RequestHandler , RequestOptions , Source } from '@crawlee/basic' ;
6+ import type {
7+ CrawlingContext ,
8+ EnqueueLinksOptions ,
9+ ErrorHandler ,
10+ RequestHandler ,
11+ RequestOptions ,
12+ Source ,
13+ } from '@crawlee/basic' ;
714import {
815 BasicCrawler ,
916 Configuration ,
@@ -21,6 +28,7 @@ import type { Dictionary } from '@crawlee/utils';
2128import { sleep } from '@crawlee/utils' ;
2229import express from 'express' ;
2330import { MemoryStorageEmulator } from 'test/shared/MemoryStorageEmulator' ;
31+ import type { SetRequired } from 'type-fest' ;
2432import type { Mock } from 'vitest' ;
2533import { afterAll , beforeAll , beforeEach , describe , expect , test } from 'vitest' ;
2634
@@ -225,32 +233,38 @@ describe('BasicCrawler', () => {
225233 ] ) ;
226234 } ) ;
227235
228- describe ( '_crawlingContextEnqueueLinksWrapper ()' , ( ) => {
236+ describe ( 'enqueueLinksWithCrawlDepth ()' , ( ) => {
229237 let onSkippedRequestMock : Mock ;
230238 let addRequestsBatchedMock : Mock ;
231- let options : Parameters < BasicCrawler [ '_crawlingContextEnqueueLinksWrapper' ] > [ 0 ] ;
239+ let options : SetRequired < EnqueueLinksOptions , 'urls' > ;
240+ let request : Request ;
241+ let requestQueue : RequestQueue ;
242+
243+ type EnqueueLinksWrapperOptions = Parameters < BasicCrawler [ 'enqueueLinksWithCrawlDepth' ] > ;
244+ class TestCrawler extends BasicCrawler {
245+ public exposedEnqueueLinksWithCrawlDepth ( ...enqueueLinksOptions : EnqueueLinksWrapperOptions ) {
246+ return this . enqueueLinksWithCrawlDepth ( ...enqueueLinksOptions ) ;
247+ }
248+ }
232249
233- const crawler = new BasicCrawler ( { maxCrawlDepth : 3 } ) ;
234- // @ts -expect-error Accessing protected method
235- const { _crawlingContextEnqueueLinksWrapper } = crawler ;
250+ const crawler = new TestCrawler ( { maxCrawlDepth : 3 } ) ;
236251
237252 beforeEach ( ( ) => {
238253 addRequestsBatchedMock = vi . fn ( ) . mockImplementation ( async ( ) => ( { } ) ) ;
239254 onSkippedRequestMock = vi . fn ( ) ;
255+
240256 options = {
241- request : new Request ( { url : 'https://example.com/' , crawlDepth : 2 } ) ,
242- requestQueue : {
243- addRequestsBatched : addRequestsBatchedMock as RequestQueue [ 'addRequestsBatched' ] ,
244- } as RequestQueue ,
245- options : {
246- urls : [ 'https://example.com/1/' , 'https://example.com/2/' ] ,
247- onSkippedRequest : onSkippedRequestMock ,
248- } ,
257+ urls : [ 'https://example.com/1/' , 'https://example.com/2/' ] ,
258+ onSkippedRequest : onSkippedRequestMock ,
249259 } ;
260+ request = new Request ( { url : 'https://example.com/' , crawlDepth : 2 } ) ;
261+ requestQueue = {
262+ addRequestsBatched : addRequestsBatchedMock as RequestQueue [ 'addRequestsBatched' ] ,
263+ } as RequestQueue ;
250264 } ) ;
251265
252266 it ( 'should generate requests with maxCrawlDepth' , async ( ) => {
253- await _crawlingContextEnqueueLinksWrapper ( options ) ;
267+ await crawler . exposedEnqueueLinksWithCrawlDepth ( options , request , requestQueue ) ;
254268
255269 const requests = addRequestsBatchedMock . mock . calls [ 0 ] [ 0 ] ;
256270 expect ( requests ) . toHaveLength ( 2 ) ;
@@ -261,10 +275,8 @@ describe('BasicCrawler', () => {
261275 } ) ;
262276
263277 it ( 'should skip requests with crawlDepth exceeding maxCrawlDepth' , async ( ) => {
264- await _crawlingContextEnqueueLinksWrapper ( {
265- ...options ,
266- request : new Request ( { url : 'https://example.com/' , crawlDepth : 3 } ) ,
267- } ) ;
278+ const requestWithMaxDepth = new Request ( { url : 'https://example.com/' , crawlDepth : 3 } ) ;
279+ await crawler . exposedEnqueueLinksWithCrawlDepth ( options , requestWithMaxDepth , requestQueue ) ;
268280
269281 const requests = addRequestsBatchedMock . mock . calls [ 0 ] [ 0 ] ;
270282 expect ( requests ) . toHaveLength ( 0 ) ;
@@ -276,11 +288,10 @@ describe('BasicCrawler', () => {
276288 } ) ;
277289
278290 it ( 'should respect user provided transformRequestFunction' , async ( ) => {
279- const transformRequestFunction = vi . fn ( ( request : RequestOptions ) => request ) ;
280- await _crawlingContextEnqueueLinksWrapper ( {
281- ...options ,
282- options : { ...options . options , transformRequestFunction } ,
283- } ) ;
291+ const transformRequestFunction = vi . fn ( ( req : RequestOptions ) => req ) ;
292+ const optionsWithTransform = { ...options , transformRequestFunction } ;
293+
294+ await crawler . exposedEnqueueLinksWithCrawlDepth ( optionsWithTransform , request , requestQueue ) ;
284295
285296 expect ( transformRequestFunction ) . toHaveBeenCalled ( ) ;
286297
0 commit comments