mirror of
https://github.com/lens-protocol/core.git
synced 2026-01-10 06:38:05 -05:00
test: Publication tests added - PublicationType, action initialization and contentURI
Co-authored-by: Victor Naumik <vicnaum@gmail.com>
This commit is contained in:
@@ -2,10 +2,10 @@
|
||||
pragma solidity ^0.8.13;
|
||||
|
||||
import {Types} from 'contracts/libraries/constants/Types.sol';
|
||||
import {PublicationTest, ReferencePublicationTest} from 'test/publications/PublicationTest.t.sol';
|
||||
import {PublicationTest, ReferencePublicationTest, ActionablePublicationTest} from 'test/publications/PublicationTest.t.sol';
|
||||
import {MetaTxNegatives} from 'test/MetaTxNegatives.t.sol';
|
||||
|
||||
contract CommentTest is ReferencePublicationTest {
|
||||
contract CommentTest is ReferencePublicationTest, ActionablePublicationTest {
|
||||
Types.CommentParams commentParams;
|
||||
|
||||
function testCommentTest() public {
|
||||
@@ -32,6 +32,10 @@ contract CommentTest is ReferencePublicationTest {
|
||||
return Types.PublicationType.Comment;
|
||||
}
|
||||
|
||||
function _contentURI() internal virtual override returns (string memory contentURI) {
|
||||
return commentParams.contentURI;
|
||||
}
|
||||
|
||||
function _setReferrers(
|
||||
uint256[] memory referrerProfileIds,
|
||||
uint256[] memory referrerPubIds
|
||||
@@ -43,6 +47,14 @@ contract CommentTest is ReferencePublicationTest {
|
||||
function _setReferenceModuleData(bytes memory referenceModuleData) internal virtual override {
|
||||
commentParams.referenceModuleData = referenceModuleData;
|
||||
}
|
||||
|
||||
function _setActionModules(
|
||||
address[] memory actionModules,
|
||||
bytes[] memory actionModulesInitDatas
|
||||
) internal virtual override {
|
||||
commentParams.actionModules = actionModules;
|
||||
commentParams.actionModulesInitDatas = actionModulesInitDatas;
|
||||
}
|
||||
}
|
||||
|
||||
contract CommentMetaTxTest is CommentTest, MetaTxNegatives {
|
||||
|
||||
@@ -32,6 +32,10 @@ contract MirrorTest is ReferencePublicationTest {
|
||||
return Types.PublicationType.Mirror;
|
||||
}
|
||||
|
||||
function _contentURI() internal virtual override returns (string memory contentURI) {
|
||||
return hub.getContentURI(mirrorParams.pointedProfileId, mirrorParams.pointedPubId);
|
||||
}
|
||||
|
||||
function _setReferrers(
|
||||
uint256[] memory referrerProfileIds,
|
||||
uint256[] memory referrerPubIds
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
pragma solidity ^0.8.13;
|
||||
|
||||
import {Types} from 'contracts/libraries/constants/Types.sol';
|
||||
import {PublicationTest} from 'test/publications/PublicationTest.t.sol';
|
||||
import {PublicationTest, ActionablePublicationTest} from 'test/publications/PublicationTest.t.sol';
|
||||
import {MetaTxNegatives} from 'test/MetaTxNegatives.t.sol';
|
||||
|
||||
contract PostTest is PublicationTest {
|
||||
contract PostTest is ActionablePublicationTest {
|
||||
Types.PostParams postParams;
|
||||
|
||||
function testPostTest() public {
|
||||
@@ -26,6 +26,18 @@ contract PostTest is PublicationTest {
|
||||
function _pubType() internal virtual override returns (Types.PublicationType) {
|
||||
return Types.PublicationType.Post;
|
||||
}
|
||||
|
||||
function _contentURI() internal virtual override returns (string memory contentURI) {
|
||||
return postParams.contentURI;
|
||||
}
|
||||
|
||||
function _setActionModules(
|
||||
address[] memory actionModules,
|
||||
bytes[] memory actionModulesInitDatas
|
||||
) internal virtual override {
|
||||
postParams.actionModules = actionModules;
|
||||
postParams.actionModulesInitDatas = actionModulesInitDatas;
|
||||
}
|
||||
}
|
||||
|
||||
contract PostMetaTxTest is PostTest, MetaTxNegatives {
|
||||
|
||||
@@ -15,6 +15,8 @@ abstract contract PublicationTest is BaseTest {
|
||||
|
||||
function _pubType() internal virtual returns (Types.PublicationType);
|
||||
|
||||
function _contentURI() internal virtual returns (string memory contentURI);
|
||||
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
publisher = _loadAccountAs('PUBLISHER');
|
||||
@@ -93,6 +95,15 @@ abstract contract PublicationTest is BaseTest {
|
||||
Types.PublicationType expectedPubType = _pubType();
|
||||
assertTrue(assignedPubType == expectedPubType, 'Assigned publication type is different than the expected one');
|
||||
}
|
||||
|
||||
function testContentURI_IsCorrect() public {
|
||||
uint256 publicationIdAssigned = _publish({
|
||||
signerPk: publisher.ownerPk,
|
||||
publisherProfileId: publisher.profileId
|
||||
});
|
||||
|
||||
assertEq(hub.getContentURI(publisher.profileId, publicationIdAssigned), _contentURI());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,6 +111,34 @@ abstract contract PublicationTest is BaseTest {
|
||||
*/
|
||||
abstract contract ActionablePublicationTest is PublicationTest {
|
||||
function _setActionModules(address[] memory actionModules, bytes[] memory actionModulesInitDatas) internal virtual;
|
||||
|
||||
function testCannotInitializeActionModule_AmountOfModulesMismatchAmountOfModulesData() public {
|
||||
_setActionModules({
|
||||
actionModules: _toAddressArray(address(mockActionModule), address(mockActionModule)),
|
||||
actionModulesInitDatas: _toBytesArray(abi.encode(true))
|
||||
});
|
||||
vm.expectRevert(Errors.ArrayMismatch.selector);
|
||||
_publish({signerPk: publisher.ownerPk, publisherProfileId: publisher.profileId});
|
||||
}
|
||||
|
||||
function testCannot_InitializeActionModule_IfNotWhitelisted(address nonwhitelistedModule) public {
|
||||
vm.assume(hub.getActionModuleWhitelistData(nonwhitelistedModule).isWhitelisted == false);
|
||||
_setActionModules({
|
||||
actionModules: _toAddressArray(nonwhitelistedModule),
|
||||
actionModulesInitDatas: _toBytesArray('')
|
||||
});
|
||||
vm.expectRevert(Errors.NotWhitelisted.selector);
|
||||
_publish({signerPk: publisher.ownerPk, publisherProfileId: publisher.profileId});
|
||||
}
|
||||
|
||||
function testCannot_InitializeActionModule_IfDuplicated() public {
|
||||
_setActionModules({
|
||||
actionModules: _toAddressArray(address(mockActionModule), address(mockActionModule)),
|
||||
actionModulesInitDatas: _toBytesArray(abi.encode(true), abi.encode(true))
|
||||
});
|
||||
vm.expectRevert(Errors.AlreadyEnabled.selector);
|
||||
_publish({signerPk: publisher.ownerPk, publisherProfileId: publisher.profileId});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
106
test/publications/PublicationType.t.sol
Normal file
106
test/publications/PublicationType.t.sol
Normal file
@@ -0,0 +1,106 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.13;
|
||||
|
||||
import 'test/mocks/MockModule.sol';
|
||||
import 'test/base/BaseTest.t.sol';
|
||||
|
||||
contract PublicationTypeTest is BaseTest {
|
||||
TestAccount publisher;
|
||||
|
||||
function setUp() public virtual override {
|
||||
super.setUp();
|
||||
publisher = _loadAccountAs('PUBLISHER');
|
||||
}
|
||||
|
||||
function testGetPublicationType_Post() public {
|
||||
Types.PostParams memory postParams = _getDefaultPostParams();
|
||||
postParams.profileId = publisher.profileId;
|
||||
vm.prank(publisher.owner);
|
||||
uint256 pubId = hub.post(postParams);
|
||||
|
||||
assertTrue(hub.getPublicationType(publisher.profileId, pubId) == Types.PublicationType.Post);
|
||||
}
|
||||
|
||||
function testGetPublicationType_Comment() public {
|
||||
Types.CommentParams memory commentParams = _getDefaultCommentParams();
|
||||
commentParams.profileId = publisher.profileId;
|
||||
vm.prank(publisher.owner);
|
||||
uint256 pubId = hub.comment(commentParams);
|
||||
|
||||
assertTrue(hub.getPublicationType(publisher.profileId, pubId) == Types.PublicationType.Comment);
|
||||
}
|
||||
|
||||
function testGetPublicationType_Mirror() public {
|
||||
Types.MirrorParams memory mirrorParams = _getDefaultMirrorParams();
|
||||
mirrorParams.profileId = publisher.profileId;
|
||||
vm.prank(publisher.owner);
|
||||
uint256 pubId = hub.mirror(mirrorParams);
|
||||
|
||||
assertTrue(hub.getPublicationType(publisher.profileId, pubId) == Types.PublicationType.Mirror);
|
||||
}
|
||||
|
||||
function testGetPublicationType_quote() public {
|
||||
Types.QuoteParams memory quoteParams = _getDefaultQuoteParams();
|
||||
quoteParams.profileId = publisher.profileId;
|
||||
vm.prank(publisher.owner);
|
||||
uint256 pubId = hub.quote(quoteParams);
|
||||
|
||||
assertTrue(hub.getPublicationType(publisher.profileId, pubId) == Types.PublicationType.Quote);
|
||||
}
|
||||
|
||||
function testGetPublicationType_LegacyV1Pub_Post(address referenceModule, address collectModule) public {
|
||||
vm.assume(referenceModule != address(0));
|
||||
vm.assume(collectModule != address(0));
|
||||
|
||||
Types.PostParams memory postParams = _getDefaultPostParams();
|
||||
postParams.profileId = publisher.profileId;
|
||||
vm.prank(publisher.owner);
|
||||
uint256 pubId = hub.post(postParams);
|
||||
|
||||
_toLegacyV1Pub({
|
||||
profileId: publisher.profileId,
|
||||
pubId: pubId,
|
||||
referenceModule: referenceModule,
|
||||
collectModule: collectModule
|
||||
});
|
||||
|
||||
assertTrue(hub.getPublicationType(publisher.profileId, pubId) == Types.PublicationType.Post);
|
||||
}
|
||||
|
||||
function testGetPublicationType_LegacyV1Pub_Comment(address referenceModule, address collectModule) public {
|
||||
vm.assume(referenceModule != address(0));
|
||||
vm.assume(collectModule != address(0));
|
||||
|
||||
Types.CommentParams memory commentParams = _getDefaultCommentParams();
|
||||
commentParams.profileId = publisher.profileId;
|
||||
vm.prank(publisher.owner);
|
||||
uint256 pubId = hub.comment(commentParams);
|
||||
|
||||
_toLegacyV1Pub({
|
||||
profileId: publisher.profileId,
|
||||
pubId: pubId,
|
||||
referenceModule: referenceModule,
|
||||
collectModule: collectModule
|
||||
});
|
||||
|
||||
assertTrue(hub.getPublicationType(publisher.profileId, pubId) == Types.PublicationType.Comment);
|
||||
}
|
||||
|
||||
function testGetPublicationType_LegacyV1Pub_Mirror(address referenceModule) public {
|
||||
vm.assume(referenceModule != address(0));
|
||||
|
||||
Types.MirrorParams memory mirrorParams = _getDefaultMirrorParams();
|
||||
mirrorParams.profileId = publisher.profileId;
|
||||
vm.prank(publisher.owner);
|
||||
uint256 pubId = hub.mirror(mirrorParams);
|
||||
|
||||
_toLegacyV1Pub({
|
||||
profileId: publisher.profileId,
|
||||
pubId: pubId,
|
||||
referenceModule: referenceModule,
|
||||
collectModule: address(0)
|
||||
});
|
||||
|
||||
assertTrue(hub.getPublicationType(publisher.profileId, pubId) == Types.PublicationType.Mirror);
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,10 @@
|
||||
pragma solidity ^0.8.13;
|
||||
|
||||
import {Types} from 'contracts/libraries/constants/Types.sol';
|
||||
import {PublicationTest, ReferencePublicationTest} from 'test/publications/PublicationTest.t.sol';
|
||||
import {PublicationTest, ReferencePublicationTest, ActionablePublicationTest} from 'test/publications/PublicationTest.t.sol';
|
||||
import {MetaTxNegatives} from 'test/MetaTxNegatives.t.sol';
|
||||
|
||||
contract QuoteTest is ReferencePublicationTest {
|
||||
contract QuoteTest is ReferencePublicationTest, ActionablePublicationTest {
|
||||
Types.QuoteParams quoteParams;
|
||||
|
||||
function testQuoteTest() public {
|
||||
@@ -32,6 +32,10 @@ contract QuoteTest is ReferencePublicationTest {
|
||||
return Types.PublicationType.Quote;
|
||||
}
|
||||
|
||||
function _contentURI() internal virtual override returns (string memory contentURI) {
|
||||
return quoteParams.contentURI;
|
||||
}
|
||||
|
||||
function _setReferrers(
|
||||
uint256[] memory referrerProfileIds,
|
||||
uint256[] memory referrerPubIds
|
||||
@@ -43,6 +47,14 @@ contract QuoteTest is ReferencePublicationTest {
|
||||
function _setReferenceModuleData(bytes memory referenceModuleData) internal virtual override {
|
||||
quoteParams.referenceModuleData = referenceModuleData;
|
||||
}
|
||||
|
||||
function _setActionModules(
|
||||
address[] memory actionModules,
|
||||
bytes[] memory actionModulesInitDatas
|
||||
) internal virtual override {
|
||||
quoteParams.actionModules = actionModules;
|
||||
quoteParams.actionModulesInitDatas = actionModulesInitDatas;
|
||||
}
|
||||
}
|
||||
|
||||
contract QuoteMetaTxTest is QuoteTest, MetaTxNegatives {
|
||||
|
||||
Reference in New Issue
Block a user