@@ -34,8 +34,8 @@ contract SignatureDropBenchmarkTest is BaseTest {
3434 deployerSigner = signer;
3535 sigdrop = SignatureDrop (getContract ("SignatureDrop " ));
3636
37- erc20.mint (deployerSigner, 1_000_000 );
38- vm.deal (deployerSigner, 1_000 );
37+ erc20.mint (deployerSigner, 1_000 ether );
38+ vm.deal (deployerSigner, 1_000 ether );
3939
4040 typehashMintRequest = keccak256 (
4141 "MintRequest(address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 quantity,uint256 pricePerToken,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) "
@@ -147,8 +147,8 @@ contract SignatureDropTest is BaseTest {
147147 deployerSigner = signer;
148148 sigdrop = SignatureDrop (getContract ("SignatureDrop " ));
149149
150- erc20.mint (deployerSigner, 1_000_000 );
151- vm.deal (deployerSigner, 1_000 );
150+ erc20.mint (deployerSigner, 1_000 ether );
151+ vm.deal (deployerSigner, 1_000 ether );
152152
153153 typehashMintRequest = keccak256 (
154154 "MintRequest(address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 quantity,uint256 pricePerToken,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) "
@@ -810,6 +810,79 @@ contract SignatureDropTest is BaseTest {
810810 }
811811 }
812812
813+ /*
814+ * note: Testing state changes; minting with signature, for a given price and currency.
815+ */
816+ function test_state_mintWithSignature_UpdateRoyaltyAndSaleInfo () public {
817+ vm.prank (deployerSigner);
818+ sigdrop.lazyMint (100 , "ipfs:// " , emptyEncodedBytes);
819+ uint256 id = 0 ;
820+ SignatureDrop.MintRequest memory mintrequest;
821+
822+ mintrequest.to = address (0 );
823+ mintrequest.royaltyRecipient = address (0x567 );
824+ mintrequest.royaltyBps = 100 ;
825+ mintrequest.primarySaleRecipient = address (0x567 );
826+ mintrequest.uri = "ipfs:// " ;
827+ mintrequest.quantity = 1 ;
828+ mintrequest.pricePerToken = 1 ether ;
829+ mintrequest.currency = address (erc20);
830+ mintrequest.validityStartTimestamp = 1000 ;
831+ mintrequest.validityEndTimestamp = 2000 ;
832+ mintrequest.uid = bytes32 (id);
833+
834+ // Test with ERC20 currency
835+ {
836+ erc20.mint (address (0x345 ), 1 ether);
837+ uint256 totalSupplyBefore = sigdrop.totalSupply ();
838+
839+ bytes memory signature = signMintRequest (mintrequest, privateKey);
840+ vm.startPrank (address (0x345 ));
841+ vm.warp (1000 );
842+ erc20.approve (address (sigdrop), 1 ether);
843+ vm.expectEmit (true , true , true , true );
844+ emit TokensMintedWithSignature (deployerSigner, address (0x345 ), 0 , mintrequest);
845+ sigdrop.mintWithSignature (mintrequest, signature);
846+ vm.stopPrank ();
847+
848+ assertEq (totalSupplyBefore + mintrequest.quantity, sigdrop.totalSupply ());
849+
850+ (address _royaltyRecipient , uint16 _royaltyBps ) = sigdrop.getRoyaltyInfoForToken (0 );
851+ assertEq (_royaltyRecipient, address (0x567 ));
852+ assertEq (_royaltyBps, 100 );
853+
854+ uint256 totalPrice = 1 * 1 ether ;
855+ uint256 platformFees = (totalPrice * platformFeeBps) / MAX_BPS;
856+ assertEq (erc20.balanceOf (address (0x567 )), totalPrice - platformFees);
857+ }
858+
859+ // Test with native token currency
860+ {
861+ vm.deal (address (0x345 ), 1 ether);
862+ uint256 totalSupplyBefore = sigdrop.totalSupply ();
863+
864+ mintrequest.currency = address (NATIVE_TOKEN);
865+ id = 1 ;
866+ mintrequest.uid = bytes32 (id);
867+
868+ bytes memory signature = signMintRequest (mintrequest, privateKey);
869+ vm.startPrank (address (0x345 ));
870+ vm.warp (1000 );
871+ sigdrop.mintWithSignature { value: mintrequest.pricePerToken }(mintrequest, signature);
872+ vm.stopPrank ();
873+
874+ assertEq (totalSupplyBefore + mintrequest.quantity, sigdrop.totalSupply ());
875+
876+ (address _royaltyRecipient , uint16 _royaltyBps ) = sigdrop.getRoyaltyInfoForToken (0 );
877+ assertEq (_royaltyRecipient, address (0x567 ));
878+ assertEq (_royaltyBps, 100 );
879+
880+ uint256 totalPrice = 1 * 1 ether ;
881+ uint256 platformFees = (totalPrice * platformFeeBps) / MAX_BPS;
882+ assertEq (address (0x567 ).balance, totalPrice - platformFees);
883+ }
884+ }
885+
813886 /**
814887 * note: Testing revert condition; invalid signature.
815888 */
0 commit comments