fix(governance): proposal deadline validation missing (#4150)

This commit is contained in:
Sam Keen 2023-06-20 23:55:45 +01:00 committed by GitHub
parent cabd99d3ef
commit ce3da97a8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 108 additions and 24 deletions

View File

@ -731,7 +731,11 @@
"ThisWillSetValidationDeadlineTo": "This will set the validation deadline to", "ThisWillSetValidationDeadlineTo": "This will set the validation deadline to",
"Hours": "hours", "Hours": "hours",
"ThisWillAdd2MinutesToAllowTimeToConfirmInWallet": "Note: 2 minutes of extra time are added when you choose the minimum value. This gives you time to confirm the proposal in your wallet.", "ThisWillAdd2MinutesToAllowTimeToConfirmInWallet": "Note: 2 minutes of extra time are added when you choose the minimum value. This gives you time to confirm the proposal in your wallet.",
"ProposalWillFailIfEnactmentIsEarlierThanVotingDeadline": "Proposal will fail if enactment is earlier than the voting deadline", "ProposalWillFailIfEnactmentIsEarlierThanVotingDeadline": "The proposal will fail if enactment is earlier than the voting deadline",
"ProposalWillFailIfEnactmentIsBelowTheMinimumDeadline": "The proposal will fail if enactment deadline is below the minimum",
"ProposalWillFailIfVotingIsBelowTheMinimumDeadline": "The proposal will fail if voting deadline is below the minimum",
"ProposalWillFailIfEnactmentIsAboveTheMaximumDeadline": "The proposal will fail if enactment deadline is above the maximum",
"ProposalWillFailIfVotingIsAboveTheMaximumDeadline": "The proposal will fail if voting deadline is above the maximum",
"SelectAMarketToChange": "Select a market to change", "SelectAMarketToChange": "Select a market to change",
"MarketName": "Market name", "MarketName": "Market name",
"MarketCode": "Market code", "MarketCode": "Market code",

View File

@ -224,7 +224,47 @@ describe('Proposal form vote, validation and enactment deadline', () => {
expect( expect(
screen.getByTestId('enactment-before-voting-deadline') screen.getByTestId('enactment-before-voting-deadline')
).toHaveTextContent( ).toHaveTextContent(
'Proposal will fail if enactment is earlier than the voting deadline' 'The proposal will fail if enactment is earlier than the voting deadline'
);
});
it('displays error text if the vote deadline is set earlier than the minimum allowed', () => {
renderComponent();
const voteDeadlineInput = screen.getByTestId('proposal-vote-deadline');
fireEvent.change(voteDeadlineInput, { target: { value: 0.01 } });
expect(screen.getByTestId('voting-less-than-min')).toHaveTextContent(
'The proposal will fail if voting deadline is below the minimum'
);
});
it('displays error text if the vote deadline is set later than the maximum allowed', () => {
renderComponent();
const voteDeadlineInput = screen.getByTestId('proposal-vote-deadline');
fireEvent.change(voteDeadlineInput, { target: { value: 100000 } });
expect(screen.getByTestId('voting-greater-than-max')).toHaveTextContent(
'The proposal will fail if voting deadline is above the maximum'
);
});
it('displays error text if the enactment deadline is set earlier than the minimum allowed', () => {
renderComponent();
const enactmentDeadlineInput = screen.getByTestId(
'proposal-enactment-deadline'
);
fireEvent.change(enactmentDeadlineInput, { target: { value: 0.01 } });
expect(screen.getByTestId('enactment-less-than-min')).toHaveTextContent(
'The proposal will fail if enactment deadline is below the minimum'
);
});
it('displays error text if the enactment deadline is set later than the maximum allowed', () => {
renderComponent();
const enactmentDeadlineInput = screen.getByTestId(
'proposal-enactment-deadline'
);
fireEvent.change(enactmentDeadlineInput, { target: { value: 100000 } });
expect(screen.getByTestId('enactment-greater-than-max')).toHaveTextContent(
'The proposal will fail if enactment deadline is above the maximum'
); );
}); });
}); });

View File

@ -220,21 +220,41 @@ const EnactmentForm = ({
<span data-testid="enactment-date" className="pl-2"> <span data-testid="enactment-date" className="pl-2">
{getDateTimeFormat().format(deadlineDates.enactment)} {getDateTimeFormat().format(deadlineDates.enactment)}
</span> </span>
{deadlines.enactment === minEnactmentHours && ( {deadlines.enactment && (
<span <>
data-testid="enactment-2-mins-extra" {deadlines.enactment === minEnactmentHours && (
className="block mt-4 font-light" <span
> data-testid="enactment-2-mins-extra"
{t('ThisWillAdd2MinutesToAllowTimeToConfirmInWallet')} className="block mt-4 font-light"
</span> >
)} {t('ThisWillAdd2MinutesToAllowTimeToConfirmInWallet')}
{deadlines.enactment && deadlines.enactment < deadlines.vote && ( </span>
<span )}
data-testid="enactment-before-voting-deadline" {deadlines.enactment < deadlines.vote && (
className="block mt-4 text-vega-pink" <span
> data-testid="enactment-before-voting-deadline"
{t('ProposalWillFailIfEnactmentIsEarlierThanVotingDeadline')} className="block mt-4 text-vega-pink"
</span> >
{t('ProposalWillFailIfEnactmentIsEarlierThanVotingDeadline')}
</span>
)}
{deadlines.enactment < minEnactmentHours && (
<span
data-testid="enactment-less-than-min"
className="block mt-4 text-vega-pink"
>
{t('ProposalWillFailIfEnactmentIsBelowTheMinimumDeadline')}
</span>
)}
{deadlines.enactment > maxEnactmentHours && (
<span
data-testid="enactment-greater-than-max"
className="block mt-4 text-vega-pink"
>
{t('ProposalWillFailIfEnactmentIsAboveTheMaximumDeadline')}
</span>
)}
</>
)} )}
</p> </p>
)} )}
@ -500,13 +520,33 @@ export function ProposalFormVoteAndEnactmentDeadline({
<span data-testid="voting-date" className="pl-2"> <span data-testid="voting-date" className="pl-2">
{getDateTimeFormat().format(deadlineDates.vote)} {getDateTimeFormat().format(deadlineDates.vote)}
</span> </span>
{deadlines.vote === minVoteHours && ( {deadlines.vote && (
<span <>
data-testid="voting-2-mins-extra" {deadlines.vote === minVoteHours && (
className="block mt-4 font-light" <span
> data-testid="voting-2-mins-extra"
{t('ThisWillAdd2MinutesToAllowTimeToConfirmInWallet')} className="block mt-4 font-light"
</span> >
{t('ThisWillAdd2MinutesToAllowTimeToConfirmInWallet')}
</span>
)}
{deadlines.vote < minVoteHours && (
<span
data-testid="voting-less-than-min"
className="block mt-4 text-vega-pink"
>
{t('ProposalWillFailIfVotingIsBelowTheMinimumDeadline')}
</span>
)}
{deadlines.vote > maxVoteHours && (
<span
data-testid="voting-greater-than-max"
className="block mt-4 text-vega-pink"
>
{t('ProposalWillFailIfVotingIsAboveTheMaximumDeadline')}
</span>
)}
</>
)} )}
</p> </p>
)} )}