@@ -2,16 +2,30 @@ import tape from 'tape-catch'
2
2
import td from 'testdouble'
3
3
import { Config } from '../../../lib/config'
4
4
import { Fetcher } from '../../../lib/sync/fetcher/fetcher'
5
+ import { Job } from '../../../lib/sync/fetcher/types'
6
+
7
+ class FetcherTest extends Fetcher < any , any , any > {
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ process ( _job : any , res : any ) {
10
+ return undefined // have to return undefined, otherwise the function return signature is void.
11
+ }
12
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+ async request ( _job : any , peer : any ) {
14
+ return
15
+ }
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
+ async store ( store : any ) { }
18
+ }
5
19
6
20
tape ( '[Fetcher]' , ( t ) => {
7
21
t . test ( 'should handle bad result' , ( t ) => {
8
22
t . plan ( 2 )
9
23
const config = new Config ( { loglevel : 'error' , transports : [ ] } )
10
- const fetcher = new Fetcher ( { config, pool : td . object ( ) } )
24
+ const fetcher = new FetcherTest ( { config, pool : td . object ( ) } )
11
25
const job : any = { peer : { } , state : 'active' }
12
26
; ( fetcher as any ) . running = true
13
- fetcher . next = td . func < Fetcher [ 'next' ] > ( )
14
- fetcher . wait = td . func < Fetcher [ 'wait' ] > ( )
27
+ fetcher . next = td . func < FetcherTest [ 'next' ] > ( )
28
+ fetcher . wait = td . func < FetcherTest [ 'wait' ] > ( )
15
29
td . when ( fetcher . wait ( ) ) . thenResolve ( undefined )
16
30
fetcher . success ( job , undefined )
17
31
t . equals ( ( fetcher as any ) . in . size ( ) , 1 , 'enqueued job' )
@@ -21,27 +35,27 @@ tape('[Fetcher]', (t) => {
21
35
t . test ( 'should handle failure' , ( t ) => {
22
36
t . plan ( 2 )
23
37
const config = new Config ( { loglevel : 'error' , transports : [ ] } )
24
- const fetcher = new Fetcher ( { config, pool : td . object ( ) } )
38
+ const fetcher = new FetcherTest ( { config, pool : td . object ( ) } )
25
39
const job = { peer : { } , state : 'active' }
26
40
; ( fetcher as any ) . running = true
27
- fetcher . next = td . func < Fetcher [ 'next' ] > ( )
41
+ fetcher . next = td . func < FetcherTest [ 'next' ] > ( )
28
42
fetcher . on ( 'error' , ( err : Error ) => t . equals ( err . message , 'err0' , 'got error' ) )
29
- fetcher . failure ( job , new Error ( 'err0' ) )
43
+ fetcher . failure ( job as Job < any , any , any > , new Error ( 'err0' ) )
30
44
t . equals ( ( fetcher as any ) . in . size ( ) , 1 , 'enqueued job' )
31
45
} )
32
46
33
47
t . test ( 'should handle expiration' , ( t ) => {
34
48
t . plan ( 2 )
35
49
const config = new Config ( { loglevel : 'error' , transports : [ ] } )
36
- const fetcher = new Fetcher ( {
50
+ const fetcher = new FetcherTest ( {
37
51
config,
38
52
pool : td . object ( ) ,
39
53
timeout : 5 ,
40
54
} )
41
55
const job = { index : 0 }
42
56
const peer = { idle : true }
43
- fetcher . peer = td . func < Fetcher [ 'peer' ] > ( )
44
- fetcher . request = td . func < Fetcher [ 'request' ] > ( )
57
+ fetcher . peer = td . func < FetcherTest [ 'peer' ] > ( )
58
+ fetcher . request = td . func < FetcherTest [ 'request' ] > ( )
45
59
td . when ( fetcher . peer ( ) ) . thenReturn ( peer )
46
60
td . when ( fetcher . request ( td . matchers . anything ( ) , { idle : false } ) , { delay : 10 } ) . thenReject (
47
61
new Error ( 'err0' )
0 commit comments