Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions script/DeployDirectDemocracyOrg.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,18 @@ contract DeployDirectDemocracyOrg {
params.contractNames[3] = "Treasury";
params.contractNames[4] = "DirectDemocracyVoting";
params.contractNames[5] = "TaskManager";
params.contractNames[6] = "QuickJoin";

// Add ElectionContract if electionEnabled is true
uint256 nextIndex = 7;
uint256 nextIndex = 6;
if (electionEnabled) {
params.contractNames[nextIndex++] = "ElectionContract";
}

// Add EducationHub if educationHubEnabled is true
if (educationHubEnabled) {
params.contractNames[nextIndex] = "EducationHub";
params.contractNames[nextIndex++] = "EducationHub";
}
params.contractNames[nextIndex] = "QuickJoin";

// Deploy the organization and return the registry address
address registryAddress = masterFactory.deployAll(params);
Expand Down
7 changes: 4 additions & 3 deletions script/DeployHybridOrg.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,20 @@ contract DeployHybridOrg {
params.contractNames[4] = "DirectDemocracyVoting";
params.contractNames[5] = "HybridVoting";
params.contractNames[6] = "TaskManager";
params.contractNames[7] = "QuickJoin";

// Add ElectionContract if electionEnabled is true
uint256 nextIndex = 8;
uint256 nextIndex = 7;
if (electionEnabled) {
params.contractNames[nextIndex++] = "ElectionContract";
}

// Add EducationHub if educationHubEnabled is true
if (educationHubEnabled) {
params.contractNames[nextIndex] = "EducationHub";
params.contractNames[nextIndex++] = "EducationHub";
}

params.contractNames[nextIndex] = "QuickJoin";

MasterFactory masterFactory = MasterFactory(_masterFactory);
address registryAddress = masterFactory.deployAll(params);
return registryAddress;
Expand Down
7 changes: 4 additions & 3 deletions script/DeployParticipationOrg.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,20 @@ contract DeployParticipationOrg {
params.contractNames[4] = "DirectDemocracyVoting";
params.contractNames[5] = "ParticipationVoting";
params.contractNames[6] = "TaskManager";
params.contractNames[7] = "QuickJoin";

// Add ElectionContract if electionEnabled is true
uint256 nextIndex = 8;
uint256 nextIndex = 7;
if (electionEnabled) {
params.contractNames[nextIndex++] = "ElectionContract";
}

// Add EducationHub if educationHubEnabled is true
if (educationHubEnabled) {
params.contractNames[nextIndex] = "EducationHub";
params.contractNames[nextIndex++] = "EducationHub";
}

params.contractNames[nextIndex] = "QuickJoin";

MasterFactory masterFactory = MasterFactory(_masterFactory);
address registryAddress = masterFactory.deployAll(params);
return registryAddress;
Expand Down
77 changes: 77 additions & 0 deletions test/deployAllOrgTypes.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ contract TestAllOrgTypes is Test {
checkContractAddresses(directDemocracyRegistryAddress, "DirectDemocracyWithElection");
}

function testDeployDirectDemocracyWithEducation() public {
DeployDirectDemocracyOrg deployDirectDemocracyOrg = new DeployDirectDemocracyOrg();

directDemocracyRegistryAddress = deployDirectDemocracyOrg.run(address(masterFactory), false, true);

checkContractAddresses(directDemocracyRegistryAddress, "DirectDemocracyWithEducation");
}

function testDeployHybridVotingWithEducationHub() public {
DeployHybridOrg deployHybridOrg = new DeployHybridOrg();

Expand All @@ -76,6 +84,24 @@ contract TestAllOrgTypes is Test {
checkContractAddresses(hybridVotingRegistryAddress, "HybridVotingWithEducationHub");
}

function testDeployHybridVotingWithElectionHub() public {
DeployHybridOrg deployHybridOrg = new DeployHybridOrg();
hybridVotingRegistryAddress = deployHybridOrg.run(address(masterFactory), true, false);
checkContractAddresses(hybridVotingRegistryAddress, "HybridVotingWithElectionHub");
}

function testDeployParticipationVotingWithElection() public {
DeployParticipationOrg deployParticipationOrg = new DeployParticipationOrg();
participationVotingRegistryAddress = deployParticipationOrg.run(address(masterFactory), true, false);
checkContractAddresses(participationVotingRegistryAddress, "ParticipationVotingWithElection");
}

function testDeployParticipationVotingWithEducation() public {
DeployParticipationOrg deployParticipationOrg = new DeployParticipationOrg();
participationVotingRegistryAddress = deployParticipationOrg.run(address(masterFactory), false, true);
checkContractAddresses(participationVotingRegistryAddress, "ParticipationVotingWithEducation");
}

function checkContractAddresses(address registryAddress, string memory deploymentType) internal view {
Registry registry = Registry(registryAddress);

Expand Down Expand Up @@ -125,6 +151,19 @@ contract TestAllOrgTypes is Test {
assertTrue(directDemocracyVoting != address(0), "DirectDemocracyVoting address is invalid");
assertTrue(electionContract == address(0), "ElectionContract should not be deployed");
assertTrue(educationHub == address(0), "EducationHub should not be deployed");
} else if (
keccak256(abi.encodePacked(deploymentType)) == keccak256(abi.encodePacked("HybridVotingWithElectionHub"))
) {
assertTrue(nftMembership != address(0), "NFTMembership address is invalid");
assertTrue(directDemocracyToken != address(0), "DirectDemocracyToken address is invalid");
assertTrue(participationToken != address(0), "ParticipationToken address is invalid");
assertTrue(treasury != address(0), "Treasury address is invalid");
assertTrue(hybridVotingAddress != address(0), "HybridVoting address is invalid");
assertTrue(taskManager != address(0), "TaskManager address is invalid");
assertTrue(quickJoin != address(0), "QuickJoin address is invalid");
assertTrue(directDemocracyVoting != address(0), "DirectDemocracyVoting address is invalid");
assertTrue(electionContract != address(0), "ElectionHub address is invalid");
assertTrue(educationHub == address(0), "EducationContract should not be deployed");
} else if (
keccak256(abi.encodePacked(deploymentType)) == keccak256(abi.encodePacked("DirectDemocracyWithElection"))
) {
Expand All @@ -137,6 +176,18 @@ contract TestAllOrgTypes is Test {
assertTrue(participationToken != address(0), "ParticipationToken address is invalid");
assertTrue(electionContract != address(0), "ElectionContract address is invalid");
assertTrue(educationHub == address(0), "EducationHub should not be deployed");
} else if (
keccak256(abi.encodePacked(deploymentType)) == keccak256(abi.encodePacked("DirectDemocracyWithEducation"))
) {
assertTrue(nftMembership != address(0), "NFTMembership address is invalid");
assertTrue(directDemocracyToken != address(0), "DirectDemocracyToken address is invalid");
assertTrue(treasury != address(0), "Treasury address is invalid");
assertTrue(directDemocracyVoting != address(0), "DirectDemocracyVoting address is invalid");
assertTrue(taskManager != address(0), "TaskManager address is invalid");
assertTrue(quickJoin != address(0), "QuickJoin address is invalid");
assertTrue(participationToken != address(0), "ParticipationToken address is invalid");
assertTrue(electionContract == address(0), "ElectionContract should not be deployed");
assertTrue(educationHub != address(0), "EducationHub address is invalid");
} else if (
keccak256(abi.encodePacked(deploymentType)) == keccak256(abi.encodePacked("HybridVotingWithEducationHub"))
) {
Expand All @@ -150,6 +201,32 @@ contract TestAllOrgTypes is Test {
assertTrue(directDemocracyVoting != address(0), "DirectDemocracyVoting address is invalid");
assertTrue(electionContract == address(0), "ElectionContract should not be deployed");
assertTrue(educationHub != address(0), "EducationHub address is invalid");
} else if (
keccak256(abi.encodePacked(deploymentType))
== keccak256(abi.encodePacked("ParticipationVotingWithEducation"))
) {
assertTrue(nftMembership != address(0), "NFTMembership address is invalid");
assertTrue(participationToken != address(0), "ParticipationToken address is invalid");
assertTrue(treasury != address(0), "Treasury address is invalid");
assertTrue(participationVoting != address(0), "ParticipationVoting address is invalid");
assertTrue(taskManager != address(0), "TaskManager address is invalid");
assertTrue(quickJoin != address(0), "QuickJoin address is invalid");
assertTrue(directDemocracyVoting != address(0), "DirectDemocracyVoting address is invalid");
assertTrue(electionContract == address(0), "ElectionContract should not be deployed");
assertTrue(educationHub != address(0), "EducationHub address is invalid");
} else if (
keccak256(abi.encodePacked(deploymentType))
== keccak256(abi.encodePacked("ParticipationVotingWithElection"))
) {
assertTrue(nftMembership != address(0), "NFTMembership address is invalid");
assertTrue(participationToken != address(0), "ParticipationToken address is invalid");
assertTrue(treasury != address(0), "Treasury address is invalid");
assertTrue(participationVoting != address(0), "ParticipationVoting address is invalid");
assertTrue(taskManager != address(0), "TaskManager address is invalid");
assertTrue(quickJoin != address(0), "QuickJoin address is invalid");
assertTrue(directDemocracyVoting != address(0), "DirectDemocracyVoting address is invalid");
assertTrue(electionContract != address(0), "ElectionContract address is invalid");
assertTrue(educationHub == address(0), "EducationHub should not be deployed");
} else {
revert("Invalid deployment type");
}
Expand Down
Loading