test: Publication tests added - PublicationType, action initialization and contentURI

Co-authored-by: Victor Naumik <vicnaum@gmail.com>
This commit is contained in:
donosonaumczuk
2023-06-19 16:02:49 +01:00
parent cbcb6d27ad
commit 6e2fd0659d
6 changed files with 191 additions and 6 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -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 {

View File

@@ -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});
}
}
/**

View 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);
}
}

View File

@@ -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 {