Skip to content

Commit

Permalink
initial working tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Code0x2 committed Nov 19, 2023
1 parent 64bc461 commit b49ecd6
Showing 1 changed file with 51 additions and 51 deletions.
102 changes: 51 additions & 51 deletions test/V4SwapIntent.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -137,19 +137,23 @@ contract V4SwapIntentTest is BaseTest {
data: userOpData
});

SwapData memory swapData = SwapData({
tokenIn: address(WETH),
tokenOut: address(DAI),
requestedAmount: 10e18,
limitAmount: 0,
recipient: address(userEOA)
});

uint256 solverBid = 1e18;

// Build solver calldata (function selector on solver contract and its params)
bytes memory solverOpData = abi.encodeWithSelector(
UniswapV4IntentSolver.fulfillWithSwap.selector,
poolKey,
SwapData({
tokenIn: address(WETH),
tokenOut: address(DAI),
requestedAmount: 10e18,
limitAmount: 0,
recipient: address(userEOA)
}),
swapData,
executionEnvironment,
1e18
solverBid
);

// Builds the SolverOperation
Expand All @@ -171,56 +175,52 @@ contract V4SwapIntentTest is BaseTest {
// Frontend signs the dAppOp payload
(sig.v, sig.r, sig.s) = vm.sign(governancePK, atlas.getDAppOperationPayload(dAppOp));
dAppOp.signature = abi.encodePacked(sig.r, sig.s, sig.v);
}

// function testAtlasV4SwapIntentWithUniswapSolver() public {
// // Swap 10 WETH to 100 DAI

// // Check user token balances before
// uint256 userWethBalanceBefore = WETH.balanceOf(userEOA);
// uint256 userDaiBalanceBefore = DAI.balanceOf(userEOA);
// Check user token balances before
uint256 userWethBalanceBefore = WETH.balanceOf(userEOA);
uint256 userDaiBalanceBefore = DAI.balanceOf(userEOA);

// vm.prank(userEOA); // Burn all users WETH except 10 so logs are more readable
// WETH.transfer(address(1), userWethBalanceBefore - swapIntent.amountUserSells);
// userWethBalanceBefore = WETH.balanceOf(userEOA);
vm.prank(userEOA); // Burn all users WETH except 10 so logs are more readable
WETH.transfer(address(1), userWethBalanceBefore - uint256(swapData.requestedAmount));
userWethBalanceBefore = WETH.balanceOf(userEOA);

// assertTrue(userWethBalanceBefore >= swapIntent.amountUserSells, "Not enough starting WETH");
assertTrue(userWethBalanceBefore >= uint256(swapData.requestedAmount), "Not enough starting WETH");

// console.log("\nBEFORE METACALL");
// console.log("User WETH balance", WETH.balanceOf(userEOA));
// console.log("User DAI balance", DAI.balanceOf(userEOA));
// console.log("Solver WETH balance", WETH.balanceOf(address(uniswapSolver)));
// console.log("Solver DAI balance", DAI.balanceOf(address(uniswapSolver)));
console.log("\nBEFORE METACALL");
console.log("User WETH balance", WETH.balanceOf(userEOA));
console.log("User DAI balance", DAI.balanceOf(userEOA));
console.log("Solver WETH balance", WETH.balanceOf(address(solver)));
console.log("Solver DAI balance", DAI.balanceOf(address(solver)));

// vm.startPrank(userEOA);
vm.startPrank(userEOA);

// assertFalse(simulator.simUserOperation(userOp), "metasimUserOperationcall tested true");
assertFalse(simulator.simUserOperation(userOp), "metasimUserOperationcall tested true");

// WETH.approve(address(atlas), swapIntent.amountUserSells);

// assertTrue(simulator.simUserOperation(userOp), "metasimUserOperationcall tested false");

// // Check solver does NOT have DAI - it must use Uniswap to get it during metacall
// assertEq(DAI.balanceOf(address(uniswapSolver)), 0, "Solver has DAI before metacall");

// // NOTE: Should metacall return something? Feels like a lot of data you might want to know about the tx
// atlas.metacall({
// userOp: userOp,
// solverOps: solverOps,
// dAppOp: dAppOp
// });
// vm.stopPrank();

// console.log("\nAFTER METACALL");
// console.log("User WETH balance", WETH.balanceOf(userEOA));
// console.log("User DAI balance", DAI.balanceOf(userEOA));
// console.log("Solver WETH balance", WETH.balanceOf(address(uniswapSolver)));
// console.log("Solver DAI balance", DAI.balanceOf(address(uniswapSolver)));

// // Check user token balances after
// assertEq(WETH.balanceOf(userEOA), userWethBalanceBefore - swapIntent.amountUserSells, "Did not spend enough WETH");
// assertEq(DAI.balanceOf(userEOA), userDaiBalanceBefore + swapIntent.amountUserBuys, "Did not receive enough DAI");
// }
WETH.approve(address(atlas), uint256(swapData.requestedAmount));

assertTrue(simulator.simUserOperation(userOp), "metasimUserOperationcall tested false");

// Check solver does NOT have DAI - it must use Uniswap to get it during metacall
assertEq(DAI.balanceOf(address(solver)), 0, "Solver has DAI before metacall");

// NOTE: Should metacall return something? Feels like a lot of data you might want to know about the tx
atlas.metacall({
userOp: userOp,
solverOps: solverOps,
dAppOp: dAppOp
});
vm.stopPrank();

console.log("\nAFTER METACALL");
console.log("User WETH balance", WETH.balanceOf(userEOA));
console.log("User DAI balance", DAI.balanceOf(userEOA));
console.log("Solver WETH balance", WETH.balanceOf(address(solver)));
console.log("Solver DAI balance", DAI.balanceOf(address(solver)));

// Check user token balances after
assertEq(WETH.balanceOf(userEOA), userWethBalanceBefore - uint256(swapData.requestedAmount), "Did not spend enough WETH");
assertEq(DAI.balanceOf(userEOA), userDaiBalanceBefore + solverBid, "Did not receive enough DAI");
}
}

struct SwapParams {
Expand Down

0 comments on commit b49ecd6

Please sign in to comment.