Skip to content
Closed
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
4 changes: 4 additions & 0 deletions src/contracts/QRaffle.h
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ struct QRAFFLE : public ContractBase
uint64 entryAmount;
uint32 numberOfMembers;
uint32 winnerIndex;
uint32 numberOfDaoMembers; // Number of DAO members (registers) at this epoch
sint32 returnCode;
};

Expand Down Expand Up @@ -406,6 +407,7 @@ struct QRAFFLE : public ContractBase
uint64 entryAmount;
uint32 numberOfMembers;
uint32 winnerIndex;
uint32 numberOfDaoMembers; // Number of DAO members (registers) at this epoch
};
Array <QuRaffleInfo, QRAFFLE_MAX_EPOCH> QuRaffles;
struct TokenRaffleInfo
Expand Down Expand Up @@ -1109,6 +1111,7 @@ struct QRAFFLE : public ContractBase
output.entryAmount = state.QuRaffles.get(input.epoch).entryAmount;
output.numberOfMembers = state.QuRaffles.get(input.epoch).numberOfMembers;
output.winnerIndex = state.QuRaffles.get(input.epoch).winnerIndex;
output.numberOfDaoMembers = state.QuRaffles.get(input.epoch).numberOfDaoMembers;
output.returnCode = QRAFFLE_SUCCESS;
}

Expand Down Expand Up @@ -1310,6 +1313,7 @@ struct QRAFFLE : public ContractBase
locals.qraffle.entryAmount = state.qREAmount;
locals.qraffle.numberOfMembers = state.numberOfQuRaffleMembers;
locals.qraffle.winnerIndex = locals.winnerIndex;
locals.qraffle.numberOfDaoMembers = state.numberOfRegisters; // Store DAO member count for this epoch
state.QuRaffles.set(qpi.epoch(), locals.qraffle);

// Log QuRaffle completion with detailed information
Expand Down
9 changes: 7 additions & 2 deletions test/contract_qraffle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,15 @@ class QRaffleChecker : public QRAFFLE
}

void quRaffleWinnerChecker(uint16 epoch, const id& expectedWinner, uint64 expectedReceived,
uint64 expectedEntryAmount, uint32 expectedMembers, uint32 expectedWinnerIndex)
uint64 expectedEntryAmount, uint32 expectedMembers, uint32 expectedWinnerIndex,
uint32 expectedDaoMembers)
{
EXPECT_EQ(QuRaffles.get(epoch).epochWinner, expectedWinner);
EXPECT_EQ(QuRaffles.get(epoch).receivedAmount, expectedReceived);
EXPECT_EQ(QuRaffles.get(epoch).entryAmount, expectedEntryAmount);
EXPECT_EQ(QuRaffles.get(epoch).numberOfMembers, expectedMembers);
EXPECT_EQ(QuRaffles.get(epoch).winnerIndex, expectedWinnerIndex);
EXPECT_EQ(QuRaffles.get(epoch).numberOfDaoMembers, expectedDaoMembers);
}

uint64 getQuRaffleEntryAmount()
Expand Down Expand Up @@ -1053,6 +1055,8 @@ TEST(ContractQraffle, GetFunctions)
EXPECT_GT(endedQuRaffle.receivedAmount, 0);
EXPECT_EQ(endedQuRaffle.entryAmount, 10000000);
EXPECT_EQ(endedQuRaffle.numberOfMembers, memberCount);
EXPECT_GT(endedQuRaffle.numberOfDaoMembers, 0); // NEW: Verify DAO members stored
EXPECT_EQ(endedQuRaffle.numberOfDaoMembers, qraffle.getState()->getNumberOfRegisters()); // NEW: Match current count

// Test with future epoch
auto futureQuRaffle = qraffle.getEndedQuRaffle(1);
Expand Down Expand Up @@ -1167,7 +1171,8 @@ TEST(ContractQraffle, EndEpoch)
auto quRaffle = qraffle.getEndedQuRaffle(0);
EXPECT_EQ(quRaffle.returnCode, QRAFFLE_SUCCESS);
qraffle.getState()->quRaffleWinnerChecker(0, quRaffle.epochWinner, quRaffle.receivedAmount,
quRaffle.entryAmount, quRaffle.numberOfMembers, quRaffle.winnerIndex);
quRaffle.entryAmount, quRaffle.numberOfMembers, quRaffle.winnerIndex,
quRaffle.numberOfDaoMembers);

qraffle.endEpoch();
// Check that token raffles were processed
Expand Down