Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Here is a refactored version of the code. Repeated logic has been extracted into utility functions to reduce redundancy and improve readability.
This PR introduces a comprehensive test suite for the RoyaltyModule and related licensing and revenue-sharing mechanisms. The tests cover multiple scenarios, including attaching licenses, registering derivatives, paying royalties, transferring revenues to vaults, and validating claimable revenues.
Key Additions:
Setup and Initialization:
Fetching signers.
Registering license terms for royalty policies (LAP and LRP).
Establishing connections for licensing modules, royalty modules, and royalty policies for multiple users.
Test Scenarios:
License Attachment and Derivative Registration:
Attaching licenses (e.g., Commercial Remix License) to IPs.
Registering derivative IPs under existing parent IPs using various royalty policies.
Royalty Payments:
Executing royalty payments on behalf of another entity.
Verifying the transaction hashes for successful executions.
Revenue Transfers and Vault Integration:
Transferring revenues between derivatives and parent IPs to respective vaults.
Fetching vault addresses and ensuring accurate revenue flows.
Revenue Claims:
Checking claimable revenue tokens.
Executing revenue claims for specific IPs and validating the results.
Utility Methods for Reusability:
setupRoyaltyModules: Configures the royalty and licensing modules for all signers.
registerLicenseTerms: Handles license term registration for the provided policy.
attachLicense, registerDerivative, payRoyalty, transferToVault: Modular helper functions for repetitive operations.
Testing:
All tests are structured to ensure proper execution and include comprehensive logging for verification. Assertions are included to confirm expected outcomes, including:
Transaction hash validations.
Revenue calculations for multiple IPs based on predefined formulas.
Claimable revenue validations using BigInt assertions.
Technical Details:
Mock tokens (MockERC20) are used for payments.
License terms include parameters such as commercialRevShare, defaultMintingFee, and currency settings.
Royalty policies (LAP and LRP) dictate the revenue-sharing behavior between derivatives and parent IPs.
Impact:
These tests ensure the robustness and accuracy of the RoyaltyModule and its integration with licensing systems. They validate the end-to-end functionality, from license registration to revenue claims, enabling confidence in future deployments.
Related Issues:
(Link to related issues if applicable)
Checklist:
Code adheres to the project's style guidelines.
All new and existing tests pass locally.
Documentation has been updated for newly introduced features.