1- use crate :: common:: { is_error, is_success, text, Contract , TestContext , DEFAULT_SURI } ;
2- use anyhow:: { anyhow , Result } ;
1+ use crate :: common:: { is_error, is_success, text, Contract , InkNode , TestEnv , DEFAULT_SURI } ;
2+ use anyhow:: Result ;
33use pop_mcp_server:: tools:: call:: contract:: { call_contract, CallContractParams } ;
44
55#[ test]
66fn call_contract_nonexistent_path_fails ( ) -> Result < ( ) > {
7- let ctx = TestContext :: new ( ) ?;
8- let executor = ctx. executor ( ) ?;
9-
10- // Call with a non-existent contract path - this will definitely fail
7+ let env = TestEnv :: new ( ) ?;
118 let params = CallContractParams {
129 path : "/nonexistent/path/to/contract" . to_string ( ) ,
1310 contract : "0x0000000000000000000000000000000000000000" . to_string ( ) ,
@@ -19,73 +16,69 @@ fn call_contract_nonexistent_path_fails() -> Result<()> {
1916 url : None ,
2017 } ;
2118
22- let result = call_contract ( & executor, params) ?;
19+ let result = call_contract ( env . executor ( ) , params) ?;
2320 assert ! ( is_error( & result) ) ;
2421 assert ! ( text( & result) ?. contains( "Contract call failed" ) ) ;
2522 Ok ( ( ) )
2623}
2724
2825#[ test]
2926fn call_contract_get_and_flip_mutates_state ( ) -> Result < ( ) > {
30- let ctx = TestContext :: new ( ) ?;
31- let executor = ctx. executor ( ) ?;
32-
33- let mut contract = Contract :: with_context ( ctx, & executor, "call_test" ) ?;
34- contract. build ( & executor) ?;
35- contract. deploy ( & executor, Some ( "new" ) , Some ( "false" ) ) ?;
36- let addr = contract
37- . address
38- . as_ref ( )
39- . ok_or_else ( || anyhow ! ( "Missing contract address after deploy" ) ) ?
40- . to_string ( ) ;
41- let node_url = contract
42- . node_url ( )
43- . ok_or_else ( || anyhow ! ( "Missing node URL after deploy" ) ) ?
44- . to_string ( ) ;
27+ let env = TestEnv :: new ( ) ?;
28+ let mut contract = Contract :: new ( ) ?;
29+ contract. deploy ( "new" , "false" ) ?;
4530
46- // Initial get - should return false (initial state)
47- let params = CallContractParams {
48- path : contract. path . to_string_lossy ( ) . to_string ( ) ,
49- contract : addr. clone ( ) ,
50- message : "get" . to_string ( ) ,
51- args : None ,
52- value : None ,
53- execute : None ,
54- suri : Some ( DEFAULT_SURI . to_string ( ) ) ,
55- url : Some ( node_url. clone ( ) ) ,
56- } ;
31+ let url = InkNode :: url ( ) ?. to_string ( ) ;
32+ let addr = contract. address ( ) . to_string ( ) ;
33+ let path = contract. path . display ( ) . to_string ( ) ;
5734
58- let result = call_contract ( & executor, params) ?;
35+ // Initial get - should return false
36+ let result = call_contract (
37+ env. executor ( ) ,
38+ CallContractParams {
39+ path : path. clone ( ) ,
40+ contract : addr. clone ( ) ,
41+ message : "get" . to_string ( ) ,
42+ args : None ,
43+ value : None ,
44+ execute : None ,
45+ suri : Some ( DEFAULT_SURI . to_string ( ) ) ,
46+ url : Some ( url. clone ( ) ) ,
47+ } ,
48+ ) ?;
5949 assert ! ( is_success( & result) ) ;
6050 assert ! ( text( & result) ?. contains( "false" ) ) ;
6151
62- // Call flip to mutate state
63- let flip_params = CallContractParams {
64- path : contract. path . to_string_lossy ( ) . to_string ( ) ,
65- contract : addr. clone ( ) ,
66- message : "flip" . to_string ( ) ,
67- args : None ,
68- value : None ,
69- execute : Some ( true ) ,
70- suri : Some ( DEFAULT_SURI . to_string ( ) ) ,
71- url : Some ( node_url. clone ( ) ) ,
72- } ;
73- let flip_result = call_contract ( & executor, flip_params) ?;
52+ // Flip to mutate state
53+ let flip_result = call_contract (
54+ env. executor ( ) ,
55+ CallContractParams {
56+ path : path. clone ( ) ,
57+ contract : addr. clone ( ) ,
58+ message : "flip" . to_string ( ) ,
59+ args : None ,
60+ value : None ,
61+ execute : Some ( true ) ,
62+ suri : Some ( DEFAULT_SURI . to_string ( ) ) ,
63+ url : Some ( url. clone ( ) ) ,
64+ } ,
65+ ) ?;
7466 assert ! ( is_success( & flip_result) ) ;
75- assert ! ( !text( & flip_result) ?. is_empty( ) ) ;
7667
77- // Call get again - should now return true
78- let get_params = CallContractParams {
79- path : contract. path . to_string_lossy ( ) . to_string ( ) ,
80- contract : addr,
81- message : "get" . to_string ( ) ,
82- args : None ,
83- value : None ,
84- execute : None ,
85- suri : Some ( DEFAULT_SURI . to_string ( ) ) ,
86- url : Some ( node_url) ,
87- } ;
88- let get_result = call_contract ( & executor, get_params) ?;
68+ // Get again - should return true
69+ let get_result = call_contract (
70+ env. executor ( ) ,
71+ CallContractParams {
72+ path,
73+ contract : addr,
74+ message : "get" . to_string ( ) ,
75+ args : None ,
76+ value : None ,
77+ execute : None ,
78+ suri : Some ( DEFAULT_SURI . to_string ( ) ) ,
79+ url : Some ( url) ,
80+ } ,
81+ ) ?;
8982 assert ! ( is_success( & get_result) ) ;
9083 assert ! ( text( & get_result) ?. contains( "true" ) ) ;
9184 Ok ( ( ) )
0 commit comments