Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI Fixes on Submission Box Page #521

Merged
merged 7 commits into from
Mar 27, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion cypress/e2e/app/submission-box/detail/editBoxDetail.cy.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TIMEOUT } from '../../../../utils/constants'

describe('Recieving Dashboard Details Page Tests', () => {
describe('Edit Box Detail Page Tests', () => {
// Submission Box information
const submissionBoxTitle1 = 'Test Modification with only title'
const submissionBoxTitle2 = 'Test Modification with all fields'
Expand All @@ -12,6 +12,7 @@ describe('Recieving Dashboard Details Page Tests', () => {
const newDescription = 'A new description for the submission box.'
const newTimeCharacters = '2060 06 13 03:30 AM' // Characters to be typed in DatePicker
const newTimeDisplay = '2060/06/13 03:30 AM'

beforeEach(() => {
cy.task('clearDB')
// User information
Expand Down
59 changes: 59 additions & 0 deletions cypress/e2e/app/submission-box/detail/viewBoxDetail.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { TIMEOUT } from '../../../../utils/constants'

describe('View Box Detail Page Tests', () => {
// Submission Box information
const submissionBoxTitle1 = 'Test Viewing With Members'
const submissionBoxTitle2 = 'Test Viewing Without Members'
const submissionBoxDescription = 'Description'
const submissionBoxTime = new Date('December 17, 2045 03:24:00')
const invitedEmail = 'invited@member.email'

beforeEach(() => {
cy.task('clearDB')
// User information
const email = 'view@detail.test'
const password = 'Pass1234'

// Create a user with two managed submission boxes, one with members, one without
cy.task('createUser', { email, password })
cy.visit('/login')
cy.get('[data-cy=email]').type(email)
cy.get('[data-cy=password]').type(password)
cy.get('[data-cy=submit]').click()
cy.url({ timeout: TIMEOUT.EXTRA_LONG }).should('not.contain', 'login')
cy.task('getUserId', email).then((userId) => {
cy.task('createSubmissionBoxWithEmail', { submissionBoxTitle: submissionBoxTitle1, email: invitedEmail, userId, submissionBoxDescription})
cy.task('createSubmissionBoxForSubmissions', { submissionBoxTitle: submissionBoxTitle2, submissionBoxDescription, userId, closesAt: submissionBoxTime })
})
cy.reload()
cy.visit('/dashboard')
})

it('Should allow the user to view members if there are members', () => {
cy.get('[data-cy="Manage Boxes"]')
cy.wait(1000)
cy.get('[data-cy="Manage Boxes"]').click()

cy.get(`[data-cy="${ submissionBoxTitle1 }"]`)
cy.wait(1000) // Waiting for it to be clickable
cy.get(`[data-cy="${ submissionBoxTitle1 }"]`).click()

cy.get('[data-cy="submissionBoxMembersHeading"]').should('be.visible')

cy.get('[data-cy="submissionBoxMembers"]').should('contain', invitedEmail)
})

it('Should not display members if there aren\'t any', () => {
cy.get('[data-cy="Manage Boxes"]')
cy.wait(1000)
cy.get('[data-cy="Manage Boxes"]').click()

cy.get(`[data-cy="${ submissionBoxTitle2 }"]`)
cy.wait(1000) // Waiting for it to be clickable
cy.get(`[data-cy="${ submissionBoxTitle2 }"]`).click()

cy.get('[data-cy="submissionBoxMembersHeading"]').should('not.exist')

cy.get('[data-cy="submissionBoxMembers"]').should('not.exist')
})
})
1 change: 1 addition & 0 deletions src/app/api/submission-box/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export async function GET(req: NextRequest): Promise<NextResponse> {
select: {
id: true,
userId: true,
email: true,
},
},
},
Expand Down
8 changes: 8 additions & 0 deletions src/app/api/submission-box/update/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,20 @@ export async function PUT(req: NextRequest): Promise<NextResponse> {
where: {
id: submissionBoxId,
},
include: {
requestedSubmissions: {
select: {
email: true,
},
},
},
data: {
title: title,
description: description,
closesAt: closesAt ? new Date(closesAt.toString()) : null,
},
})

return NextResponse.json( {submission: updatedSubmissionBox}, { status: 200 })
} catch (error) {
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
Expand Down
2 changes: 1 addition & 1 deletion src/app/submission-box/[boxId]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ export default function SubmissionBoxDetailPage({ params }: SubmissionBoxDetailP
emptyMessage={'No Videos Have Been Submitted to Your Box'}
/>
</Box>
<Box paddingLeft='2rem'>
<Box pr='1rem' pl='2rem'>
{!isEditing && (
<Box
top='2rem'
Expand Down
19 changes: 16 additions & 3 deletions src/components/SubmissionBoxDetails/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

import Typography from '@mui/material/Typography'
import React from 'react'
import { SubmissionBox } from '@prisma/client'
import { Box } from '@mui/material'
import { RequestedSubmission, SubmissionBox } from '@prisma/client'
import { Box, Chip } from '@mui/material'
import Button from '@mui/material/Button'

export type SubmissionBoxInfoProps = {
submissionBox: SubmissionBox | null
submissionBox: SubmissionBox & { requestedSubmissions: RequestedSubmission[]} | null
onUnsubmit?: () => void
}
export default function SubmissionBoxDetails(props: SubmissionBoxInfoProps) {
Expand Down Expand Up @@ -61,6 +61,19 @@ export default function SubmissionBoxDetails(props: SubmissionBoxInfoProps) {
</Typography>
</Box>
)}
{props.submissionBox && props.submissionBox.requestedSubmissions && props.submissionBox.requestedSubmissions.length > 0 && (
<Box>
<Typography data-cy='submissionBoxMembersHeading' color={'textSecondary'} sx={{ fontWeight: 'bold' }}>
Members
</Typography>
<Box data-cy='submissionBoxMembers'>
{props.submissionBox.requestedSubmissions.map((requestedSubmission: {id: string, email: string}) =>
<Chip sx={{ m: 0.5, ml: 0 }} key={`submission-box-chip-${ requestedSubmission.id }`} label={requestedSubmission.email} />
)
}
</Box>
</Box>
)}
{props.onUnsubmit && (
<Box
sx={{
Expand Down
Loading