Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(test): migrate unit tests to the new motsu layout #423

Draft
wants to merge 121 commits into
base: main
Choose a base branch
from

Conversation

qalisander
Copy link
Member

@qalisander qalisander commented Nov 28, 2024

This pr contains migration of unit test to the new layout of motsu unit tests, that will be introduced in OpenZeppelin/stylus-test-helpers#8 and OpenZeppelin/stylus-test-helpers#12

Resolves #470

PR Checklist

  • Tests
  • Documentation
  • Changelog

Copy link

netlify bot commented Nov 28, 2024

Deploy Preview for contracts-stylus canceled.

Name Link
🔨 Latest commit ee7dff6
🔍 Latest deploy log https://app.netlify.com/sites/contracts-stylus/deploys/67a3acc42b9e560008115b75

Comment on lines 6 to 17
#[cfg(test)]
pub fn msg_sender() -> Address {
motsu::prelude::Context::current()
.get_msg_sender()
.expect("msg_sender should be set")
}

/// Returns the address of the message sender.
#[cfg(not(test))]
pub fn msg_sender() -> Address {
msg::sender()
}
Copy link
Member Author

@qalisander qalisander Nov 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is an example how msg_sender mock can be declared. This design is not perfect since motsu users should implement this mock for their own library manually or through macro.
Calling stylus sdk api msg::sender() won't work inside a test without mock due to this limitation.

Comment on lines 2547 to 2562
#[motsu::test]
fn on_erc721_received(
erc721: Contract<Erc721>,
receiver: Contract<Erc721ReceiverMock>,
) {
let alice = Account::random();
let token_id = random_token_id();
erc721
.sender(alice)
._safe_mint(receiver.address(), token_id, vec![0, 1, 2, 3].into())
.unwrap();

let received_token_id = receiver.sender(alice).received_token_id();

assert_eq!(received_token_id, token_id);
}
Copy link
Member Author

@qalisander qalisander Nov 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall the test case for Erc721Receiver can look like this

@qalisander qalisander marked this pull request as ready for review November 28, 2024 05:59
@bidzyyys bidzyyys linked an issue Feb 5, 2025 that may be closed by this pull request
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature]: Un-ignore and Fix Erc20FlashMint Unit Tests
3 participants