fix(governance): proposal deadline validation missing (#4150)
This commit is contained in:
parent
cabd99d3ef
commit
ce3da97a8a
@ -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",
|
||||||
|
@ -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'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -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>
|
||||||
)}
|
)}
|
||||||
|
Loading…
Reference in New Issue
Block a user