TEST-FE-PR-001: adapt proposal/essential tests for current UI
This commit is contained in:
@@ -356,25 +356,19 @@ describe('ProposalDetailPage', () => {
|
|||||||
it('opens accept modal with milestone selector', async () => {
|
it('opens accept modal with milestone selector', async () => {
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
const acceptButton = await screen.findByRole('button', { name: /accept/i })
|
||||||
expect(screen.getByText('Accept')).toBeInTheDocument()
|
await userEvent.click(acceptButton)
|
||||||
})
|
|
||||||
|
|
||||||
await userEvent.click(screen.getByText('Accept'))
|
|
||||||
|
|
||||||
expect(screen.getByRole('heading', { name: 'Accept Proposal' })).toBeInTheDocument()
|
expect(screen.getByRole('heading', { name: 'Accept Proposal' })).toBeInTheDocument()
|
||||||
expect(screen.getByText(/Select an.*open.*milestone/i)).toBeInTheDocument()
|
expect(screen.getByText(/milestone to generate story tasks/i)).toBeInTheDocument()
|
||||||
expect(screen.getByRole('combobox')).toBeInTheDocument()
|
expect(screen.getByRole('combobox')).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('disables confirm button without milestone selection', async () => {
|
it('disables confirm button without milestone selection', async () => {
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
const acceptButton = await screen.findByRole('button', { name: /accept/i })
|
||||||
expect(screen.getByText('Accept')).toBeInTheDocument()
|
await userEvent.click(acceptButton)
|
||||||
})
|
|
||||||
|
|
||||||
await userEvent.click(screen.getByText('Accept'))
|
|
||||||
|
|
||||||
const confirmButton = screen.getByRole('button', { name: 'Confirm Accept' })
|
const confirmButton = screen.getByRole('button', { name: 'Confirm Accept' })
|
||||||
expect(confirmButton).toBeDisabled()
|
expect(confirmButton).toBeDisabled()
|
||||||
@@ -383,11 +377,8 @@ describe('ProposalDetailPage', () => {
|
|||||||
it('enables confirm button after milestone selection', async () => {
|
it('enables confirm button after milestone selection', async () => {
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
const acceptButton = await screen.findByRole('button', { name: /accept/i })
|
||||||
expect(screen.getByText('Accept')).toBeInTheDocument()
|
await userEvent.click(acceptButton)
|
||||||
})
|
|
||||||
|
|
||||||
await userEvent.click(screen.getByText('Accept'))
|
|
||||||
|
|
||||||
const select = screen.getByRole('combobox')
|
const select = screen.getByRole('combobox')
|
||||||
fireEvent.change(select, { target: { value: '1' } })
|
fireEvent.change(select, { target: { value: '1' } })
|
||||||
@@ -399,11 +390,8 @@ describe('ProposalDetailPage', () => {
|
|||||||
it('calls accept API with selected milestone', async () => {
|
it('calls accept API with selected milestone', async () => {
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
const acceptButton = await screen.findByRole('button', { name: /accept/i })
|
||||||
expect(screen.getByText('Accept')).toBeInTheDocument()
|
await userEvent.click(acceptButton)
|
||||||
})
|
|
||||||
|
|
||||||
await userEvent.click(screen.getByText('Accept'))
|
|
||||||
|
|
||||||
const select = screen.getByRole('combobox')
|
const select = screen.getByRole('combobox')
|
||||||
fireEvent.change(select, { target: { value: '1' } })
|
fireEvent.change(select, { target: { value: '1' } })
|
||||||
@@ -422,11 +410,8 @@ describe('ProposalDetailPage', () => {
|
|||||||
setupApi({ milestones: [] })
|
setupApi({ milestones: [] })
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
const acceptButton = await screen.findByRole('button', { name: /accept/i })
|
||||||
expect(screen.getByText('Accept')).toBeInTheDocument()
|
await userEvent.click(acceptButton)
|
||||||
})
|
|
||||||
|
|
||||||
await userEvent.click(screen.getByText('Accept'))
|
|
||||||
|
|
||||||
expect(screen.getByText('No open milestones available.')).toBeInTheDocument()
|
expect(screen.getByText('No open milestones available.')).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
@@ -466,10 +451,7 @@ describe('ProposalDetailPage', () => {
|
|||||||
|
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
await screen.findByText('Feature Essential')
|
||||||
expect(screen.getByText('accepted')).toBeInTheDocument()
|
|
||||||
})
|
|
||||||
|
|
||||||
expect(screen.queryByText('+ New Essential')).not.toBeInTheDocument()
|
expect(screen.queryByText('+ New Essential')).not.toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -487,11 +469,7 @@ describe('ProposalDetailPage', () => {
|
|||||||
expect(screen.getByText('Feature Essential')).toBeInTheDocument()
|
expect(screen.getByText('Feature Essential')).toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
// Edit and Delete buttons should not be visible
|
|
||||||
const editButtons = screen.queryAllByRole('button', { name: 'Edit' })
|
|
||||||
const deleteButtons = screen.queryAllByRole('button', { name: 'Delete' })
|
const deleteButtons = screen.queryAllByRole('button', { name: 'Delete' })
|
||||||
|
|
||||||
// Only the main proposal Edit button might exist, but not essential edit buttons
|
|
||||||
expect(deleteButtons.length).toBe(0)
|
expect(deleteButtons.length).toBe(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -505,10 +483,7 @@ describe('ProposalDetailPage', () => {
|
|||||||
|
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
await screen.findByRole('button', { name: /reopen/i })
|
||||||
expect(screen.getByText('rejected')).toBeInTheDocument()
|
|
||||||
})
|
|
||||||
|
|
||||||
expect(screen.queryByText('+ New Essential')).not.toBeInTheDocument()
|
expect(screen.queryByText('+ New Essential')).not.toBeInTheDocument()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -537,11 +512,8 @@ describe('ProposalDetailPage', () => {
|
|||||||
|
|
||||||
render(<ProposalDetailPage />)
|
render(<ProposalDetailPage />)
|
||||||
|
|
||||||
await waitFor(() => {
|
const acceptButton = await screen.findByRole('button', { name: /accept/i })
|
||||||
expect(screen.getByText('Accept')).toBeInTheDocument()
|
await userEvent.click(acceptButton)
|
||||||
})
|
|
||||||
|
|
||||||
await userEvent.click(screen.getByText('Accept'))
|
|
||||||
fireEvent.change(screen.getByRole('combobox'), { target: { value: '1' } })
|
fireEvent.change(screen.getByRole('combobox'), { target: { value: '1' } })
|
||||||
await userEvent.click(screen.getByRole('button', { name: 'Confirm Accept' }))
|
await userEvent.click(screen.getByRole('button', { name: 'Confirm Accept' }))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user