feat(governance): lp vote now reflected on proposal cards (#3256)
This commit is contained in:
parent
868f8e21dc
commit
8214858685
@ -341,7 +341,7 @@ context(
|
||||
'Currently expected to pass'
|
||||
);
|
||||
getProposalInformationFromTable('Expected to pass')
|
||||
.contains('👍 by Token vote')
|
||||
.contains('👍 by token vote')
|
||||
.should('be.visible');
|
||||
});
|
||||
|
||||
|
@ -221,8 +221,9 @@
|
||||
"votePending": "Casting vote",
|
||||
"voteError": "Something went wrong, and your vote was not seen by the network",
|
||||
"back": "back",
|
||||
"byTokenVote": "by Token vote",
|
||||
"byLiquidityVote": "by Liquidity vote",
|
||||
"byTokenVote": "by token vote",
|
||||
"byLiquidityVote": "by liquidity vote",
|
||||
"byLPVote": "by LP vote",
|
||||
"youDidNotVote": "Voting has ended. You did not vote",
|
||||
"voteState_Yes": "For",
|
||||
"voteState_No": "Against",
|
||||
|
@ -86,7 +86,7 @@ describe('Proposal Votes Table', () => {
|
||||
|
||||
it('displays if an update market proposal will pass by token vote', () => {
|
||||
renderComponent(updateMarketProposal, updateMarketProposalType);
|
||||
expect(screen.getByText('👍 by Token vote')).toBeInTheDocument();
|
||||
expect(screen.getByText('👍 by token vote')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('displays if an update market proposal will pass by LP vote', () => {
|
||||
@ -110,6 +110,6 @@ describe('Proposal Votes Table', () => {
|
||||
}),
|
||||
updateMarketProposalType
|
||||
);
|
||||
expect(screen.getByText('👍 by Liquidity vote')).toBeInTheDocument();
|
||||
expect(screen.getByText('👍 by liquidity vote')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
@ -136,6 +136,82 @@ describe('Proposals list item details', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('Renders proposal state: Update market proposal - set to pass by LP vote', () => {
|
||||
renderComponent(
|
||||
generateProposal({
|
||||
state: ProposalState.STATE_OPEN,
|
||||
terms: {
|
||||
change: {
|
||||
__typename: 'UpdateMarket',
|
||||
},
|
||||
},
|
||||
votes: {
|
||||
yes: {
|
||||
...generateYesVotes(0),
|
||||
totalEquityLikeShareWeight: '1000',
|
||||
},
|
||||
no: {
|
||||
...generateNoVotes(0),
|
||||
totalEquityLikeShareWeight: '0',
|
||||
},
|
||||
},
|
||||
})
|
||||
);
|
||||
expect(screen.getByTestId('vote-status')).toHaveTextContent(
|
||||
'Set to pass by LP vote'
|
||||
);
|
||||
});
|
||||
|
||||
it('Renders proposal state: Update market proposal - set to pass by token vote', () => {
|
||||
renderComponent(
|
||||
generateProposal({
|
||||
state: ProposalState.STATE_OPEN,
|
||||
terms: {
|
||||
change: {
|
||||
__typename: 'UpdateMarket',
|
||||
},
|
||||
},
|
||||
votes: {
|
||||
yes: {
|
||||
...generateYesVotes(1000, 1000),
|
||||
totalEquityLikeShareWeight: '0',
|
||||
},
|
||||
no: {
|
||||
...generateNoVotes(0),
|
||||
totalEquityLikeShareWeight: '0',
|
||||
},
|
||||
},
|
||||
})
|
||||
);
|
||||
expect(screen.getByTestId('vote-status')).toHaveTextContent(
|
||||
'Set to pass by token vote'
|
||||
);
|
||||
});
|
||||
|
||||
it('Renders proposal state: Update market proposal - set to fail', () => {
|
||||
renderComponent(
|
||||
generateProposal({
|
||||
state: ProposalState.STATE_OPEN,
|
||||
terms: {
|
||||
change: {
|
||||
__typename: 'UpdateMarket',
|
||||
},
|
||||
},
|
||||
votes: {
|
||||
yes: {
|
||||
...generateYesVotes(0),
|
||||
totalEquityLikeShareWeight: '0',
|
||||
},
|
||||
no: {
|
||||
...generateNoVotes(0),
|
||||
totalEquityLikeShareWeight: '0',
|
||||
},
|
||||
},
|
||||
})
|
||||
);
|
||||
expect(screen.getByTestId('vote-status')).toHaveTextContent('Set to fail');
|
||||
});
|
||||
|
||||
it('Renders proposal state: Open - 5 minutes left to vote', () => {
|
||||
renderComponent(
|
||||
generateProposal({
|
||||
|
@ -41,12 +41,22 @@ export const ProposalsListItemDetails = ({
|
||||
proposal: ProposalFieldsFragment | ProposalQuery['proposal'];
|
||||
}) => {
|
||||
const state = proposal?.state;
|
||||
const { willPassByTokenVote, majorityMet, participationMet } =
|
||||
useVoteInformation({
|
||||
const {
|
||||
willPassByTokenVote,
|
||||
willPassByLPVote,
|
||||
majorityMet,
|
||||
participationMet,
|
||||
} = useVoteInformation({
|
||||
proposal,
|
||||
});
|
||||
const { t } = useTranslation();
|
||||
const { voteState } = useUserVote(proposal?.id);
|
||||
const isUpdateMarket = proposal?.terms.change.__typename === 'UpdateMarket';
|
||||
const updateMarketWillPass = willPassByTokenVote || willPassByLPVote;
|
||||
const updateMarketVotePassMethod = willPassByTokenVote
|
||||
? t('byTokenVote')
|
||||
: t('byLPVote');
|
||||
|
||||
let proposalStatus: ReactNode;
|
||||
let voteDetails: ReactNode;
|
||||
let voteStatus: ReactNode;
|
||||
@ -128,6 +138,19 @@ export const ProposalsListItemDetails = ({
|
||||
</>
|
||||
);
|
||||
voteStatus =
|
||||
(isUpdateMarket &&
|
||||
(updateMarketWillPass ? (
|
||||
<>
|
||||
{t('Set to')}{' '}
|
||||
<StatusPass>
|
||||
{t('pass')} {updateMarketVotePassMethod}
|
||||
</StatusPass>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
{t('Set to')} <StatusFail>{t('fail')}</StatusFail>
|
||||
</>
|
||||
))) ||
|
||||
(!participationMet && <ParticipationNotReached />) ||
|
||||
(!majorityMet && <MajorityNotReached />) ||
|
||||
(willPassByTokenVote ? (
|
||||
|
@ -32,6 +32,7 @@ export const VoteDetails = ({
|
||||
totalTokensPercentage,
|
||||
participationMet,
|
||||
totalTokensVoted,
|
||||
totalLPTokensPercentage,
|
||||
noPercentage,
|
||||
noLPPercentage,
|
||||
yesPercentage,
|
||||
@ -41,6 +42,8 @@ export const VoteDetails = ({
|
||||
requiredMajorityPercentage,
|
||||
requiredMajorityLPPercentage,
|
||||
requiredParticipation,
|
||||
requiredParticipationLP,
|
||||
participationLPMet,
|
||||
} = useVoteInformation({ proposal });
|
||||
|
||||
const { t } = useTranslation();
|
||||
@ -101,6 +104,25 @@ export const VoteDetails = ({
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p className="mb-6">
|
||||
{t('participation')}
|
||||
{': '}
|
||||
{participationLPMet ? (
|
||||
<span className="text-vega-green mx-4">{t('met')}</span>
|
||||
) : (
|
||||
<span className="text-danger mx-4">{t('notMet')}</span>
|
||||
)}{' '}
|
||||
{formatNumber(totalLPTokensPercentage, defaultDecimals)}%
|
||||
<span className="ml-4">
|
||||
{requiredParticipationLP && (
|
||||
<>
|
||||
({formatNumber(requiredParticipationLP, defaultDecimals)}%{' '}
|
||||
{t('governanceRequired')})
|
||||
</>
|
||||
)}
|
||||
</span>
|
||||
</p>
|
||||
</section>
|
||||
)}
|
||||
<section data-testid="votes-table">
|
||||
|
Loading…
Reference in New Issue
Block a user