diff --git a/CPSCore/src/intTest/java/community/icon/cps/integration/CPSCoreIntegration.java b/CPSCore/src/intTest/java/community/icon/cps/integration/CPSCoreIntegration.java index b0aad6de..98993b3c 100644 --- a/CPSCore/src/intTest/java/community/icon/cps/integration/CPSCoreIntegration.java +++ b/CPSCore/src/intTest/java/community/icon/cps/integration/CPSCoreIntegration.java @@ -49,9 +49,10 @@ public class CPSCoreIntegration implements ScoreIntegrationTest { private final BigInteger ICX = BigInteger.valueOf(10).pow(18); private static Map addressMap; - public static Map cpsClients = new HashMap<>(); + public static Map cpsClients = new HashMap<>(); + @BeforeAll - public static void setup() throws Exception{ + public static void setup() throws Exception { String contracts = "conf/contracts.json"; CPS cps = new CPS(contracts); @@ -65,7 +66,7 @@ public static void setup() throws Exception{ for (int i = 0; i < 7; i++) { String privKey = prepSet.toArray()[i].toString().substring(43); - cpsClients.put(i,cps.customClient(privKey)); + cpsClients.put(i, cps.customClient(privKey)); } // ICX swap purpose @@ -75,20 +76,19 @@ public static void setup() throws Exception{ @Test @Order(1) - public void name(){ + public void name() { ownerClient.cpsCore.name(); } - @DisplayName("register all preps") @Test @Order(1) - public void registerPrep(){ + public void registerPrep() { // expected Prep address List expectedPrepAddress = new ArrayList<>(cpsClients.size()); - for (CPSClient prepClient:cpsClients.values()){ + for (CPSClient prepClient : cpsClients.values()) { prepClient.cpsCore.registerPrep(); expectedPrepAddress.add(prepClient.getAddress().toString()); @@ -101,31 +101,32 @@ public void registerPrep(){ actualPrepAddress.add((String) prep.get("address")); } - assertEquals(expectedPrepAddress,actualPrepAddress); + assertEquals(expectedPrepAddress, actualPrepAddress); // SYSTEM_INTERFACE = new SystemInterfaceScoreClient(godClient); // System.out.println(SYSTEM_INTERFACE.getPRepTerm()); } @Test @Order(2) - public void registerPrepExceptions(){ + public void registerPrepExceptions() { // readerClient tries to be registered as prep - assertUserRevert(new UserRevertException(TAG+": Not a P-Rep"), - () -> readerClient.cpsCore.registerPrep(),null); + assertUserRevert(new UserRevertException(TAG + ": Not a P-Rep"), + () -> readerClient.cpsCore.registerPrep(), null); // registered prep registers again CPSClient registeredPrep = cpsClients.get(0); - assertUserRevert(new UserRevertException(TAG+": P-Rep is already registered."), - () -> registeredPrep.cpsCore.registerPrep(),null); + assertUserRevert(new UserRevertException(TAG + ": P-Rep is already registered."), + () -> registeredPrep.cpsCore.registerPrep(), null); + } @DisplayName("unregister prep") @Test @Order(2) - public void unregisterPrep(){ + public void unregisterPrep() { CPSClient prep1 = cpsClients.get(0); prep1.cpsCore.unregisterPrep(); @@ -133,7 +134,7 @@ public void unregisterPrep(){ Map expectedPrepData = unregisteredPrepData(); Map actualPrepData = loginPrep(prep1.getAddress()); - assertEquals(expectedPrepData,actualPrepData); + assertEquals(expectedPrepData, actualPrepData); prep1.cpsCore.registerPrep(); } @@ -142,23 +143,23 @@ public void unregisterPrep(){ @DisplayName("check prep data") @Test @Order(3) - public void loginAsPrep(){ + public void loginAsPrep() { // query period status - Map periodStatus = getPeriodStatus(); - assertEquals(periodStatus.get(PERIOD_NAME),"Application Period"); + Map periodStatus = getPeriodStatus(); + assertEquals(periodStatus.get(PERIOD_NAME), "Application Period"); CPSClient prep1 = cpsClients.get(0); // expected prep1 status Map expectedPrepData = votingPrepData(); Map actualPrepData = loginPrep(prep1.getAddress()); - assertEquals(expectedPrepData,actualPrepData); + assertEquals(expectedPrepData, actualPrepData); } @DisplayName("submit proposal 1") @Test @Order(4) - public void submitProposal(){ + public void submitProposal() { CPSClient prep1 = cpsClients.get(0); ProposalAttributes proposalAttributes = new ProposalAttributes(); @@ -168,7 +169,7 @@ public void submitProposal(){ proposalAttributes.total_budget = BigInteger.valueOf(100); proposalAttributes.token = bnUSD; proposalAttributes.sponsor_address = prep1.getAddress(); - proposalAttributes.ipfs_link ="https://proposal_1"; + proposalAttributes.ipfs_link = "https://proposal_1"; proposalAttributes.milestoneCount = 3; proposalAttributes.isMilestone = true; @@ -187,25 +188,25 @@ public void submitProposal(){ milestonesAttributes3.budget = BigInteger.valueOf(20).multiply(ICX); milestonesAttributes3.id = 3; - CPSCoreInterface.MilestonesAttributes[] milestonesAttributes =new CPSCoreInterface.MilestonesAttributes[] - {milestonesAttributes1, milestonesAttributes2,milestonesAttributes3}; - ((CPSCoreInterfaceScoreClient) testClient.cpsCore).submitProposal(BigInteger.valueOf(50).multiply(ICX),proposalAttributes,milestonesAttributes); + CPSCoreInterface.MilestonesAttributes[] milestonesAttributes = new CPSCoreInterface.MilestonesAttributes[] + {milestonesAttributes1, milestonesAttributes2, milestonesAttributes3}; + ((CPSCoreInterfaceScoreClient) testClient.cpsCore).submitProposal(BigInteger.valueOf(50).multiply(ICX), proposalAttributes, milestonesAttributes); List proposalsIpfs = readerClient.cpsCore.getProposalsKeysByStatus(SPONSOR_PENDING); - assertEquals(proposalsIpfs.size(),1); - assertEquals(proposalsIpfs.get(0),proposalAttributes.ipfs_hash); + assertEquals(proposalsIpfs.size(), 1); + assertEquals(proposalsIpfs.get(0), proposalAttributes.ipfs_hash); verifyProposalDetails(proposalAttributes); } - private void verifyProposalDetails(ProposalAttributes expectedDetails){ - Map actualDetails = getProposalDetails(expectedDetails.ipfs_hash); + private void verifyProposalDetails(ProposalAttributes expectedDetails) { + Map actualDetails = getProposalDetails(expectedDetails.ipfs_hash); assertEquals(actualDetails.get("project_title"), expectedDetails.project_title); assertEquals(actualDetails.get("sponsor_address"), expectedDetails.sponsor_address.toString()); assertEquals(actualDetails.get("ipfs_hash"), expectedDetails.ipfs_hash); - assertEquals(toInt((String)actualDetails.get("project_duration")), expectedDetails.project_duration); - assertEquals(toInt((String)actualDetails.get("milestoneCount")), expectedDetails.milestoneCount); - assertEquals(toBigInt((String)actualDetails.get("total_budget")), expectedDetails.total_budget.multiply(ICX)); + assertEquals(toInt((String) actualDetails.get("project_duration")), expectedDetails.project_duration); + assertEquals(toInt((String) actualDetails.get("milestoneCount")), expectedDetails.milestoneCount); + assertEquals(toBigInt((String) actualDetails.get("total_budget")), expectedDetails.total_budget.multiply(ICX)); } @@ -213,26 +214,26 @@ private void verifyProposalDetails(ProposalAttributes expectedDetails){ @DisplayName("submit sponsor vote on first proposal") @Test @Order(5) - public void submitSponsorVote(){ + public void submitSponsorVote() { CPSClient sponsorPrep = cpsClients.get(0); - bnUSDMint(sponsorPrep.getAddress(),BigInteger.valueOf(50).multiply(ICX)); + bnUSDMint(sponsorPrep.getAddress(), BigInteger.valueOf(50).multiply(ICX)); - byte[] data = createByteArray("sponsorVote", "Test_Proposal_1",ACCEPT, + byte[] data = createByteArray("sponsorVote", "Test_Proposal_1", ACCEPT, "Proposal looks good"); BigInteger sponsorBond = BigInteger.valueOf(15).multiply(ICX); - sponsorPrep.bnUSD.transfer(addressMap.get("cpsCore"),sponsorBond,data); + sponsorPrep.bnUSD.transfer(addressMap.get("cpsCore"), sponsorBond, data); List proposalsIpfs = readerClient.cpsCore.getProposalsKeysByStatus(PENDING); - assertEquals(proposalsIpfs.size(),1); - assertEquals(proposalsIpfs.get(0),"Test_Proposal_1"); + assertEquals(proposalsIpfs.size(), 1); + assertEquals(proposalsIpfs.get(0), "Test_Proposal_1"); - Map proposalDetails = getProposalDetails("Test_Proposal_1"); + Map proposalDetails = getProposalDetails("Test_Proposal_1"); assertEquals(sponsorBond, toBigInt((String) proposalDetails.get(SPONSOR_DEPOSIT_AMOUNT))); assertEquals(BOND_RECEIVED, proposalDetails.get(SPONSOR_DEPOSIT_STATUS)); - assertEquals(BigInteger.valueOf(35).multiply(ICX),readerClient.bnUSD.balanceOf(sponsorPrep.getAddress())); + assertEquals(BigInteger.valueOf(35).multiply(ICX), readerClient.bnUSD.balanceOf(sponsorPrep.getAddress())); } @DisplayName("vote on first proposal") @@ -243,24 +244,25 @@ public void voteProposal() throws InterruptedException { updateNextBlock(); ownerClient.cpsCore.updatePeriod(); - Map periodStatus = getPeriodStatus(); - assertEquals(periodStatus.get(PERIOD_NAME),"Voting Period"); + Map periodStatus = getPeriodStatus(); + assertEquals(periodStatus.get(PERIOD_NAME), "Voting Period"); - Map proposalVote = getProposalVote("Test_Proposal_1"); - assertEquals(toInt((String)proposalVote.get("total_voters")),0); - assertEquals(toInt((String)proposalVote.get("approve_voters")),0); - assertEquals(toInt((String)proposalVote.get("reject_voters")),0); + Map proposalVote = getProposalVote("Test_Proposal_1"); + assertEquals(toInt((String) proposalVote.get("total_voters")), 0); + assertEquals(toInt((String) proposalVote.get("approve_voters")), 0); + assertEquals(toInt((String) proposalVote.get("reject_voters")), 0); - for (CPSClient prepClient:cpsClients.values()){ - voteByPrep(prepClient,"Test_Proposal_1",APPROVE,"Seems fruitful",false); + for (CPSClient prepClient : cpsClients.values()) { + voteByPrep(prepClient, "Test_Proposal_1", APPROVE, "Seems fruitful", false); prepClient.cpsCore.votePriority(new String[]{"Test_Proposal_1"}); } proposalVote = getProposalVote("Test_Proposal_1"); - assertEquals(toInt((String)proposalVote.get("total_voters")),7); - assertEquals(toInt((String)proposalVote.get("approve_voters")),7); - assertEquals(toInt((String)proposalVote.get("reject_voters")),0); -// assertEquals(toBigInt((String)proposalVote.get("approved_votes")),BigInteger.valueOf(9540000).multiply(ICX)); + + assertEquals(toInt((String) proposalVote.get("total_voters")), 7); + assertEquals(toInt((String) proposalVote.get("approve_voters")), 7); + assertEquals(toInt((String) proposalVote.get("reject_voters")), 0); + } @DisplayName("pass proposal 1 and send the initial payement") @@ -268,49 +270,49 @@ public void voteProposal() throws InterruptedException { @Order(7) public void transferFundsToProposal() throws InterruptedException { updateToApplicationPeriod(); - Map periodStatus = getPeriodStatus(); - assertEquals(periodStatus.get(PERIOD_NAME),"Application Period"); + Map periodStatus = getPeriodStatus(); + assertEquals(periodStatus.get(PERIOD_NAME), "Application Period"); - Map contributorProject = getContributorFunds(testClient.getAddress()); - List> contributorData = (List> )contributorProject.get("data"); + Map contributorProject = getContributorFunds(testClient.getAddress()); + List> contributorData = (List>) contributorProject.get("data"); - assertEquals(toBigInt((String) contributorData.get(0).get("installment_amount")),BigInteger.valueOf(30).multiply(ICX)); - assertEquals(toBigInt((String) contributorData.get(0).get("total_budget")),BigInteger.valueOf(100).multiply(ICX)); - assertEquals( contributorData.get(0).get("total_installment_count"),"0x3"); - assertEquals(toBigInt((String) contributorData.get(0).get("total_installment_paid")),BigInteger.valueOf(10).multiply(ICX)); - assertEquals(contributorProject.get("project_count"),"0x1"); + assertEquals(toBigInt((String) contributorData.get(0).get("installment_amount")), BigInteger.valueOf(30).multiply(ICX)); + assertEquals(toBigInt((String) contributorData.get(0).get("total_budget")), BigInteger.valueOf(100).multiply(ICX)); + assertEquals(contributorData.get(0).get("total_installment_count"), "0x3"); + assertEquals(toBigInt((String) contributorData.get(0).get("total_installment_paid")), BigInteger.valueOf(10).multiply(ICX)); + assertEquals(contributorProject.get("project_count"), "0x1"); - Map sponsorProject = getSponsorFunds(cpsClients.get(0).getAddress()); + Map sponsorProject = getSponsorFunds(cpsClients.get(0).getAddress()); - List> sponsorData = (List> )sponsorProject.get("data"); - assertEquals(toBigInt((String) sponsorData.get(0).get("installment_amount")),BigInteger.valueOf(6).multiply(ICX).divide(BigInteger.TEN)); - assertEquals(toBigInt((String) sponsorData.get(0).get("sponsor_bond_amount")),BigInteger.valueOf(15).multiply(ICX)); - assertEquals( sponsorData.get(0).get("total_installment_count"),"0x3"); - assertEquals(toBigInt((String) sponsorData.get(0).get("total_installment_paid")),BigInteger.valueOf(2).multiply(ICX).divide(BigInteger.TEN)); - assertEquals(toBigInt((String) sponsorProject.get("withdraw_amount_bnUSD")),BigInteger.valueOf(2).multiply(ICX).divide(BigInteger.TEN)); + List> sponsorData = (List>) sponsorProject.get("data"); + assertEquals(toBigInt((String) sponsorData.get(0).get("installment_amount")), BigInteger.valueOf(6).multiply(ICX).divide(BigInteger.TEN)); + assertEquals(toBigInt((String) sponsorData.get(0).get("sponsor_bond_amount")), BigInteger.valueOf(15).multiply(ICX)); + assertEquals(sponsorData.get(0).get("total_installment_count"), "0x3"); + assertEquals(toBigInt((String) sponsorData.get(0).get("total_installment_paid")), BigInteger.valueOf(2).multiply(ICX).divide(BigInteger.TEN)); + assertEquals(toBigInt((String) sponsorProject.get("withdraw_amount_bnUSD")), BigInteger.valueOf(2).multiply(ICX).divide(BigInteger.TEN)); } - - private Map getContributorFunds(Address contributorAddr){ + private Map getContributorFunds(Address contributorAddr) { return readerClient.cpsTreasury.getContributorProjectedFund(contributorAddr); } - private Map getSponsorFunds(Address sponsorAddr){ + private Map getSponsorFunds(Address sponsorAddr) { return readerClient.cpsTreasury.getSponsorProjectedFund(sponsorAddr); } + @DisplayName("submit first milestone") @Test @Order(8) - public void submitMilestoneReport(){ + public void submitMilestoneReport() { List proposalsIpfs = readerClient.cpsCore.getProposalsKeysByStatus(ACTIVE); - assertEquals(proposalsIpfs.size(),1); - assertEquals(proposalsIpfs.get(0),"Test_Proposal_1"); + assertEquals(proposalsIpfs.size(), 1); + assertEquals(proposalsIpfs.get(0), "Test_Proposal_1"); List> activeProposal = readerClient.cpsCore.getActiveProposals(testClient.getAddress()); - assertEquals( "0x0", activeProposal.get(0).get("new_progress_report")); + assertEquals("0x0", activeProposal.get(0).get("new_progress_report")); CPSCoreInterface.ProgressReportAttributes progressReportAttributes = createProgressReport("1", "Test_Proposal_1"); @@ -319,10 +321,11 @@ public void submitMilestoneReport(){ submission.status = true; CPSCoreInterface.MilestoneSubmission[] milestoneSubmissions = new CPSCoreInterface.MilestoneSubmission[]{submission}; - testClient.cpsCore.submitProgressReport(progressReportAttributes,milestoneSubmissions); + testClient.cpsCore.submitProgressReport(progressReportAttributes, milestoneSubmissions); activeProposal = readerClient.cpsCore.getActiveProposals(testClient.getAddress()); - assertEquals( "0x1", activeProposal.get(0).get("new_progress_report")); + assertEquals("0x1", activeProposal.get(0).get("new_progress_report")); + Map progressReportDetails = getProgressReportDetails("Test_Proposal_1_Report_Proposal_1"); assertEquals(1,toInt((String) progressReportDetails.get(MILESTONE_SUBMITTED_COUNT))); @@ -330,8 +333,9 @@ public void submitMilestoneReport(){ assertEquals("Test_Proposal_1_Report_1",progressReportDetails.get(PROGRESS_REPORT_TITLE)); assertEquals("Test_Proposal_1_Report_Proposal_1",progressReportDetails.get(REPORT_HASH)); - int milestoneStatus = getMilestoneStatus("Test_Proposal_1",1); - assertEquals(MILESTONE_REPORT_COMPLETED,milestoneStatus); + + int milestoneStatus = getMilestoneStatus("Test_Proposal_1", 1); + assertEquals(MILESTONE_REPORT_COMPLETED, milestoneStatus); } private ProgressReportAttributes createProgressReport(String no, String ipfsHash) { @@ -357,22 +361,25 @@ public void voteOnMilestone() throws InterruptedException { ownerClient.cpsCore.updatePeriod(); Thread.sleep(2000); - Map periodStatus = getPeriodStatus(); - assertEquals(periodStatus.get(PERIOD_NAME),"Voting Period"); + Map periodStatus = getPeriodStatus(); + assertEquals(periodStatus.get(PERIOD_NAME), "Voting Period"); - MilestoneVoteAttributes[] voteAttributes = new MilestoneVoteAttributes[]{vote(1,APPROVE)}; + MilestoneVoteAttributes[] voteAttributes = new MilestoneVoteAttributes[]{vote(1, APPROVE)}; - List> expectedMilestoneData = new ArrayList<>(7); + List> expectedMilestoneData = new ArrayList<>(7); for (int i = 0; i < cpsClients.size(); i++) { - cpsClients.get(i).cpsCore.voteProgressReport("Test_Proposal_1_Report_Proposal_1","Working well " + i, - voteAttributes,null,false); + + cpsClients.get(i).cpsCore.voteProgressReport("Test_Proposal_1_Report_Proposal_1", "Working well " + i, + voteAttributes, null, false); + expectedMilestoneData.add(Map.of( - ADDRESS,cpsClients.get(i).getAddress(), - PREP_NAME,cpsClients.get(i).getAddress(), - VOTE_REASON,"Working well "+ i, - VOTE,APPROVE)); + ADDRESS, cpsClients.get(i).getAddress(), + PREP_NAME, cpsClients.get(i).getAddress(), + VOTE_REASON, "Working well " + i, + VOTE, APPROVE)); } + Map progressReportVote = getProgressReportVote("Test_Proposal_1_Report_Proposal_1"); assertEquals(toInt((String) progressReportVote.get("total_voters")),7); @@ -380,32 +387,34 @@ public void voteOnMilestone() throws InterruptedException { assertEquals(toInt((String) milestoneVoteResult.get(APPROVE_VOTERS)),7); assertEquals(toInt((String) milestoneVoteResult.get(REJECT_VOTERS)),0); - List> actualMilestoneData = (List>) milestoneVoteResult.get(DATA); + + + List> actualMilestoneData = (List>) milestoneVoteResult.get(DATA); for (int i = 0; i < 7; i++) { - assertEquals(expectedMilestoneData.get(0).get(ADDRESS).toString(),actualMilestoneData.get(0).get(ADDRESS)); + assertEquals(expectedMilestoneData.get(0).get(ADDRESS).toString(), actualMilestoneData.get(0).get(ADDRESS)); } - int milestoneStatus = getMilestoneStatus("Test_Proposal_1",1); - assertEquals(MILESTONE_REPORT_COMPLETED,milestoneStatus); + int milestoneStatus = getMilestoneStatus("Test_Proposal_1", 1); + assertEquals(MILESTONE_REPORT_COMPLETED, milestoneStatus); } - private int getMilestoneStatus(String ipfsHash, int milestoneId){ - return readerClient.cpsCore.getMileststoneStatusOf(ipfsHash,milestoneId); + private int getMilestoneStatus(String ipfsHash, int milestoneId) { + return readerClient.cpsCore.getMileststoneStatusOf(ipfsHash, milestoneId); } - private Map getMilestoneReport(String reportHash, int milestoneId){ - return readerClient.cpsCore.getMilestoneVoteResult(reportHash,milestoneId); + private Map getMilestoneReport(String reportHash, int milestoneId) { + return readerClient.cpsCore.getMilestoneVoteResult(reportHash, milestoneId); } - private Map getProgressReportDetails(String reportHash){ + private Map getProgressReportDetails(String reportHash) { return readerClient.cpsCore.getProgressReportsByHash(reportHash); } - private Map getProgressReportVote(String reportHash){ + private Map getProgressReportVote(String reportHash) { return readerClient.cpsCore.getProgressReportResult(reportHash); } @@ -414,30 +423,29 @@ private Map getProgressReportVote(String reportHash){ @Order(10) public void submitAllMilestoneReport() throws InterruptedException { updateToApplicationPeriod(); - Map periodStatus = getPeriodStatus(); - assertEquals(periodStatus.get(PERIOD_NAME),"Application Period"); + Map periodStatus = getPeriodStatus(); + assertEquals(periodStatus.get(PERIOD_NAME), "Application Period"); - int milestoneStatus = getMilestoneStatus("Test_Proposal_1",1); - assertEquals(MILESTONE_REPORT_APPROVED,milestoneStatus); + int milestoneStatus = getMilestoneStatus("Test_Proposal_1", 1); + assertEquals(MILESTONE_REPORT_APPROVED, milestoneStatus); // verifying installment count and funds record - Map contributorProject = getContributorFunds(testClient.getAddress()); - List> contributorData = (List> )contributorProject.get("data"); - assertEquals(toBigInt((String) contributorData.get(0).get("installment_amount")),BigInteger.valueOf(40).multiply(ICX)); - assertEquals(toBigInt((String) contributorData.get(0).get("total_installment_paid")),BigInteger.valueOf(40).multiply(ICX)); - assertEquals( contributorData.get(0).get("total_times_installment_paid"),"0x1"); - assertEquals(contributorProject.get("project_count"),"0x1"); - assertEquals(toBigInt((String) contributorProject.get("withdraw_amount_bnUSD")),BigInteger.valueOf(40).multiply(ICX)); + Map contributorProject = getContributorFunds(testClient.getAddress()); + List> contributorData = (List>) contributorProject.get("data"); + assertEquals(toBigInt((String) contributorData.get(0).get("installment_amount")), BigInteger.valueOf(40).multiply(ICX)); + assertEquals(toBigInt((String) contributorData.get(0).get("total_installment_paid")), BigInteger.valueOf(40).multiply(ICX)); + assertEquals(contributorData.get(0).get("total_times_installment_paid"), "0x1"); + assertEquals(contributorProject.get("project_count"), "0x1"); + assertEquals(toBigInt((String) contributorProject.get("withdraw_amount_bnUSD")), BigInteger.valueOf(40).multiply(ICX)); - - Map sponsorProject = getSponsorFunds(cpsClients.get(0).getAddress()); - List> sponsorData = (List> )sponsorProject.get("data"); - assertEquals(toBigInt((String) sponsorData.get(0).get("installment_amount")),BigInteger.valueOf(6).multiply(ICX).divide(BigInteger.TEN)); - assertEquals(toBigInt((String) sponsorData.get(0).get("total_installment_paid")),BigInteger.valueOf(8).multiply(ICX).divide(BigInteger.TEN)); - assertEquals( sponsorData.get(0).get("total_times_installment_paid"),"0x1"); - assertEquals(toBigInt((String) sponsorProject.get("withdraw_amount_bnUSD")),BigInteger.valueOf(8).multiply(ICX).divide(BigInteger.TEN)); + Map sponsorProject = getSponsorFunds(cpsClients.get(0).getAddress()); + List> sponsorData = (List>) sponsorProject.get("data"); + assertEquals(toBigInt((String) sponsorData.get(0).get("installment_amount")), BigInteger.valueOf(6).multiply(ICX).divide(BigInteger.TEN)); + assertEquals(toBigInt((String) sponsorData.get(0).get("total_installment_paid")), BigInteger.valueOf(8).multiply(ICX).divide(BigInteger.TEN)); + assertEquals(sponsorData.get(0).get("total_times_installment_paid"), "0x1"); + assertEquals(toBigInt((String) sponsorProject.get("withdraw_amount_bnUSD")), BigInteger.valueOf(8).multiply(ICX).divide(BigInteger.TEN)); CPSCoreInterface.ProgressReportAttributes progressReportAttributes = createProgressReport("2", "Test_Proposal_1"); @@ -451,9 +459,10 @@ public void submitAllMilestoneReport() throws InterruptedException { submissionNo3.status = true; CPSCoreInterface.MilestoneSubmission[] milestoneSubmissions = new CPSCoreInterface.MilestoneSubmission[]{ - submissionNo2,submissionNo3}; + submissionNo2, submissionNo3}; + + testClient.cpsCore.submitProgressReport(progressReportAttributes, milestoneSubmissions); - testClient.cpsCore.submitProgressReport(progressReportAttributes,milestoneSubmissions); Map progressReportDetails = getProgressReportDetails("Test_Proposal_1_Report_Proposal_2"); @@ -463,6 +472,7 @@ public void submitAllMilestoneReport() throws InterruptedException { assertEquals("Test_Proposal_1_Report_2",progressReportDetails.get(PROGRESS_REPORT_TITLE)); assertEquals("Test_Proposal_1_Report_Proposal_2",progressReportDetails.get(REPORT_HASH)); + } @@ -475,22 +485,25 @@ public void voteOnAllMilestone() throws InterruptedException { ownerClient.cpsCore.updatePeriod(); Thread.sleep(2000); - Map periodStatus = getPeriodStatus(); - assertEquals(periodStatus.get(PERIOD_NAME),"Voting Period"); + Map periodStatus = getPeriodStatus(); + assertEquals(periodStatus.get(PERIOD_NAME), "Voting Period"); - MilestoneVoteAttributes[] voteAttributes = new MilestoneVoteAttributes[]{vote(2,APPROVE), vote(3,APPROVE)}; + MilestoneVoteAttributes[] voteAttributes = new MilestoneVoteAttributes[]{vote(2, APPROVE), vote(3, APPROVE)}; - List> expectedMilestoneData = new ArrayList<>(7); + List> expectedMilestoneData = new ArrayList<>(7); for (int i = 0; i < cpsClients.size(); i++) { + cpsClients.get(i).cpsCore.voteProgressReport("Test_Proposal_1_Report_Proposal_2","Project is completed " + i, voteAttributes,null,false); + expectedMilestoneData.add(Map.of( - ADDRESS,cpsClients.get(i).getAddress(), - PREP_NAME,cpsClients.get(i).getAddress(), - VOTE_REASON,"Project is completed "+ i, - VOTE,APPROVE)); + ADDRESS, cpsClients.get(i).getAddress(), + PREP_NAME, cpsClients.get(i).getAddress(), + VOTE_REASON, "Project is completed " + i, + VOTE, APPROVE)); } + Map progressReportVote = getProgressReportVote("Test_Proposal_1_Report_Proposal_2"); assertEquals(toInt((String) progressReportVote.get("total_voters")),7); @@ -498,20 +511,21 @@ public void voteOnAllMilestone() throws InterruptedException { assertEquals(toInt((String) milestoneVoteResult.get(APPROVE_VOTERS)),7); assertEquals(toInt((String) milestoneVoteResult.get(REJECT_VOTERS)),0); + // assertEquals(milestoneVoteResult.get(DATA),expectedMilestoneData); - List> actualMilestoneData = (List>) milestoneVoteResult.get(DATA); + List> actualMilestoneData = (List>) milestoneVoteResult.get(DATA); for (int i = 0; i < 7; i++) { - assertEquals(expectedMilestoneData.get(0).get(ADDRESS).toString(),actualMilestoneData.get(0).get(ADDRESS)); - assertEquals(expectedMilestoneData.get(0).get(PREP_NAME).toString(),actualMilestoneData.get(0).get(PREP_NAME)); - assertEquals(expectedMilestoneData.get(0).get(VOTE_REASON),actualMilestoneData.get(0).get(VOTE_REASON)); - assertEquals(expectedMilestoneData.get(0).get(VOTE),actualMilestoneData.get(0).get(VOTE)); + assertEquals(expectedMilestoneData.get(0).get(ADDRESS).toString(), actualMilestoneData.get(0).get(ADDRESS)); + assertEquals(expectedMilestoneData.get(0).get(PREP_NAME).toString(), actualMilestoneData.get(0).get(PREP_NAME)); + assertEquals(expectedMilestoneData.get(0).get(VOTE_REASON), actualMilestoneData.get(0).get(VOTE_REASON)); + assertEquals(expectedMilestoneData.get(0).get(VOTE), actualMilestoneData.get(0).get(VOTE)); } - int milestoneStatus = getMilestoneStatus("Test_Proposal_1",2); - assertEquals(MILESTONE_REPORT_COMPLETED,milestoneStatus); + int milestoneStatus = getMilestoneStatus("Test_Proposal_1", 2); + assertEquals(MILESTONE_REPORT_COMPLETED, milestoneStatus); } @@ -521,25 +535,25 @@ public void voteOnAllMilestone() throws InterruptedException { public void completeProposal1() throws InterruptedException { updateToApplicationPeriod(); - int milestoneStatus = getMilestoneStatus("Test_Proposal_1",3); - assertEquals(MILESTONE_REPORT_APPROVED,milestoneStatus); + int milestoneStatus = getMilestoneStatus("Test_Proposal_1", 3); + assertEquals(MILESTONE_REPORT_APPROVED, milestoneStatus); - milestoneStatus = getMilestoneStatus("Test_Proposal_1",2); - assertEquals(MILESTONE_REPORT_APPROVED,milestoneStatus); + milestoneStatus = getMilestoneStatus("Test_Proposal_1", 2); + assertEquals(MILESTONE_REPORT_APPROVED, milestoneStatus); List proposalsIpfs = readerClient.cpsCore.getProposalsKeysByStatus(COMPLETED); - assertEquals(proposalsIpfs.size(),1); - assertEquals(proposalsIpfs.get(0),"Test_Proposal_1"); + assertEquals(proposalsIpfs.size(), 1); + assertEquals(proposalsIpfs.get(0), "Test_Proposal_1"); - assertEquals(BigInteger.ZERO,readerClient.bnUSD.balanceOf(testClient.getAddress())); + assertEquals(BigInteger.ZERO, readerClient.bnUSD.balanceOf(testClient.getAddress())); testClient.cpsTreasury.claimReward(); - assertEquals(BigInteger.valueOf(100).multiply(ICX),readerClient.bnUSD.balanceOf(testClient.getAddress())); + assertEquals(BigInteger.valueOf(100).multiply(ICX), readerClient.bnUSD.balanceOf(testClient.getAddress())); CPSClient sponsorClient = cpsClients.get(0); - assertEquals(BigInteger.valueOf(35).multiply(ICX),readerClient.bnUSD.balanceOf(sponsorClient.getAddress())); + assertEquals(BigInteger.valueOf(35).multiply(ICX), readerClient.bnUSD.balanceOf(sponsorClient.getAddress())); sponsorClient.cpsTreasury.claimReward(); - assertEquals(BigInteger.valueOf(37).multiply(ICX),readerClient.bnUSD.balanceOf(sponsorClient.getAddress())); + assertEquals(BigInteger.valueOf(37).multiply(ICX), readerClient.bnUSD.balanceOf(sponsorClient.getAddress())); // sponsor bond is returned after completion of project sponsorClient.cpsCore.claimSponsorBond(); @@ -1645,7 +1659,7 @@ private void verifyPeriod(String period) { } - private MilestoneVoteAttributes vote(int id, String vote){ + private MilestoneVoteAttributes vote(int id, String vote) { MilestoneVoteAttributes milestoneVoteAttributes = new MilestoneVoteAttributes(); milestoneVoteAttributes.id = id; @@ -1654,7 +1668,6 @@ private MilestoneVoteAttributes vote(int id, String vote){ } - private void updateToApplicationPeriod() throws InterruptedException { updateNextBlock(); ownerClient.cpsCore.updatePeriod(); @@ -1673,18 +1686,17 @@ private Integer toInt(String inputString) { } - private void voteByPrep(CPSClient caller, String ipfsKey, String vote, String voteReason, - @Optional boolean voteChange){ + @Optional boolean voteChange) { - caller.cpsCore.voteProposal(ipfsKey,vote,voteReason,voteChange); + caller.cpsCore.voteProposal(ipfsKey, vote, voteReason, voteChange); } - private Map getProposalDetails(String ipfsHash){ + private Map getProposalDetails(String ipfsHash) { return readerClient.cpsCore.getProposalDetailsByHash(ipfsHash); } - private Map getProposalVote(String ipfsHash){ + private Map getProposalVote(String ipfsHash) { return readerClient.cpsCore.getVoteResult(ipfsHash); } @@ -1723,21 +1735,22 @@ private void bnUSDMint(Address to, BigInteger amount) { } - private Map getPeriodStatus(){ + private Map getPeriodStatus() { return readerClient.cpsCore.getPeriodStatus(); } - private Map loginPrep(Address prepAddress){ + private Map loginPrep(Address prepAddress) { return readerClient.cpsCore.loginPrep(prepAddress); } - private Map unregisteredPrepData(){ + private Map unregisteredPrepData() { return Map.of(IS_PREP, BigInteger.ONE, IS_REGISTERED, BigInteger.ZERO, PAY_PENALTY, BigInteger.ZERO, VOTING_PREP, BigInteger.ZERO); } + private Map normalPrepData(){ return Map.of(IS_PREP, BigInteger.ONE, IS_REGISTERED, BigInteger.ZERO, @@ -1752,7 +1765,7 @@ private Map votingPrepData(){ VOTING_PREP, BigInteger.ONE); } - private Map registerPrepData(){ + private Map registerPrepData() { return Map.of(IS_PREP, BigInteger.ONE, IS_REGISTERED, BigInteger.ONE, PAY_PENALTY, BigInteger.ZERO, diff --git a/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java b/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java index 5d7c5e64..e0cec7bd 100644 --- a/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java +++ b/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java @@ -119,7 +119,7 @@ public static class MilestoneVoteAttributes { void registerPrep(); @External(readonly = true) - boolean checkPriorityVoting(Address prep); + boolean checkPriorityVoting(Address _prep); @External(readonly = true) List sortPriorityProposals(); @@ -192,6 +192,9 @@ public static class MilestoneVoteAttributes { @External(readonly = true) List getProposalsKeysByStatus(String _status); + @External(readonly = true) + Map getMilestonesReport(String ipfsKey, int milestoneId); + @External(readonly = true) int checkChangeVote(Address address, String ipfsHash, String proposalType); @@ -254,6 +257,9 @@ public static class MilestoneVoteAttributes { @External void updateNextBlock(int blockCount); + @External(readonly = true) + List> getRemainingProject(String projectType, Address walletAddress); + @External void updateContributor(String _ipfs_key, Address _new_contributor, Address _new_sponsor); diff --git a/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/CPSCoreInterface.java b/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/CPSCoreInterface.java index 00a9f17a..a586c1aa 100644 --- a/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/CPSCoreInterface.java +++ b/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/CPSCoreInterface.java @@ -119,7 +119,7 @@ public static class MilestoneVoteAttributes { void registerPrep(); @External(readonly = true) - boolean checkPriorityVoting(Address prep); + boolean checkPriorityVoting(Address _prep); @External(readonly = true) List sortPriorityProposals(); @@ -204,6 +204,9 @@ public static class MilestoneVoteAttributes { @External(readonly = true) int getMileststoneStatusOf(String proposalKey, int milestoneId); + @External(readonly = true) + Map getMilestonesReport(String ipfsKey, int milestoneId); + @External(readonly = true) int checkChangeVote(Address address, String ipfsHash, String proposalType); @@ -269,6 +272,9 @@ public static class MilestoneVoteAttributes { @External void updateNextBlock(int blockCount); + @External(readonly = true) + List> getRemainingProject(String projectType, Address walletAddress); + @External void updateContributor(String _ipfs_key, Address _new_contributor, Address _new_sponsor); diff --git a/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/sICX.java b/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/sICX.java index e63bbc29..0c130669 100644 --- a/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/sICX.java +++ b/test-lib/src/main/java/community/icon/cps/score/test/integration/scores/sICX.java @@ -3,13 +3,23 @@ import score.Address; import score.annotation.External; +import score.annotation.Optional; + + import java.math.BigInteger; public interface sICX { @External + void mintWithTokenFallBack(Address _to, BigInteger _amount, byte[] _data); @External(readonly = true) BigInteger balanceOf(Address _owner); + + void mintTo(Address _account, BigInteger _amount); + + @External + void transfer(Address _to, BigInteger _value, @Optional byte[] _data); + }