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:
- Navigate to local host (registration page).
- Enter a valid Username and password combination.
- 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.
- Login to account.
- Navigate to the View Profile page.
- 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.
- Login to account.
- Click into the box to post to your timeline on the home page.
- Type the post out and click the post status box.
- Navigate to the View Profile page.
- Verify the new status has been created.
- Click into the box to post to your timeline on the View Profile Page.
- Type the post out and click the post status box.
- 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.
- Login to account.
- Navigate to the View Profile page.
- Identify the user post that is being modified and click on the edit icon in the far right corner of that post.
- Type the Edits to the original status in the Post To Your Status Box.
- Click the Post status box when finished.
- 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.
- Login to account.
- Navigate to the search Users page.
- Type out the friends name.
- This can be any combination of letters contained in either the first or last name.
- 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.
- Login into the primary account.
- Navigate to the search Users page.
- Type out the secondary accounts name.
- This can be any combination of letters contained in either the first or last name.
- We verify that the secondary account we are looking for shows up in the list.
- Click the send Request button once.
- Logout of the primary account and login to the secondary account.
- 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).
- Log into an account that has an active friend request.
- Navigate to the view profile page.
- Hover over the notification icon and verify the friend request was received.
- Click on the green checkmark. (Accepting the friend request)
- 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.
- Log into the account.
- Click on the Username of the friend on a post on your home feed.
- Verify that we go to the friends timeline page.
- Navigation to the search User page
- Type in friends name and then select the friend.
- 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.
- Log into the account.
- navigate to the home page.
- Identify the user post that we would like to "like" and click on the heart icon.
- Click off the page & then return.
- 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.
- Log into the account.
- Navigate to the home page.
- 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
- Click in the add comment box & type the comment we would like to leave.
- Click on the leave comment box when we are finished.
- Click off the page & then return to the home page.
- Click the show comments icon on the post that was just commented on.
- 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
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.
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 Points: 2
Acceptance Test:
Precondition: That user already has a friend with a status posted.
- Log into the account.
- Navigate to the home page.
- Identify the user post that we would like to share on our profile page and click on the share icon (arrow).
- 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.
- Navigate to the view profile page.
- 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