Add methods for creating auctions and add auction tests #28

Merged
nabarun merged 32 commits from deep-stack/registry-sdk:iv-create-auction-test into main 2024-09-25 13:21:05 +00:00
Showing only changes of commit 60a2174a53 - Show all commits

View File

@ -163,6 +163,7 @@ const providerAuctionTestsWithBids = (bidAmounts: number[], numProviders: number
let auctionCreatorAccount: { address: string, privateKey: string }; let auctionCreatorAccount: { address: string, privateKey: string };
let bidderAccounts: { address: string, privateKey: string, bid?: any }[] = []; let bidderAccounts: { address: string, privateKey: string, bid?: any }[] = [];
let sortedBidders: { address: string, privateKey: string, bid?: any }[] = []; let sortedBidders: { address: string, privateKey: string, bid?: any }[] = [];
let filteredBidders: { address: string, privateKey: string, bid?: any }[] = [];
let invalidBidderAddresses: string[] = []; let invalidBidderAddresses: string[] = [];
const numBidders = bidAmounts.length; const numBidders = bidAmounts.length;
@ -294,24 +295,47 @@ const providerAuctionTestsWithBids = (bidAmounts: number[], numProviders: number
setTimeout(done, waitTime); setTimeout(done, waitTime);
}); });
test('Check auction winner, status, and all bidder balances.', async () => { test('Check auction status, winners and creator balance.', async () => {
const [auction] = await registry.getAuctionsByIds([auctionId]); const [auction] = await registry.getAuctionsByIds([auctionId]);
expect(auction.status).toEqual('completed'); expect(auction.status).toEqual('completed');
// Filter bidders to exclude bids exceeding maxPrice // Filter bidders to exclude bids exceeding maxPrice
const filteredBidders = sortedBidders.filter(bidder => { filteredBidders = sortedBidders.filter(bidder => {
return parseInt(bidder.bid.reveal.bidAmount) <= parseInt(`${maxPrice}${DENOM}`); return parseInt(bidder.bid.reveal.bidAmount) <= parseInt(`${maxPrice}${DENOM}`);
}); });
const numWinners = Math.min(filteredBidders.length, numProviders); const numWinners = Math.min(filteredBidders.length, numProviders);
const winningBidders = filteredBidders.slice(0, numWinners); const winningBidders = filteredBidders.slice(0, numWinners);
const losingBidders = bidderAccounts.filter(bidder => !winningBidders.includes(bidder));
// Check winner price is equal to highest winning bid // Check winner price is equal to highest winning bid
const winningBidAmount = parseInt(auction.winnerPrice.quantity);
const expectedWinningPrice = winningBidders[numWinners - 1].bid.reveal.bidAmount; const expectedWinningPrice = winningBidders[numWinners - 1].bid.reveal.bidAmount;
expect(`${auction.winnerPrice.quantity}${auction.winnerPrice.type}`).toEqual(expectedWinningPrice); expect(`${auction.winnerPrice.quantity}${auction.winnerPrice.type}`).toEqual(expectedWinningPrice);
const [creatorAccountObj] = await registry.getAccounts([auctionCreatorAccount.address]);
expect(creatorAccountObj).toBeDefined();
const [{ type, quantity }] = creatorAccountObj.balance;
const actualBalance = parseInt(quantity);
// Check auction creator balance
const totalWinningAmount = parseInt(auction.winnerPrice.quantity) * winningBidders.length;
const expectedCreatorBalance = creatorInitialBalance - totalWinningAmount - txFees;
expect(actualBalance).toBe(expectedCreatorBalance);
expect(type).toBe(DENOM);
});
test('Release funds and check provider balances.', async () => {
const [auction] = await registry.getAuctionsByIds([auctionId]);
const numWinners = Math.min(filteredBidders.length, numProviders);
const winningBidders = filteredBidders.slice(0, numWinners);
const losingBidders = bidderAccounts.filter(bidder => !winningBidders.includes(bidder));
const winningBidAmount = parseInt(auction.winnerPrice.quantity);
// Release funds
await registry.releaseFunds({ auctionId }, auctionCreatorAccount.privateKey, fee);
// Check balances of auction winners // Check balances of auction winners
for (let i = 0; i < winningBidders.length; i++) { for (let i = 0; i < winningBidders.length; i++) {
const bidWinner = winningBidders[i]; const bidWinner = winningBidders[i];
@ -351,18 +375,6 @@ const providerAuctionTestsWithBids = (bidAmounts: number[], numProviders: number
expect(actualBalance).toBe(expectedBidderBalance); expect(actualBalance).toBe(expectedBidderBalance);
expect(type).toBe(DENOM); expect(type).toBe(DENOM);
} }
const [creatorAccountObj] = await registry.getAccounts([auctionCreatorAccount.address]);
expect(creatorAccountObj).toBeDefined();
const [{ type, quantity }] = creatorAccountObj.balance;
const actualBalance = parseInt(quantity);
// Check auction creator balance
const totalWinningAmount = parseInt(auction.winnerPrice.quantity) * winningBidders.length;
const expectedCreatorBalance = creatorInitialBalance - totalWinningAmount - txFees;
expect(actualBalance).toBe(expectedCreatorBalance);
expect(type).toBe(DENOM);
}); });
}; };