User Stories - HoltHunter/Group-12 GitHub Wiki

1 - Login

As a user, I want to log in to my account.

Priority: Critical

Risks: This is the first story, so larger than typical because it involves setting up the stack. Main risk is that this one story consumes a disproportionate amount of time in the sprint.

Points: 8

Tasks:

  • Add migrations to create user table
  • Add endpoint to create user
  • Add endpoint to authenticate username + password
  • Configure Express session on successful auth
  • Add endpoint to logout
  • Add login screen
  • Add a placeholder successful login page / dashboard.

Acceptance Test:

  1. Navigate to local host (registration page).
  2. Enter a valid Username and password combination.
  3. Press the Login button.
    • If the user entered a valid combination it will navigate to the user account.
    • If the User entered an invalid combination they will remain on the login page.

2 - Timeline

As a user, I want my posts to be displayed as a timeline on my profile page.

Priority: High

Risks: The risk is that this story may be more complex than estimated.

Points: 4

Acceptance Test:

Precondition: That post have been created previously be the user. This functionality is covered in Acceptance test for User Story 3.
  1. Login to account.
  2. Navigate to the View Profile page.
  3. Verify that the timeline has previously posted content.

3 - New Post

As a user, I want to be able to create a new post on my timeline.

Priority: Critical

Risks: Transferring new data to be saved to the db has multiple points of failure in the transactions.

Points: 4

Acceptance Test:

This test runs both cases for posting to a users account.
  1. Login to account.
  2. Click into the box to post to your timeline on the home page.
  3. Type the post out and click the post status box.
  4. Navigate to the View Profile page.
  5. Verify the new status has been created.
  6. Click into the box to post to your timeline on the View Profile Page.
  7. Type the post out and click the post status box.
  8. Verify the new status has been created.

4 - Edit Post

As a user, I want to write a status message when creating a new post.

Priority: Medium

Risks: Modifying existing data is inherently risky. Involves multiple trips to the database to pull the record and then save the changes.

Points: 4

Acceptance Test:

Precondition: That post have been created previously be the user. This functionality is covered in Acceptance test for User Story 3.
  1. Login to account.
  2. Navigate to the View Profile page.
  3. Identify the user post that is being modified and click on the edit icon in the far right corner of that post.
  4. Type the Edits to the original status in the Post To Your Status Box.
  5. Click the Post status box when finished.
  6. Verify that the status changed.

5 - Search

As a user, I should be able to search for other users in the system so that I can find people I know.

Priority: High

Risks: Low risk. No privileged data access, only doing read access on db.

Points: 2

Task

  • Add endpoint to return a list of users
  • Add search page with search field, list of results

Acceptance Test:

Precondition: That potential friends already have accounts created and the user knows a portion of their friends first or last name.
  1. Login to account.
  2. Navigate to the search Users page.
  3. Type out the friends name.
    • This can be any combination of letters contained in either the first or last name.
  4. We verify that the friend we are looking for shows up in the list.

6 - Friend Request

As a user, I should be able to send a friend request to people I know.

Priority: Critical

Risks: Low risk. The request does not grant any access or create or modify any critical data. Only risk is that the request is not created or delivered to the other user in a timely fashion.

Points: 1

Tasks:

  • Add migration to add tables friend_requests, friends
  • Add endpoint to create friend request
  • add endpoint to retrieve friend requests
  • Update user search with isFriend field
  • Add button to user search list "Add Friend"

Acceptance Test:

Precondition: That we can login to 2 existing accounts.
  1. Login into the primary account.
  2. Navigate to the search Users page.
  3. Type out the secondary accounts name.
    • This can be any combination of letters contained in either the first or last name.
  4. We verify that the secondary account we are looking for shows up in the list.
  5. Click the send Request button once.
  6. Logout of the primary account and login to the secondary account.
  7. Hover over the notification icon and verify the friend request was received.

7 - Accept Request

As a user, I should be able to accept a friend request.

Priority: Critical

Risks: Low risk. The only risk is the request not being marked as accepted or the view access not being granted to both users.

Points: 1

Tasks:

  • Add endpoint to accept a friend request
  • Add screen to list and accept or reject friend requests

Acceptance Test:

Precondition: That a friend request has already been sent to the account. (This Acceptance test is ran directly after User Story 6).
  1. Log into an account that has an active friend request.
  2. Navigate to the view profile page.
  3. Hover over the notification icon and verify the friend request was received.
  4. Click on the green checkmark. (Accepting the friend request)
  5. Navigate to the home page and Verify that all post made by the newly accepted friend has appeared on your home feed.

8 - Visibility

As a user, I want to have the ability to navigate to my friends timeline.

Priority: High

Risks: The main risk is seeing non-friends on the homepage. The secondary risk is being able to access a non-friend's page.

Points: 1

Acceptance Test:

This test runs both scenarios for navigating to a friends timeline.
Precondition: That the user already has a friend.
  1. Log into the account.
  2. Click on the Username of the friend on a post on your home feed.
  3. Verify that we go to the friends timeline page.
  4. Navigation to the search User page
  5. Type in friends name and then select the friend.
  6. Verify that we go to the friends timeline page.

9 - Like Status

As a user, I want to like my friend's status.

Priority: Low

Risks: The main risk is the "like" data not being saved.

Points: 1

Acceptance Test:

Precondition: That user already has a friend with a status posted.
  1. Log into the account.
  2. navigate to the home page.
  3. Identify the user post that we would like to "like" and click on the heart icon.
  4. Click off the page & then return.
  5. verify that the number count on the heart icon previously clicked has gone up a number.

10 - Comment on Status

As a user, I want to comment on my friend's status.

Priority: Low

Risks: The main risk is the "comment" data not being saved correctly.

Points: 2

Acceptance Test:

Precondition: That user already has a friend with a status posted.
  1. Log into the account.
  2. Navigate to the home page.
  3. Identify the user post that we would like to comment on and click on the show comment icon (speech bubble).
    • This will then show all previous comments posted
  4. Click in the add comment box & type the comment we would like to leave.
  5. Click on the leave comment box when we are finished.
  6. Click off the page & then return to the home page.
  7. Click the show comments icon on the post that was just commented on.
  8. Verify that the new comment has been added.

11 - Share Status

As a user, I want to share my friend's status to my timeline.

Priority: Low

Risks: This functionality can prove to be a bit on the complex side, so there's risk that it will take too much time to develop compared to other features. The complexity points are in how to save and retrieve the data. For example, if a status is status_id|user_id|content|date_created, then a shared status needs to preserve that data through the share. The shared status would, naively, be status_id|sharing_user_id|shared_status_id|creator_user_id|content|date_created|date_shared. This story will present very real issues with db design, for both create and retrieve. We can assume edit is not an available action.

Points: 2

Acceptance Test:

Precondition: That user already has a friend with a status posted.
  1. Log into the account.
  2. Navigate to the home page.
  3. Identify the user post that we would like to share on our profile page and click on the share icon (arrow).
  4. Click on the Add to Timeline box.
    • An optional comment can be added by typing a message into the message box before hitting the Add to timeline button.
  5. Navigate to the view profile page.
  6. Verify that you have shared a post from your friend.


12 - Theme

As a user, I want to be able to select viewing options.

Priority: Low

Risks: ??

Points: 4

Acceptance Test:

Precondition:

13 - profile Icons

As a user, I want to select a profile icon

Priority: LOW

Risks: ??

Points: 3

Acceptance Test:

Precondition