@@ -34,8 +34,8 @@ contract SignatureDropBenchmarkTest is BaseTest {
34
34
deployerSigner = signer;
35
35
sigdrop = SignatureDrop (getContract ("SignatureDrop " ));
36
36
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 );
39
39
40
40
typehashMintRequest = keccak256 (
41
41
"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 {
147
147
deployerSigner = signer;
148
148
sigdrop = SignatureDrop (getContract ("SignatureDrop " ));
149
149
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 );
152
152
153
153
typehashMintRequest = keccak256 (
154
154
"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 {
810
810
}
811
811
}
812
812
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
+
813
886
/**
814
887
* note: Testing revert condition; invalid signature.
815
888
*/
0 commit comments