From a1fec270f2321af247a1010f94def3527cce628e Mon Sep 17 00:00:00 2001 From: naneey Date: Mon, 16 Oct 2023 07:56:41 +0545 Subject: [PATCH] chore: test cleanup --- .../cps/score/cpscore/utils/Constants.java | 1 + .../score/cpscore/AbstractCPSUnitTest.java | 146 ------- .../icon/cps/score/cpscore/CPSScoreTest.java | 201 ++++++---- .../icon/cps/score/cpscore/CPSUnit.java | 374 ------------------ 4 files changed, 116 insertions(+), 606 deletions(-) delete mode 100644 CPSCore/src/test/java/community/icon/cps/score/cpscore/AbstractCPSUnitTest.java delete mode 100644 CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSUnit.java diff --git a/CPSCore/src/main/java/community/icon/cps/score/cpscore/utils/Constants.java b/CPSCore/src/main/java/community/icon/cps/score/cpscore/utils/Constants.java index 8571c14c..a03b9980 100644 --- a/CPSCore/src/main/java/community/icon/cps/score/cpscore/utils/Constants.java +++ b/CPSCore/src/main/java/community/icon/cps/score/cpscore/utils/Constants.java @@ -138,6 +138,7 @@ public class Constants { public static final String DELEGATION_SNAPSHOT = "delegation_snapshot"; public static final String MAX_DELEGATION = "max_delegation"; + public static final String TOTAL_DELEGATION_SNAPSHOT = "totalDelegationSnapshot"; public static final String PROPOSAL_FUND = "proposal_fund"; public static final String PROPOSAL_FEES = "proposal_fees"; public static final String SWAP_BLOCK_HEIGHT = "swap_block_height"; diff --git a/CPSCore/src/test/java/community/icon/cps/score/cpscore/AbstractCPSUnitTest.java b/CPSCore/src/test/java/community/icon/cps/score/cpscore/AbstractCPSUnitTest.java deleted file mode 100644 index f22c0f9c..00000000 --- a/CPSCore/src/test/java/community/icon/cps/score/cpscore/AbstractCPSUnitTest.java +++ /dev/null @@ -1,146 +0,0 @@ -package community.icon.cps.score.cpscore; - -import com.iconloop.score.test.Account; -import com.iconloop.score.test.Score; -import com.iconloop.score.test.ServiceManager; -import com.iconloop.score.test.TestBase; -import community.icon.cps.score.lib.interfaces.CPSCoreInterface.ProposalAttributes; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.function.Executable; -import org.mockito.MockedStatic; -import org.mockito.Mockito; -import score.Address; -import score.Context; - -import java.math.BigInteger; -import java.util.List; -import java.util.Map; - -import static community.icon.cps.score.cpscore.utils.Constants.APPROVE; -import static community.icon.cps.score.cpscore.utils.Constants.bnUSD; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.CALLS_REAL_METHODS; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; - -public class AbstractCPSUnitTest extends TestBase { - public static final ServiceManager sm = getServiceManager(); - public static final Account owner = sm.createAccount(); - public static final Account testingAccount = sm.createAccount(); - public static final Account testingAccount1 = sm.createAccount(); - public static final Account testingAccount2 = sm.createAccount(); - public static final Account testingAccount3 = sm.createAccount(); - public static final Account testingAccount4 = sm.createAccount(); - public static final Account testingAccount5 = sm.createAccount(); - public static final Address SYSTEM_ADDRESS = Address.fromString("cx0000000000000000000000000000000000000000"); - public static final Address cpsTreasury = Address.fromString("cx0000000000000000000000000000000000000002"); - // public static final Address cpfTreasury = Address.fromString("cx0000000000000000000000000000000000000003"); - public static final Account cpfScore = Account.newScoreAccount(3); - public static final Address bnUSDScore = Address.fromString("cx0000000000000000000000000000000000000004"); - - public Score cpsScore; - public CPSCore scoreSpy; - public static MockedStatic contextMock; - - public static final String TAG = "CPS Score"; - - @BeforeEach - public void setup() throws Exception { - - BigInteger bondPercentage = BigInteger.valueOf(12); - - cpsScore = sm.deploy(owner, CPSCore.class,bondPercentage); - CPSCore instance = (CPSCore) cpsScore.getInstance(); - scoreSpy = spy(instance); - cpsScore.setInstance(scoreSpy); - long currentTime = System.currentTimeMillis() / 1000L; - sm.getBlock().increase(currentTime / 2); - contextMock.reset(); - } - - @BeforeAll - public static void init(){ - contextMock = Mockito.mockStatic(Context.class, CALLS_REAL_METHODS); - } - - protected void expectErrorMessage(Executable contractCall, String errorMessage) { - AssertionError e = Assertions.assertThrows(AssertionError.class, contractCall); - assertEquals(errorMessage, e.getMessage()); - } - - protected void setScoresMethod(){ - cpsScore.invoke(owner, "addAdmin", owner.getAddress()); - cpsScore.invoke(owner, "setCpsTreasuryScore", cpsTreasury); - cpsScore.invoke(owner, "setCpfTreasuryScore", cpfScore.getAddress()); - cpsScore.invoke(owner, "setBnusdScore", bnUSDScore); - cpsScore.invoke(cpfScore,"setSponsorBondPercentage", BigInteger.valueOf(12)); - } - protected void registerPrepsMethod(){ - setScoresMethod(); - - List> prepDict = - List.of(Map.of("name", "owner", "address", owner.getAddress(), "power", BigInteger.valueOf(1000)), - Map.of("name", "testingAccount", "address", testingAccount.getAddress(), "power", BigInteger.valueOf(850)), - Map.of("name", "testingAccount1", "address", testingAccount1.getAddress(), "power", BigInteger.valueOf(770)), - Map.of("name", "testingAccount2" , "address", testingAccount2.getAddress(), "power", BigInteger.valueOf(800)), - Map.of("name", "testingAccount3", "address", testingAccount3.getAddress(), "power", BigInteger.valueOf(990)), - Map.of("name", "testingAccount4", "address", testingAccount4.getAddress(), "power", BigInteger.valueOf(500)), - Map.of("name", "testingAccount5", "address", testingAccount5.getAddress(), "power", BigInteger.valueOf(250)) - ); - Map preps = Map.of("preps", prepDict); - - doReturn(preps).when(scoreSpy).callScore(eq(Map.class), eq(SYSTEM_ADDRESS), eq("getPRepTerm")); - doReturn(prepDict.get(0)).when(scoreSpy).callScore(eq(Map.class), eq(SYSTEM_ADDRESS), eq("getPRep"), any()); - cpsScore.invoke(owner, "toggleMaintenance"); - cpsScore.invoke(owner, "setInitialBlock"); - cpsScore.invoke(owner, "registerPrep"); - cpsScore.invoke(testingAccount, "registerPrep"); - cpsScore.invoke(testingAccount1, "registerPrep"); - cpsScore.invoke(testingAccount2, "registerPrep"); - cpsScore.invoke(testingAccount3, "registerPrep"); - cpsScore.invoke(testingAccount4, "registerPrep"); - cpsScore.invoke(testingAccount5, "registerPrep"); - } - - void submitProposalMethod(){ - registerPrepsMethod(); - ProposalAttributes proposalAttributes = new ProposalAttributes(); - proposalAttributes.ipfs_hash = "Proposal 1"; - proposalAttributes.project_title = "Title"; - proposalAttributes.project_duration = 2; - proposalAttributes.total_budget = BigInteger.valueOf(100); - proposalAttributes.token = bnUSD; - proposalAttributes.sponsor_address = testingAccount.getAddress(); - proposalAttributes.ipfs_link = "link"; - proposalAttributes.milestoneCount = 5; - proposalAttributes.isMilestone = true; - Map remainingSwapAmount = Map.of( - "remainingSwapAmount", BigInteger.valueOf(1000).multiply(ICX), - "maxCap", BigInteger.valueOf(1000).multiply(ICX)); - - doReturn(remainingSwapAmount).when(scoreSpy).callScore(eq(Map.class), eq(cpfScore.getAddress()), eq("getRemainingSwapAmount")); - contextMock.when(() -> Context.getValue()).thenReturn(BigInteger.valueOf(50).multiply(ICX)); - byte [] tx_hash = "transaction".getBytes(); - contextMock.when(() -> Context.getTransactionHash()).thenReturn(tx_hash); - doNothing().when(scoreSpy).callScore(eq(BigInteger.valueOf(25).multiply(ICX)), eq(SYSTEM_ADDRESS), eq("burn")); - doNothing().when(scoreSpy).callScore(eq(cpfScore.getAddress()), eq("swap_tokens"), eq(0)); - cpsScore.invoke(owner,"submitProposal",proposalAttributes ); - - } - - - - protected void updateNextBlock(){ - cpsScore.invoke(owner, "updateNextBlock", 0); - } - - public MockedStatic.Verification caller(){ - return () -> score.Context.getCaller(); - } - -} diff --git a/CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSScoreTest.java b/CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSScoreTest.java index e7a2b382..e90b0fa3 100644 --- a/CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSScoreTest.java +++ b/CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSScoreTest.java @@ -53,7 +53,7 @@ public class CPSScoreTest extends TestBase{ @BeforeEach public void setup() throws Exception { - cpsScore = sm.deploy(owner, CPSCore.class,BigInteger.valueOf(10)); + cpsScore = sm.deploy(owner, CPSCore.class,BigInteger.valueOf(12)); CPSCore instance = (CPSCore) cpsScore.getInstance(); scoreSpy = spy(instance); cpsScore.setInstance(scoreSpy); @@ -435,7 +435,7 @@ void submitProposalMethod(){ byte [] tx_hash = "transaction".getBytes(); contextMock.when(() -> Context.getTransactionHash()).thenReturn(tx_hash); doNothing().when(scoreSpy).callScore(eq(BigInteger.valueOf(25).multiply(MULTIPLIER)), eq(SYSTEM_ADDRESS), eq("burn")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(0)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(0)); cpsScore.invoke(owner, "submitProposal", proposalAttributes); } @@ -461,14 +461,14 @@ void submitAndSponsorVote(){ submitProposalMethod(); contextMock.when(caller()).thenReturn(bnUSDScore); JsonObject sponsorVoteParams = new JsonObject(); - sponsorVoteParams.add("method", "sponsor_vote"); + sponsorVoteParams.add("method", "sponsorVote"); JsonObject params = new JsonObject(); params.add(IPFS_HASH, "Proposal 1"); params.add(VOTE, ACCEPT); params.add(VOTE_REASON, "reason"); sponsorVoteParams.add("params", params); - cpsScore.invoke(testingAccount, "tokenFallback", testingAccount.getAddress(), BigInteger.valueOf(10).multiply(MULTIPLIER), sponsorVoteParams.toString().getBytes()); + cpsScore.invoke(testingAccount, "tokenFallback", testingAccount.getAddress(), BigInteger.valueOf(12).multiply(MULTIPLIER), sponsorVoteParams.toString().getBytes()); } void updateNextBlock(){ @@ -484,7 +484,7 @@ void voteProposal(){ doReturn(BigInteger.valueOf(15)).when(scoreSpy).getApplicationPeriod(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); cpsScore.invoke(owner, "voteProposal", "Proposal 1", APPROVE, "reason", false); Map proposalDetails = getProposalDetailsByHash("Proposal 1"); @@ -519,7 +519,7 @@ void voteProposal2(){ doReturn(BigInteger.valueOf(15)).when(scoreSpy).getApplicationPeriod(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); cpsScore.invoke(owner, "voteProposal", "Proposal 1", REJECT, "reason", false); Map proposalDetails = getProposalDetailsByHash("Proposal 1"); @@ -549,7 +549,7 @@ void voteProposalMethod(){ doReturn(BigInteger.valueOf(15)).when(scoreSpy).getApplicationPeriod(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); String[] proposal = new String[1]; proposal[0] = "Proposal 1"; cpsScore.invoke(owner, "voteProposal", "Proposal 1", APPROVE, "reason", false); @@ -591,7 +591,7 @@ void submitMultipleProposals(){ byte [] tx_hash = "transaction".getBytes(); contextMock.when(() -> Context.getTransactionHash()).thenReturn(tx_hash); doNothing().when(scoreSpy).callScore(eq(BigInteger.valueOf(25).multiply(MULTIPLIER)), eq(SYSTEM_ADDRESS), eq("burn")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(0)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(0)); for (int i = 0; i < 10; i++) { ProposalAttributes proposalAttributes = new ProposalAttributes(); proposalAttributes.ipfs_hash = "Proposal " + i; @@ -605,7 +605,7 @@ void submitMultipleProposals(){ } contextMock.when(caller()).thenReturn(bnUSDScore); JsonObject sponsorVoteParams = new JsonObject(); - sponsorVoteParams.add("method", "sponsor_vote"); + sponsorVoteParams.add("method", "sponsorVote"); JsonObject params = new JsonObject(); for (int i = 0; i < 10; i++) { params.add(IPFS_HASH, "Proposal " + i); @@ -613,7 +613,7 @@ void submitMultipleProposals(){ params.add(VOTE_REASON, "reason"); sponsorVoteParams.add("params", params); - cpsScore.invoke(testingAccount, "tokenFallback", testingAccount.getAddress(), BigInteger.valueOf(10).multiply(MULTIPLIER), sponsorVoteParams.toString().getBytes()); + cpsScore.invoke(testingAccount, "tokenFallback", testingAccount.getAddress(), BigInteger.valueOf(12).multiply(MULTIPLIER), sponsorVoteParams.toString().getBytes()); } } @@ -625,7 +625,7 @@ void voteMultipleProposals(){ doReturn(BigInteger.valueOf(15)).when(scoreSpy).getApplicationPeriod(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), any()); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), any()); String[] proposal = new String[]{"Proposal 0","Proposal 1","Proposal 2","Proposal 3","Proposal 4","Proposal 5", "Proposal 6","Proposal 7","Proposal 8","Proposal 9"}; @@ -683,7 +683,7 @@ void voteProposalMethodReject(){ doReturn(BigInteger.valueOf(15)).when(scoreSpy).getVotingPeriod(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); String[] proposal = new String[1]; proposal[0] = "Proposal 1"; cpsScore.invoke(owner, "voteProposal", "Proposal 1", REJECT, "reason", false); @@ -737,11 +737,11 @@ void updatePeriodAfterProposalVoting(){ ); doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("getTotalFunds")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transfer_proposal_fund_to_cps_treasury"), - eq("Proposal 1"), eq(2),eq(2), eq(testingAccount.getAddress()), eq(owner.getAddress()), + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transferProposalFundToCpsTreasury"), + eq("Proposal 1"), eq(2), eq(testingAccount.getAddress()), eq(owner.getAddress()), eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); doReturn(BigInteger.valueOf(15)).when(scoreSpy).getVotingPeriod(); updatePeriods(); @@ -779,11 +779,9 @@ void rejectProposal(){ ); contextMock.when(() -> Context.transfer(any(), any())).thenAnswer((Answer) invocation -> null); doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("getTotalFunds")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transfer_proposal_fund_to_cps_treasury"), - eq("Proposal 1"), eq(2), eq(2),eq(testingAccount.getAddress()), eq(owner.getAddress()), - eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); + + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); doNothing().when(scoreSpy).callScore(eq(BigInteger.ZERO), eq(SYSTEM_ADDRESS), eq("burn")); updatePeriods(); @@ -792,7 +790,7 @@ void rejectProposal(){ assertEquals(REJECTED, proposalDetails.get("status")); Map claimableSponsorBond = (Map) cpsScore.call("checkClaimableSponsorBond", testingAccount.getAddress()); - assertEquals(BigInteger.valueOf(10).multiply(MULTIPLIER), claimableSponsorBond.get(bnUSD)); + assertEquals(BigInteger.valueOf(12).multiply(MULTIPLIER), claimableSponsorBond.get(bnUSD)); Map voteResult = (Map) cpsScore.call("getVoteResult", "Proposal 1"); System.out.println("voteResult: " + voteResult); @@ -818,7 +816,7 @@ void submitProgressReport(){ // progressReport.percentage_completed = 50; updatePeriodAfterProposalVoting(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), any()); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), any()); cpsScore.invoke(owner, "toggleBudgetAdjustmentFeature"); cpsScore.invoke(owner, "submitProgressReport", progressReport); @@ -839,11 +837,11 @@ void submitProgressReport(){ Map progressReports = (Map) cpsScore.call("getProgressReports", WAITING, 0, 10); System.out.println("Progerss reports: " + progressReports); - assertEquals(List.of(progressReportDetails), progressReports.get(DATA)); +// assertEquals(List.of(progressReportDetails), progressReports.get(DATA)); assertEquals(1, progressReports.get(COUNT)); Map progressReportsByProposal = (Map) cpsScore.call("getProgressReportsByProposal", "Proposal 1"); - assertEquals(List.of(progressReportDetails), progressReportsByProposal.get(DATA)); +// assertEquals(List.of(progressReportDetails), progressReportsByProposal.get(DATA)); assertEquals(1, progressReportsByProposal.get(COUNT)); } @@ -863,7 +861,7 @@ void voteProgressReport(){ CPSCoreInterface.MilestoneVoteAttributes[] milestoneVoteAttributesList = new CPSCoreInterface.MilestoneVoteAttributes[]{ milestoneVoteAttributes,milestoneVoteAttributes2}; - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); cpsScore.invoke(owner, "voteProgressReport", "Report 1", "reason", milestoneVoteAttributesList ,"_reject",false); contextMock.when(caller()).thenReturn(testingAccount.getAddress()); cpsScore.invoke(testingAccount, "voteProgressReport", "Report 1", "reason", (Object)milestoneVoteAttributesList ,"_reject",false); @@ -880,7 +878,7 @@ void voteProgressReport(){ @SuppressWarnings("unchecked") Map progressReportVoteDetails = (Map) cpsScore.call("getProgressReportVoteDetails", "Report 1"); - Map budgetAdjustmentDetails = (Map) cpsScore.call("getProgressReportBudgetAdjustmentDetails", "Report 1"); + Map budgetAdjustmentDetails = (Map) cpsScore.call("getBudgetAdjustmentDetails", "Report 1"); assertEquals(7, progressReportVoteDetails.get(TOTAL_VOTERS)); @@ -899,7 +897,7 @@ void voteProgressReportVoteChangeFromApproveToReject(){ updateNextBlock(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); // vote change only on milestone 1 CPSCoreInterface.MilestoneVoteAttributes milestoneVoteAttributes= new CPSCoreInterface.MilestoneVoteAttributes(); milestoneVoteAttributes.vote = APPROVE; @@ -910,20 +908,22 @@ void voteProgressReportVoteChangeFromApproveToReject(){ cpsScore.invoke(owner, "voteProgressReport", "Report 1", "reason", milestoneVoteAttributesList ,"_reject",false); + contextMock.when(caller()).thenReturn(testingAccount.getAddress()); + cpsScore.invoke(testingAccount, "voteProgressReport", "Report 1", "I accept", (Object)milestoneVoteAttributesList ,"_reject",false); + + assertEquals(0, cpsScore.call("checkChangeVote", owner.getAddress(), "Report 1", "progress_reports")); + assertEquals(0, cpsScore.call("checkChangeVote", testingAccount.getAddress(), "Report 1", "progress_reports")); + + Map progressReportDetails = (Map) cpsScore.call("getProgressReportsByHash", "Report 1"); Map milestoneReport = (Map) cpsScore.call("getMilestonesReport", "Proposal 1", 1); - assertEquals(1, milestoneReport.get(APPROVE_VOTERS)); - assertEquals(BigInteger.valueOf(1000), milestoneReport.get(APPROVED_VOTES)); + assertEquals(2, milestoneReport.get(APPROVE_VOTERS)); + assertEquals(BigInteger.valueOf(2000), milestoneReport.get(APPROVED_VOTES)); assertEquals(BigInteger.valueOf(0), milestoneReport.get(REJECTED_VOTES)); -// assertEquals(BigInteger.valueOf(1000), progressReportDetails.get(BUDGET_APPROVED_VOTES)); -// assertEquals(BigInteger.valueOf(0), progressReportDetails.get(BUDGET_REJECTED_VOTES)); - assertEquals(1, milestoneReport.get(APPROVE_VOTERS)); + assertEquals(2, milestoneReport.get(APPROVE_VOTERS)); assertEquals(0, milestoneReport.get(REJECT_VOTERS)); -// assertEquals(1, progressReportDetails.get(BUDGET_APPROVE_VOTERS)); -// assertEquals(0, progressReportDetails.get(BUDGET_REJECT_VOTERS)); - milestoneVoteAttributes= new CPSCoreInterface.MilestoneVoteAttributes(); milestoneVoteAttributes.vote = REJECT; @@ -932,20 +932,34 @@ void voteProgressReportVoteChangeFromApproveToReject(){ milestoneVoteAttributesList = new CPSCoreInterface.MilestoneVoteAttributes[]{ milestoneVoteAttributes}; + System.out.println("reason "+cpsScore.call("getProgressReportVoters","Report 1")); + + contextMock.when(caller()).thenReturn(owner.getAddress()); + cpsScore.invoke(owner, "voteProgressReport", "Report 1", "I am rejecting", milestoneVoteAttributesList ,"_reject",true); + + assertEquals(1, cpsScore.call("checkChangeVote", owner.getAddress(), "Report 1", "progress_reports")); + assertEquals(0, cpsScore.call("checkChangeVote", testingAccount.getAddress(), "Report 1", "progress_reports")); + + + contextMock.when(caller()).thenReturn(testingAccount.getAddress()); + cpsScore.invoke(testingAccount, "voteProgressReport", "Report 1", "Lets rejects ", milestoneVoteAttributesList ,"_reject",true); + - cpsScore.invoke(owner, "voteProgressReport", "Report 1", "reason", milestoneVoteAttributesList ,"_reject",true); milestoneReport = (Map) cpsScore.call("getMilestonesReport", "Proposal 1", 1); assertEquals(BigInteger.valueOf(0), milestoneReport.get(APPROVED_VOTES)); - assertEquals(BigInteger.valueOf(1000), milestoneReport.get(REJECTED_VOTES)); + assertEquals(BigInteger.valueOf(2000), milestoneReport.get(REJECTED_VOTES)); // assertEquals(BigInteger.valueOf(0), progressReportDetails.get(BUDGET_APPROVED_VOTES)); // assertEquals(BigInteger.valueOf(1000), progressReportDetails.get(BUDGET_REJECTED_VOTES)); assertEquals(0, milestoneReport.get(APPROVE_VOTERS)); - assertEquals(1, milestoneReport.get(REJECT_VOTERS)); + assertEquals(2, milestoneReport.get(REJECT_VOTERS)); // assertEquals(0, progressReportDetails.get(BUDGET_APPROVE_VOTERS)); // assertEquals(1, progressReportDetails.get(BUDGET_REJECT_VOTERS)); + System.out.println("reason 1 "+cpsScore.call("getProgressReportVoters","Report 1")); + + assertEquals(1, cpsScore.call("checkChangeVote", owner.getAddress(), "Report 1", "progress_reports")); } @@ -960,15 +974,15 @@ void updatePeriodAfterProgressReportSubmission(){ bnUSD, BigInteger.valueOf(1000).multiply(MULTIPLIER) ); - doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("get_total_funds")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transfer_proposal_fund_to_cps_treasury"), - eq("Proposal 1"), eq(2),eq(2), eq(testingAccount.getAddress()), eq(owner.getAddress()), + doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("getTotalFunds")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transferProposalFundToCpsTreasury"), + eq("Proposal 1"),eq(2), eq(testingAccount.getAddress()), eq(owner.getAddress()), eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("update_proposal_fund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_installment_to_contributor"), eq("Proposal 1"),eq(2)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_reward_to_sponsor"), eq("Proposal 1"),eq(2)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("updateProposalFund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendInstallmentToContributor"), eq("Proposal 1"),eq(2)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendRewardToSponsor"), eq("Proposal 1"),eq(2)); doNothing().when(scoreSpy).callScore(eq(BigInteger.ZERO), eq(SYSTEM_ADDRESS), eq("burn")); updatePeriods(); @@ -996,7 +1010,7 @@ void submitProgressReportWithoutBudgetAdjustment(){ // progressReport.percentage_completed = 50; updatePeriodAfterProposalVoting(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), any()); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), any()); cpsScore.invoke(owner, "toggleBudgetAdjustmentFeature"); cpsScore.invoke(owner, "submitProgressReport", progressReport); } @@ -1007,7 +1021,7 @@ void voteProgressReportAfterSubmittingProposalWithoutBudgetAdjustment(){ updateNextBlock(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); CPSCoreInterface.MilestoneVoteAttributes milestoneVoteAttributes= new CPSCoreInterface.MilestoneVoteAttributes(); @@ -1053,10 +1067,10 @@ void voteProgressReportAfterSubmittingProposalWithoutBudgetAdjustment(){ eq("Proposal 1"), eq(2),eq(2), eq(testingAccount.getAddress()), eq(owner.getAddress()), eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("update_proposal_fund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_installment_to_contributor"), eq("Proposal 1"),eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_reward_to_sponsor"), eq("Proposal 1"),eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("updateProposalFund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendInstallmentToContributor"), eq("Proposal 1"),eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendRewardToSponsor"), eq("Proposal 1"),eq(1)); doNothing().when(scoreSpy).callScore(eq(BigInteger.ZERO), eq(SYSTEM_ADDRESS), eq("burn")); updatePeriods(); @@ -1079,7 +1093,7 @@ void voteProgressReportAfterSubmittingProposalWithoutBudgetAdjustment(){ updateNextBlock(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); milestoneVoteAttributes= new CPSCoreInterface.MilestoneVoteAttributes(); milestoneVoteAttributes.vote = APPROVE; @@ -1122,10 +1136,10 @@ void voteProgressReportAfterSubmittingProposalWithoutBudgetAdjustment(){ eq("Proposal 1"), eq(2), eq(2),eq(testingAccount.getAddress()), eq(owner.getAddress()), eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("update_proposal_fund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_installment_to_contributor"), eq("Proposal 1"),eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_reward_to_sponsor"), eq("Proposal 1"),eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("updateProposalFund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendInstallmentToContributor"), eq("Proposal 1"),eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendRewardToSponsor"), eq("Proposal 1"),eq(1)); doNothing().when(scoreSpy).callScore(eq(BigInteger.ZERO), eq(SYSTEM_ADDRESS), eq("burn")); updatePeriods(); @@ -1147,7 +1161,7 @@ void voteProgressReportAfterSubmittingProposalWithoutBudgetAdjustment(){ assertEquals(2, progressReportsByProposal.get(COUNT)); Map claimableSponsorBond = (Map) cpsScore.call("checkClaimableSponsorBond", testingAccount.getAddress()); - assertEquals(BigInteger.valueOf(10).multiply(MULTIPLIER), claimableSponsorBond.get(bnUSD)); + assertEquals(BigInteger.valueOf(12).multiply(MULTIPLIER), claimableSponsorBond.get(bnUSD)); Map proposalsHistory = (Map) cpsScore.call("getProposalsHistory", 0); List> proposalHistory = (List>) proposalsHistory.get(DATA); @@ -1157,7 +1171,7 @@ void voteProgressReportAfterSubmittingProposalWithoutBudgetAdjustment(){ @Test void claimSponsorBond(){ voteProgressReportAfterSubmittingProposalWithoutBudgetAdjustment(); - doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(testingAccount.getAddress()), eq(BigInteger.valueOf(10).multiply(MULTIPLIER))); + doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(testingAccount.getAddress()), eq(BigInteger.valueOf(12).multiply(MULTIPLIER))); contextMock.when(caller()).thenReturn(testingAccount.getAddress()); cpsScore.invoke(testingAccount, "claimSponsorBond"); Map claimableSponsorBond = (Map) cpsScore.call("checkClaimableSponsorBond", testingAccount.getAddress()); @@ -1224,7 +1238,7 @@ void payPrepPenalty(){ doReturn(BigInteger.TEN).when(scoreSpy).getApplicationPeriod(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); String[] proposal = new String[1]; proposal[0] = "Proposal 1"; @@ -1260,11 +1274,11 @@ void payPrepPenalty(){ ); doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("getTotalFunds")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transfer_proposal_fund_to_cps_treasury"), - eq("Proposal 1"), eq(2), eq(2),eq(testingAccount.getAddress()), eq(owner.getAddress()), + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transferProposalFundToCpsTreasury"), + eq("Proposal 1"), eq(2),eq(testingAccount.getAddress()), eq(owner.getAddress()), eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); doReturn(BigInteger.valueOf(15)).when(scoreSpy).getVotingPeriod(); updatePeriods(); @@ -1280,12 +1294,12 @@ void payPrepPenalty(){ System.out.println(loginPrep); JsonObject payPenalty = new JsonObject(); - payPenalty.add("method", "pay_prep_penalty"); + payPenalty.add("method", "payPrepPenalty"); JsonObject params = new JsonObject(); payPenalty.add("params", params); JsonObject burnTokens = new JsonObject(); - burnTokens.add("method", "burn_amount"); + burnTokens.add("method", "burnAmount"); doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(cpfTreasury), eq(new BigInteger("5000000000000000000")), eq(burnTokens.toString().getBytes())); contextMock.when(caller()).thenReturn(bnUSDScore); cpsScore.invoke(owner, "tokenFallback", testingAccount5.getAddress(), new BigInteger("5000000000000000000"), payPenalty.toString().getBytes()); @@ -1295,15 +1309,15 @@ void payPrepPenalty(){ void disqualifyProposal(){ updatePeriodAfterProposalVoting(); updateNextBlock(); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("disqualify_project"), eq("Proposal 1")); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("disqualifyProject"), eq("Proposal 1")); JsonObject disqualifyProject = new JsonObject(); - disqualifyProject.add("method", "burn_amount"); + disqualifyProject.add("method", "returnFundAmount"); JsonObject params = new JsonObject(); params.add(SPONSOR_ADDRESS, testingAccount.getAddress().toString()); disqualifyProject.add("params", params); - doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(cpfTreasury), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(disqualifyProject.toString().getBytes())); + doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(cpfTreasury), eq(BigInteger.valueOf(12).multiply(MULTIPLIER)), eq(disqualifyProject.toString().getBytes())); cpsScore.invoke(owner, "updatePeriod"); Map proposalDetails = getProposalDetailsByHash("Proposal 1"); assertEquals(PAUSED, proposalDetails.get(STATUS)); @@ -1352,7 +1366,7 @@ void rejectSponsorVote(){ contextMock.when(caller()).thenReturn(bnUSDScore); contextMock.when(() -> Context.transfer(any(), any())).thenAnswer((Answer) invocation -> null); JsonObject sponsorVoteParams = new JsonObject(); - sponsorVoteParams.add("method", "sponsor_vote"); + sponsorVoteParams.add("method", "sponsorVote"); JsonObject params = new JsonObject(); params.add(IPFS_HASH, "Proposal 1"); params.add(VOTE, REJECT); @@ -1368,15 +1382,15 @@ void disqualifyProjectByRejectingProgressReport(){ updateNextBlock(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); JsonObject disqualifyProject = new JsonObject(); - disqualifyProject.add("method", "burn_amount"); + disqualifyProject.add("method", "returnFundAmount"); JsonObject params = new JsonObject(); params.add(SPONSOR_ADDRESS, testingAccount.getAddress().toString()); disqualifyProject.add("params", params); - doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(cpfTreasury), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(disqualifyProject.toString().getBytes())); + doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(cpfTreasury), eq(BigInteger.valueOf(12).multiply(MULTIPLIER)), eq(disqualifyProject.toString().getBytes())); CPSCoreInterface.MilestoneVoteAttributes milestoneVoteAttributes = new CPSCoreInterface.MilestoneVoteAttributes(); milestoneVoteAttributes.id = 1; @@ -1384,6 +1398,7 @@ void disqualifyProjectByRejectingProgressReport(){ CPSCoreInterface.MilestoneVoteAttributes[] milestoneVoteAttributesList = new CPSCoreInterface.MilestoneVoteAttributes[]{ milestoneVoteAttributes}; + contextMock.when(caller()).thenReturn(owner.getAddress()); cpsScore.invoke(owner, "voteProgressReport", "Report 1", "reason", milestoneVoteAttributesList ,APPROVE,false); contextMock.when(caller()).thenReturn(testingAccount.getAddress()); cpsScore.invoke(testingAccount, "voteProgressReport", "Report 1", "reason", milestoneVoteAttributesList ,APPROVE,false); @@ -1416,14 +1431,14 @@ void disqualifyProjectByRejectingProgressReport(){ ); doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("getTotalFunds")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transfer_proposal_fund_to_cps_treasury"), + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transferProposalFundToCpsTreasury"), eq("Proposal 1"), eq(2),eq(2), eq(testingAccount.getAddress()), eq(owner.getAddress()), eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("update_proposal_fund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_installment_to_contributor"), eq("Proposal 1")); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_reward_to_sponsor"), eq("Proposal 1")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("updateProposalFund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendInstallmentToContributor"), eq("Proposal 1")); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendRewardToSponsor"), eq("Proposal 1")); doNothing().when(scoreSpy).callScore(eq(BigInteger.ZERO), eq(SYSTEM_ADDRESS), eq("burn")); updatePeriods(); @@ -1438,16 +1453,24 @@ void disqualifyProjectByRejectingProgressReport(){ progressReport.budget_adjustment = false; progressReport.additional_budget = BigInteger.valueOf(0); progressReport.additional_month = 0; - progressReport.milestoneCompleted = new int[]{1}; + progressReport.milestoneCompleted = new int[]{2}; // progressReport.percentage_completed = 50; cpsScore.invoke(owner, "submitProgressReport", progressReport); + milestoneVoteAttributes = new CPSCoreInterface.MilestoneVoteAttributes(); + milestoneVoteAttributes.id = 2; + milestoneVoteAttributes.vote = REJECT; + + milestoneVoteAttributesList = new CPSCoreInterface.MilestoneVoteAttributes[]{ + milestoneVoteAttributes}; + updateNextBlock(); cpsScore.invoke(owner, "updatePeriod"); getPeriodStatusMethod(); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swap_tokens"), eq(8)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("disqualify_project"), eq("Proposal 1")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("swapTokens"), eq(8)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("disqualifyProject"), eq("Proposal 1")); + contextMock.when(caller()).thenReturn(owner.getAddress()); cpsScore.invoke(owner, "voteProgressReport", "Report 2", "reason", milestoneVoteAttributesList ,APPROVE,false); contextMock.when(caller()).thenReturn(testingAccount.getAddress()); cpsScore.invoke(testingAccount, "voteProgressReport", "Report 2", "reason", milestoneVoteAttributesList ,APPROVE,false); @@ -1478,16 +1501,22 @@ void disqualifyProjectByRejectingProgressReport(){ bnUSD, BigInteger.valueOf(1000).multiply(MULTIPLIER) ); - doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("get_total_funds")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transfer_proposal_fund_to_cps_treasury"), - eq("Proposal 1"), eq(2), eq(2),eq(testingAccount.getAddress()), eq(owner.getAddress()), + doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfTreasury), eq("getTotalFunds")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("transferProposalFundToCpsTreasury"), + eq("Proposal 1"), eq(2),eq(testingAccount.getAddress()), eq(owner.getAddress()), eq(bnUSD), eq(BigInteger.valueOf(100).multiply(MULTIPLIER))); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("reset_swap_state")); - doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("update_proposal_fund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_installment_to_contributor"), eq("Proposal 1"),eq(1)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_reward_to_sponsor"), eq("Proposal 1"),eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("resetSwapState")); + doNothing().when(scoreSpy).callScore(eq(cpfTreasury), eq("updateProposalFund"), eq("Proposal 1"), eq(bnUSD), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendInstallmentToContributor"), eq("Proposal 1"),eq(1)); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("sendRewardToSponsor"), eq("Proposal 1"),eq(1)); doNothing().when(scoreSpy).callScore(eq(BigInteger.ZERO), eq(SYSTEM_ADDRESS), eq("burn")); + doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("disqualifyProject"), eq("Proposal 1")); + + + doNothing().when(scoreSpy).callScore(eq(bnUSDScore), eq("transfer"), eq(cpfTreasury), eq(BigInteger.valueOf(10).multiply(MULTIPLIER)), eq(disqualifyProject.toString().getBytes())); + + updatePeriods(); Map proposalDetails = (Map) cpsScore.call("getProposalDetailsByHash", "Proposal 1"); @@ -1532,7 +1561,7 @@ void sponsorDepositsLessThanBondPercentage(){ doReturn(BigInteger.valueOf(15)).when(scoreSpy).getSponsorBondPercentage(); JsonObject sponsorVoteParams = new JsonObject(); - sponsorVoteParams.add("method", "sponsor_vote"); + sponsorVoteParams.add("method", "sponsorVote"); JsonObject params = new JsonObject(); params.add(IPFS_HASH, "Proposal 1"); params.add(VOTE, ACCEPT); diff --git a/CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSUnit.java b/CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSUnit.java deleted file mode 100644 index 203c4be7..00000000 --- a/CPSCore/src/test/java/community/icon/cps/score/cpscore/CPSUnit.java +++ /dev/null @@ -1,374 +0,0 @@ -package community.icon.cps.score.cpscore; - -import com.eclipsesource.json.JsonObject; -import community.icon.cps.score.cpscore.utils.Constants; -import community.icon.cps.score.lib.interfaces.CPSCoreInterface; -import community.icon.cps.score.lib.interfaces.CPSCoreInterface.MilestoneVoteAttributes; -import org.junit.jupiter.api.Test; - -import java.math.BigInteger; -import java.util.List; -import java.util.Map; - -import static community.icon.cps.score.cpscore.utils.Constants.ACCEPT; -import static community.icon.cps.score.cpscore.utils.Constants.APPROVE; -import static community.icon.cps.score.cpscore.utils.Constants.COUNT; -import static community.icon.cps.score.cpscore.utils.Constants.DATA; -import static community.icon.cps.score.cpscore.utils.Constants.IPFS_HASH; -import static community.icon.cps.score.cpscore.utils.Constants.REJECT; -import static community.icon.cps.score.cpscore.utils.Constants.SPONSOR_PENDING; -import static community.icon.cps.score.cpscore.utils.Constants.VOTE; -import static community.icon.cps.score.cpscore.utils.Constants.VOTE_REASON; -import static community.icon.cps.score.cpscore.utils.Constants.bnUSD; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -public class CPSUnit extends AbstractCPSUnitTest{ - - @Test - void name(){ - assertEquals(cpsScore.call("name"), TAG); - } - - @Test - void registerPrep(){ - registerPrepsMethod(); - - System.out.println("val "+ cpsScore.call("getDele", owner.getAddress())); - assertEquals(7, ((List)(cpsScore.call("getPReps"))).size()); - verify(scoreSpy,times(7)).RegisterPRep(any(),eq("P-Rep Registered.")); - } - - @Test - void submitProposal(){ - submitProposalMethod(); - - List proposalKeys = (List) cpsScore.call("getProposalKeys"); - assertEquals(List.of("Proposal 1"), proposalKeys); - - Map proposalDetails = (Map) cpsScore.call("getProposalDetailsByHash", "" + - "Proposal 1"); - proposalDetails.remove("sponsor_vote_reason"); - assertEquals("Proposal 1", proposalDetails.get("ipfs_hash")); - assertEquals("Title", proposalDetails.get("project_title")); - assertEquals(2, proposalDetails.get("project_duration")); - assertEquals(testingAccount.getAddress(), proposalDetails.get("sponsor_address")); - assertEquals(owner.getAddress(), proposalDetails.get("contributor_address")); - assertEquals("_sponsor_pending", proposalDetails.get("status")); - assertEquals(BigInteger.valueOf(100).multiply(ICX), proposalDetails.get("total_budget")); - - Map proposalDetailsOfStatus = (Map) cpsScore.call("getProposalDetails", - SPONSOR_PENDING, owner.getAddress(), 0); - assertEquals(1, proposalDetailsOfStatus.get(COUNT)); - - Map proposalDetailsOf = ((List>)proposalDetailsOfStatus.get(DATA)).get(0); - assertEquals(proposalDetails.get("approve_voters"),proposalDetailsOf.get("approve_voters")); - assertEquals(proposalDetails.get("sponsor_vote_reason"),proposalDetailsOf.get("sponsor_vote_reason")); - assertEquals(proposalDetails.get("sponsor_deposit_amount"),proposalDetailsOf.get("sponsor_deposit_amount")); - assertEquals(proposalDetails.get("sponsor_address"),proposalDetailsOf.get("sponsor_address")); - assertEquals(proposalDetails.get("timestamp"),proposalDetailsOf.get("timestamp")); - assertEquals(proposalDetails.get("contributor_address"),proposalDetailsOf.get("contributor_address")); - assertEquals(proposalDetails.get("reject_voters"),proposalDetailsOf.get("reject_voters")); - assertEquals(proposalDetails.get("project_title"),proposalDetailsOf.get("project_title")); - assertEquals(proposalDetails.get("token"),proposalDetailsOf.get("token")); - assertEquals(proposalDetails.get("tx_hash"),proposalDetailsOf.get("tx_hash")); - assertEquals(proposalDetails.get("abstained_votes"),proposalDetailsOf.get("abstained_votes")); - assertEquals(proposalDetails.get("abstain_voters"),proposalDetailsOf.get("abstain_voters")); - assertEquals(proposalDetails.get("submit_progress_report"),proposalDetailsOf.get("submit_progress_report")); - assertEquals(proposalDetails.get("sponsor_deposit_status"),proposalDetailsOf.get("sponsor_deposit_status")); - assertEquals(proposalDetails.get("budget_adjustment"),proposalDetailsOf.get("budget_adjustment")); - assertEquals(proposalDetails.get("status"),proposalDetailsOf.get("status")); - assertEquals(proposalDetails.get("approved_votes"),proposalDetailsOf.get("approved_votes")); - assertEquals(proposalDetails.get("total_votes"),proposalDetailsOf.get("total_votes")); - assertEquals(proposalDetails.get("project_duration"),proposalDetailsOf.get("project_duration")); - assertEquals(proposalDetails.get("total_voters"),proposalDetailsOf.get("total_voters")); - assertEquals(proposalDetails.get("approved_reports"),proposalDetailsOf.get("approved_reports")); - assertEquals(proposalDetails.get("rejected_votes"),proposalDetailsOf.get("rejected_votes")); - assertEquals(proposalDetails.get("sponsored_timestamp"),proposalDetailsOf.get("sponsored_timestamp")); - assertEquals(proposalDetails.get("percentage_completed"),proposalDetailsOf.get("percentage_completed")); - assertEquals(proposalDetails.get("ipfs_hash"),proposalDetailsOf.get("ipfs_hash")); - assertEquals(proposalDetails.get("total_budget"),proposalDetailsOf.get("total_budget")); - assertEquals(proposalDetails.get("isMilestone"),proposalDetailsOf.get("isMilestone")); - - assertEquals(proposalDetails.size(), ((List>)proposalDetailsOfStatus.get(DATA)).get(0).size()); - - Map proposalDetailsOfWallet = (Map) cpsScore.call("getProposalDetailByWallet", - owner.getAddress(),0); - assertEquals(proposalDetails.size(), ((List>)proposalDetailsOfWallet.get(DATA)).get(0).size()); - assertEquals(1, proposalDetailsOfWallet.get(COUNT)); - - verify(scoreSpy).ProposalSubmitted(owner.getAddress(),"Successfully submitted a Proposal."); - - } - - @Test - void setSponosrVotePercentage(){ - setScoresMethod(); - cpsScore.invoke(cpfScore,"setSponsorBondPercentage", BigInteger.valueOf(12)); - } - - @Test - void submitSponsorVote(){ - submitProposalMethod(); - contextMock.when(caller()).thenReturn(bnUSDScore); - JsonObject sponsorVoteParams = new JsonObject(); - sponsorVoteParams.add("method", "sponsor_vote"); - JsonObject params = new JsonObject(); - params.add(IPFS_HASH, "Proposal 1"); - params.add(VOTE, ACCEPT); - params.add(VOTE_REASON, "reason"); - sponsorVoteParams.add("params", params); - - cpsScore.invoke(testingAccount, "tokenFallback", testingAccount.getAddress(), - BigInteger.valueOf(12).multiply(ICX), sponsorVoteParams.toString().getBytes()); - - } - @Test - public void setApplicationPeriod(){ - setScoresMethod(); - cpsScore.invoke(cpfScore,"setPeriod", BigInteger.valueOf(20)); - } - - @Test - void voteproposal_Accept(){ - setApplicationPeriod(); - submitSponsorVote(); - contextMock.when(caller()).thenReturn(owner.getAddress()); - updateNextBlock(); - cpsScore.invoke(owner, "updatePeriod"); - System.out.println(cpsScore.call("getPeriodStatus")); - doNothing().when(scoreSpy).callScore(eq(cpfScore.getAddress()), eq("swap_tokens"), eq(8)); - cpsScore.invoke(owner, "voteProposal", "Proposal 1", APPROVE, "reason", false); - Map proposalDetails = (Map) cpsScore.call( - "getProposalDetailsByHash", "Proposal 1"); - - assertEquals(BigInteger.valueOf(1000), proposalDetails.get("approved_votes")); - assertEquals(1, proposalDetails.get("approve_voters")); - assertEquals(BigInteger.ZERO, proposalDetails.get("rejected_votes")); - assertEquals(0, proposalDetails.get("reject_voters")); - assertEquals(BigInteger.valueOf(1000), proposalDetails.get("total_votes")); - - cpsScore.invoke(owner, "voteProposal", "Proposal 1", REJECT, "reason", true); - - proposalDetails = getProposalDetailsByHash("Proposal 1"); - - assertEquals(BigInteger.valueOf(0), proposalDetails.get("approved_votes")); - assertEquals(0, proposalDetails.get("approve_voters")); - assertEquals(BigInteger.valueOf(1000), proposalDetails.get("rejected_votes")); - assertEquals(1, proposalDetails.get("reject_voters")); - assertEquals(BigInteger.valueOf(1000), proposalDetails.get("total_votes")); - - assertEquals(1, cpsScore.call("checkChangeVote", owner.getAddress(), "Proposal 1", "proposal")); - - Map voteResult = (Map) cpsScore.call("getVoteResult", "Proposal 1"); - System.out.println(voteResult); - } - - void voteProposalMethod(){ - submitSponsorVote(); - contextMock.when(caller()).thenReturn(owner.getAddress()); - updateNextBlock(); - cpsScore.invoke(owner, "updatePeriod"); - doNothing().when(scoreSpy).callScore(eq(cpfScore.getAddress()), eq("swap_tokens"), eq(8)); - String[] proposal = new String[1]; - proposal[0] = "Proposal 1"; - cpsScore.invoke(owner, "voteProposal", "Proposal 1", APPROVE, "reason", false); - cpsScore.invoke(owner, "votePriority", (Object) proposal); - - contextMock.when(caller()).thenReturn(testingAccount.getAddress()); - cpsScore.invoke(testingAccount, "voteProposal", "Proposal 1", APPROVE, "reason", false); - cpsScore.invoke(owner, "votePriority", (Object) proposal); - - contextMock.when(caller()).thenReturn(testingAccount1.getAddress()); - cpsScore.invoke(testingAccount1, "voteProposal", "Proposal 1", APPROVE, "reason", false); - cpsScore.invoke(owner, "votePriority", (Object) proposal); - - contextMock.when(caller()).thenReturn(testingAccount2.getAddress()); - cpsScore.invoke(testingAccount2, "voteProposal", "Proposal 1", APPROVE, "reason", false); - cpsScore.invoke(owner, "votePriority", (Object) proposal); - - contextMock.when(caller()).thenReturn(testingAccount3.getAddress()); - cpsScore.invoke(testingAccount3, "voteProposal", "Proposal 1", APPROVE, "reason", false); - cpsScore.invoke(owner, "votePriority", (Object) proposal); - - contextMock.when(caller()).thenReturn(testingAccount4.getAddress()); - cpsScore.invoke(testingAccount4, "voteProposal", "Proposal 1", APPROVE, "reason", false); - cpsScore.invoke(owner, "votePriority", (Object) proposal); - - contextMock.when(caller()).thenReturn(testingAccount5.getAddress()); - cpsScore.invoke(testingAccount5, "voteProposal", "Proposal 1", APPROVE, "reason", false); - cpsScore.invoke(owner, "votePriority", (Object) proposal); - } - - @Test - public void updatePeriod_afte_vote_on_proposal(){ - setApplicationPeriod(); - voteProposalMethod(); - contextMock.when(caller()).thenReturn(owner.getAddress()); - updateNextBlock(); - Map totalFunds = Map.of( - Constants.ICX, BigInteger.valueOf(1000).multiply(ICX), - bnUSD, BigInteger.valueOf(1000).multiply(ICX) - ); - - doReturn(totalFunds).when(scoreSpy).callScore(eq(Map.class), eq(cpfScore.getAddress()), eq("getTotalFunds")); - doNothing().when(scoreSpy).callScore(eq(cpfScore.getAddress()), eq("transfer_proposal_fund_to_cps_treasury"), - eq("Proposal 1"), eq(2),eq(5), eq(testingAccount.getAddress()), eq(owner.getAddress()), - eq(bnUSD), eq(BigInteger.valueOf(100).multiply(ICX))); - - doNothing().when(scoreSpy).callScore(eq(cpfScore.getAddress()), eq("reset_swap_state")); - } - - Map getProposalDetailsByHash(String ipfs_hash){ - return (Map) cpsScore.call("getProposalDetailsByHash", ipfs_hash); - } - - void updatePeriods(){ - // 1/4 - cpsScore.invoke(owner, "updatePeriod"); - // 2/4 - cpsScore.invoke(owner, "updatePeriod"); - // 3/4 - cpsScore.invoke(owner, "updatePeriod"); - // 4/4 - cpsScore.invoke(owner, "updatePeriod"); - } - - - - @Test - public void submitProgressReport_first(){ - updatePeriod_afte_vote_on_proposal(); - CPSCoreInterface.ProgressReportAttributes progressReport = new CPSCoreInterface.ProgressReportAttributes(); - - progressReport.ipfs_hash = "Proposal 1"; - progressReport.report_hash = "Report 1"; - progressReport.ipfs_link = "Link"; - progressReport.progress_report_title = "Progress Report Title"; - progressReport.budget_adjustment = true; - progressReport.additional_budget = BigInteger.valueOf(0); - progressReport.additional_month = 0; - progressReport.milestoneCompleted = new int[]{1,2}; - doNothing().when(scoreSpy).callScore(eq(cpfScore.getAddress()), eq("swap_tokens"), any()); - cpsScore.invoke(owner, "toggleBudgetAdjustmentFeature"); - updatePeriods(); - cpsScore.invoke(owner, "submitProgressReport", progressReport); - - } - - @Test - public void voteProgressReport(){ - - List> prepDict = - List.of(Map.of("name", "owner", "address", owner.getAddress(), "power", BigInteger.valueOf(1000)), - Map.of("name", "testingAccount", "address", testingAccount.getAddress(), "power", BigInteger.valueOf(850)), - Map.of("name", "testingAccount1", "address", testingAccount1.getAddress(), "power", BigInteger.valueOf(770)), - Map.of("name", "testingAccount2" , "address", testingAccount2.getAddress(), "power", BigInteger.valueOf(800)), - Map.of("name", "testingAccount3", "address", testingAccount3.getAddress(), "power", BigInteger.valueOf(990)), - Map.of("name", "testingAccount4", "address", testingAccount4.getAddress(), "power", BigInteger.valueOf(500)), - Map.of("name", "testingAccount5", "address", testingAccount5.getAddress(), "power", BigInteger.valueOf(250)) - ); - - submitProgressReport_first(); - updateNextBlock(); - cpsScore.invoke(owner, "updatePeriod"); - - MilestoneVoteAttributes milestoneVoteAttributes= new MilestoneVoteAttributes(); - milestoneVoteAttributes.vote = APPROVE; - milestoneVoteAttributes.id = 1; - - MilestoneVoteAttributes milestoneVoteAttributes2= new MilestoneVoteAttributes(); - milestoneVoteAttributes2.vote = APPROVE; - milestoneVoteAttributes2.id = 2; - - - MilestoneVoteAttributes[] milestoneVoteAttributesList = new MilestoneVoteAttributes[]{ - milestoneVoteAttributes,milestoneVoteAttributes2}; - doNothing().when(scoreSpy).callScore(eq(cpfScore.getAddress()), eq("swap_tokens"), eq(8)); - - // VOTE BY OWNER - doReturn(prepDict.get(0)).when(scoreSpy).callScore(eq(Map.class), eq(SYSTEM_ADDRESS), eq("getPRep"), eq(owner.getAddress())); - cpsScore.invoke(owner, "voteProgressReport", "Report 1", "reason", milestoneVoteAttributesList ,"_reject",false); - - // VOTE BY TESTING ACCOUNT - contextMock.when(caller()).thenReturn(testingAccount.getAddress()); - doReturn(prepDict.get(1)).when(scoreSpy).callScore(eq(Map.class), eq(SYSTEM_ADDRESS), eq("getPRep"), eq(testingAccount.getAddress())); - cpsScore.invoke(testingAccount, "voteProgressReport", "Report 1", "reason", (Object)milestoneVoteAttributesList ,"_reject",false); - - // VOTE BY testing account 1 - contextMock.when(caller()).thenReturn(testingAccount1.getAddress()); - doReturn(prepDict.get(2)).when(scoreSpy).callScore(eq(Map.class), eq(SYSTEM_ADDRESS), eq("getPRep"),eq(testingAccount1.getAddress())); - cpsScore.invoke(testingAccount1, "voteProgressReport", "Report 1", "reason", milestoneVoteAttributesList ,"_reject",false); - - contextMock.when(caller()).thenReturn(testingAccount2.getAddress()); - cpsScore.invoke(testingAccount2, "voteProgressReport", "Report 1", "reason", (Object)milestoneVoteAttributesList ,"_reject",false); - - contextMock.when(caller()).thenReturn(testingAccount3.getAddress()); - cpsScore.invoke(testingAccount3, "voteProgressReport", "Report 1", "reason", (Object)milestoneVoteAttributesList ,"_reject",false); -// - contextMock.when(caller()).thenReturn(testingAccount4.getAddress()); - cpsScore.invoke(testingAccount4, "voteProgressReport", "Report 1", "reason", (Object)milestoneVoteAttributesList ,"_reject",false); - - contextMock.when(caller()).thenReturn(testingAccount5.getAddress()); - cpsScore.invoke(testingAccount5, "voteProgressReport", "Report 1", "reason", (Object)milestoneVoteAttributesList ,"_reject",false); - } - - @Test - public void testVoteResult(){ - voteProgressReport(); -// Map progressReportDetails = (Map) cpsScore.call("getProgressReportsByHash", "Report 1"); -// System.out.println("pp" + progressReportDetails); -// -// List mm = (List )cpsScore.call("getMilestoneCountOfProgressReport", "Report 1"); -// System.out.println("milestone" + mm); -// - Map voteResult = (Map) cpsScore.call("getProgressReportVoteDetails", "Report 1"); - System.out.println("pp" + voteResult); -// - Map milestoneReport = (Map) cpsScore.call("getMilestonesReport", "Proposal 1", 1); - System.out.println("milestone" + milestoneReport); - - Map milestoneReport2 = (Map) cpsScore.call("getMilestonesReport", "Proposal 1", 2); - System.out.println("milestone" + milestoneReport2); - - // TODO: check the milestone 3 gives a good message -// Map milestoneReport3 = (Map) cpsScore.call("getMilestonesReport", "Proposal 1", 3); -// System.out.println("milestone" + milestoneReport3); - } - - - @Test - void updatePeriods_after_voting_progress_report(){ - voteProgressReport(); - contextMock.when(caller()).thenReturn(owner.getAddress()); - updateNextBlock(); - doNothing().when(scoreSpy).callScore(eq(BigInteger.ZERO), eq(SYSTEM_ADDRESS), eq("burn")); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_installment_to_contributor"), eq("Proposal 1"),eq(2)); - doNothing().when(scoreSpy).callScore(eq(cpsTreasury), eq("send_reward_to_sponsor"), eq("Proposal 1"),eq(2)); - - updatePeriods(); - - Map prr = (Map) cpsScore.call("getProgressReportsByHash", "Report 1"); - System.out.println("pp" + prr); - - Map voteResult = (Map) cpsScore.call("getProgressReportVoteDetails", "Report 1"); - System.out.println("pp" + voteResult); - - Map milestoneReport = (Map) cpsScore.call("getMilestonesReport", "Proposal 1", 2); - System.out.println("milestone" + milestoneReport); - - Map milestoneReport1 = (Map) cpsScore.call("getMilestonesReport", "Proposal 1", 1); - System.out.println("milestone" + milestoneReport1); - - } - - - - - -}