Skip to content

User Stories

James Chen edited this page Mar 10, 2022 · 21 revisions

1. Sign up

  • User will create a username and password to sign up for Horrorhub.
  • User will be redirected to the '/signup' route, and provided with a signup form, and redirected to the '/profile/:id' route after signing up.
  • If username already exists, we will display the message "Username already exists, please try again."
  • Password needs to match in both password and verify password forms to pass, or we will display the message "Password does not match, please try again."

2. Log in

  • User will login with Username and password.
  • Acceptance Criteria:
    • User will login via /login route, and redirected to the '/profile/:id'
    • If user incorrectly enters their username, we will display the message "Invalid username, please try again."
    • If user incorrectly enters their password, we will display the message "Invalid password, please try again."
    • User will use token-based authorization for now

3. Sign out

  • A logged in user should be able to sign out at any time
  • Acceptance Criteria:
    • There should be a sign out button
    • When user signs out, they are redirected to the '/' route.
    • Revokes access from their account for now until they sign back in

Movies

Read

  • As a user, I can navigate to a page that displays all of the horror movies in the database.

Acceptance Criteria:

  • There should be a navigation link to the "/movies" page.
  • The list of movies should be easy to read and tell apart from one another
  • Each movie should include a link to that movie's single resource page (/movies/:id).

Watchlists

Create

  • As a logged in user, I can create a collection of movies and separate them by watched status. Please refer to watch status section

4. Adding and removing movies onto their watchlist

  • When logged in, users should be able to add/remove movies onto their watchlist
  • Acceptance Criteria:
    • For logged in users, every movie has a dropdown indicating the three specified watchlists

4a. Watched Status (will watch, have watched, etc.)

  • Will watch, currently watching, and have watched will redirect the user to it's respective page. For now, we will use the routes '/willwatch', '/watching', and '/watched'

Reviews

Create

  • As a logged in user, I can leave a review for said movie.

Acceptance Criteria:

  • At the bottom of the movie's page, there should be a form allowing me to add a review.
  • Said review should clearly indicate what information is necessary and required.
  • If the form is submitted with invalid or missing data, the form should re-render with error messages.
  • If the form is submitted correctly, the page will refresh, and I should see my review without being redirected.

Read

  • As a logged in user, I can view reviews I have written.

Acceptance Criteria:

  • If I click on the "My Reviews" link on the sidebar, I should be redirected to the My Reviews (users/:id/reviews) page and be able to view all the reviews I have written.

Update

  • As a logged in user, I can edit my own reviews

Acceptance Criteria:

  • Whether I am viewing my review from the My Reviews (users/:id/reviews) page or from the movie page, I should see an "Edit Review" button next to my review. When clicked, a form appears that allows me to edit a review.
  • Said review should clearly indicate what information is necessary and required.
  • If the form is submitted with invalid or missing data, the form should re-render with error messages.
  • If the form is submitted correctly, I should be redirected to the movie's page with my edited review.

Delete

  • As a logged in user, I can delete my own reviews.

Acceptance Criteria:

  • If I am viewing my reviews from the My Reviews (users/:id/reviews) page, I should see a delete button next to the edit button next to the review that I want to delete.
  • I should be prompted to confirm that I want to delete this review.
  • If deleted successfully, the page will refresh, and the post will be removed from the list.
  • If the user attempts to delete a post that doesn't exist, display an error message to the user.

Clone this wiki locally