1
+ import { test } from 'zinnia:test'
2
+ import { assertEquals , assertRejects } from 'zinnia:assert'
3
+ import { getPendingDisputes , submitDisputeResult } from '../lib/retrieve-checker-client.js'
4
+ // dummy tests as of now
5
+ // Mock environment and contract for testing
6
+ const TEST_PRIVATE_KEY = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
7
+
8
+ // Ensure private key is available in test environment
9
+ Deno . env . set ( 'CHECKER_PRIVATE_KEY' , TEST_PRIVATE_KEY )
10
+
11
+ // Mock contract factory for testing
12
+ function createMockContract ( mockDisputes = { } ) {
13
+ return {
14
+ getDisputesByStatus : async ( status ) => {
15
+ return mockDisputes . ids || [ ]
16
+ } ,
17
+ getDisputeDetails : async ( id ) => {
18
+ const dispute = mockDisputes [ id ]
19
+ if ( ! dispute ) {
20
+ throw new Error ( `Dispute ID ${ id } not found` )
21
+ }
22
+ return dispute
23
+ } ,
24
+ resolveDispute : async ( disputeId , newStatus ) => {
25
+ mockDisputes . resolvedDisputes = mockDisputes . resolvedDisputes || [ ]
26
+ mockDisputes . resolvedDisputes . push ( { disputeId, newStatus } )
27
+ // Return mock transaction and receipt for ethers compatibility
28
+ return {
29
+ hash : '0xmocktxhash' ,
30
+ wait : async ( ) => ( { blockNumber : 12345 } )
31
+ }
32
+ }
33
+ }
34
+ }
35
+
36
+ test ( 'getPendingDisputes returns empty array when no pending disputes exist' , async ( ) => {
37
+ const mockContract = createMockContract ( )
38
+ const result = await getPendingDisputes ( { smartContract : mockContract } )
39
+ assertEquals ( result , [ ] )
40
+ } )
41
+
42
+ test ( 'getPendingDisputes returns array of pending disputes' , async ( ) => {
43
+ const mockDisputes = {
44
+ ids : [ 1 , 2 ] ,
45
+ 1 : {
46
+ disputeId : 1 ,
47
+ cid : '0x' + Buffer . from ( 'QmTest1' ) . toString ( 'hex' ) ,
48
+ spActorId : 12345
49
+ } ,
50
+ 2 : {
51
+ disputeId : 2 ,
52
+ cid : '0x' + Buffer . from ( 'QmTest2' ) . toString ( 'hex' ) ,
53
+ spActorId : 67890
54
+ }
55
+ }
56
+ const mockContract = createMockContract ( mockDisputes )
57
+
58
+ const result = await getPendingDisputes ( { smartContract : mockContract } )
59
+ assertEquals ( result , [
60
+ { id : '1' , cid : 'QmTest1' , minerId : 'f012345' } ,
61
+ { id : '2' , cid : 'QmTest2' , minerId : 'f067890' }
62
+ ] )
63
+ } )
64
+
65
+ test ( 'submitDisputeResult resolves dispute with correct status for successful retrieval' , async ( ) => {
66
+ const mockDisputes = { resolvedDisputes : [ ] }
67
+ const mockContract = createMockContract ( mockDisputes )
68
+
69
+ await submitDisputeResult ( 1 , { statusCode : 200 } , { smartContract : mockContract } )
70
+ assertEquals ( mockDisputes . resolvedDisputes , [
71
+ { disputeId : 1 , newStatus : 2 } // DisputeStatus.Resolved
72
+ ] )
73
+ } )
74
+
75
+ test ( 'submitDisputeResult resolves dispute with failed status for timeout' , async ( ) => {
76
+ const mockDisputes = { resolvedDisputes : [ ] }
77
+ const mockContract = createMockContract ( mockDisputes )
78
+
79
+ await submitDisputeResult ( 1 , { statusCode : 200 , timeout : true } , { smartContract : mockContract } )
80
+ assertEquals ( mockDisputes . resolvedDisputes , [
81
+ { disputeId : 1 , newStatus : 3 } // DisputeStatus.Failed
82
+ ] )
83
+ } )
84
+
85
+ test ( 'submitDisputeResult resolves dispute with failed status for error response' , async ( ) => {
86
+ const mockDisputes = { resolvedDisputes : [ ] }
87
+ const mockContract = createMockContract ( mockDisputes )
88
+
89
+ await submitDisputeResult ( 1 , { statusCode : 404 } , { smartContract : mockContract } )
90
+ assertEquals ( mockDisputes . resolvedDisputes , [
91
+ { disputeId : 1 , newStatus : 3 } // DisputeStatus.Failed
92
+ ] )
93
+ } )
94
+
95
+ test ( 'submitDisputeResult resolves dispute with rejected status for invalid check' , async ( ) => {
96
+ const mockDisputes = { resolvedDisputes : [ ] }
97
+ const mockContract = createMockContract ( mockDisputes )
98
+
99
+ await submitDisputeResult ( 1 , { statusCode : 302 } , { smartContract : mockContract } )
100
+ assertEquals ( mockDisputes . resolvedDisputes , [
101
+ { disputeId : 1 , newStatus : 4 } // DisputeStatus.Rejected
102
+ ] )
103
+ } )
0 commit comments