User Stories
User Stories demonstrate the functionality of a feature from the perspective of a user, while the Acceptance Criteria defines our boundaries for each one.
User Stories |
---|
1. Sign Up |
2. Demo User |
3. Login |
4. Logout |
5. Profile |
6. Cities |
7. Insights |
8. Helpfuls |
As an unauthorized user, I want to be able to create an account via a signup form to have full access to all the features of YourCity.
- with all these mandatory fields: First Name, Last Name, Email Address, Password, and Confirm Password
Scenario: | User enters valid data |
---|---|
When | I enter valid inputs for all of the required fields |
And | I submit the form |
Then | the new user account will be created |
And | the user will be redirected to the user's profile |
Scenario | User enters existing email/username |
---|---|
When | I fill out all form fields |
And | I enter an existing email or username |
And | I submit the form |
Then | an error message should appear "email or username field is already in use" |
Scenario | User enters non-matching passwords |
---|---|
When | I fill out all form fields |
And | I enter a password doesn't match the confirm password |
And | I submit the form |
Then | an error message should appear "password field is not matching" |
Scenario | User enters a weak password |
---|---|
When | I fill out all form fields |
And | I enter a password that doesn't meet the criteria, at least:
|
And | I submit the form |
Then | an error message should appear "password is not strong because of certain criteria" |
As a Demo User, I would like to have full access in order to see if YourCity fits my needs and to quickly test all of the features.
Scenario: | User signs in as Demo |
---|---|
When | I press the Demo Login button |
Then | I will log in to a pre-seeded account |
And | I will be redirected to the user's profile |
So That | I will have full access to all features |
As user, I want to be able to login and access my account.
- with the mandatory fields: Email Address and Password
Scenario: | User enters a valid username and password |
---|---|
When | I enter valid inputs |
And | I submit the form |
Then | I will be redirected to the users profile |
Scenario | User enters invalid email/username combination |
---|---|
When | I fill out the form fields |
And | I enter an invalid username and/or password |
And | I submit the form |
Then | an error message should appear "Invalid Login. Please Try Again." |
Scenario | User enters a non-existent username/email |
---|---|
When | I fill out the form fields |
And | I enter an invalid username and/or password |
And | I submit the form |
Then | an error message should appear "Invalid Login. Please Try Again." |
As a logged-in user, I want to be able to end my session and log out of my account to protect my privacy and information when I am not using the application.
Scenario: | User is able to log out on any page |
---|---|
When | I navigate to any page |
And | I press the Logout button |
Then | I will be logged out |
And | I will be redirected to the splash page |
As a logged-in user, I want to be able to access my profile and view my insights and cities that I created.
Scenario: | Logged in User can Add, Edit, Delete Cities and Insights . |
---|---|
When | I navigate to any page |
Then | I will be able to see a create City or Insight button |
So That | I can add my own City or Insight
|
Scenario: | Logged in User can Edit and Delete their own Profile . |
---|---|
When | I navigate to my profile page |
Then | I will be able to see an edit and delete Profile button |
So That | I can edit and delete my own Profile
|
Scenario: | User can't edit, or delete City or Insight that are not owned |
---|---|
When | I navigate to another City or Insight that I do not own |
Then | I see any of the buttons:
|
So That | only owners can have the ability to Add, Delete and Edit |
Scenario: | Logged out User can't edit, or delete a Profile
|
---|---|
When | I navigate to a profile page |
Then | I will not see Edit or Delete buttons on a profile page |
As a logged-in user, I want to be able to add, edit, or delete a city.
- And I'm on any page
Scenario: | User can add City
|
---|---|
When | I press the Add City
|
Then | I will see a form with the fields:
|
So That | I can add a new city |
Scenario: | User can delete a City
|
---|---|
When | I press the Delete button on a City
|
Then | the City will be deleted dynamically |
So That | I can remove any mistakes |
Scenario: | User can edit a City
|
---|---|
When | I press the Edit button on a City
|
And | make changes to the text |
And | I press Save
|
Then | the City will be edited dynamically |
So That | I can modify and City with mistakes |
As a logged out user, I want to view an insight.
Scenario: | User can view Insights
|
---|---|
When | I navigate to a city page |
Then | I will be able to view all the insights |
So That | I can be informed about that city |
As a logged in user, I want to be able to add, edit, or delete an insight.
- And I'm on any city page
Scenario: | User can add Insight
|
---|---|
When | I press the Add Insight button |
Then | I will see a form with the fields:
|
So That | I can provide my insight on a city |
Scenario: | User can delete Insight
|
---|---|
When | I press the Delete button for an Insight
|
Then | the Insight will be deleted dynamically |
So That | I can remove any Insight I added by mistake |
Scenario: | User can edit Insight
|
---|---|
When | I press the Edit button on an Insight
|
And | make changes to the text |
And | I press Save
|
Then | the Insight will be edited dynamically |
So That | I can modify any Insight I have already created |
As a logged-in user, I want to be able to identify insights that are helpful.
- And I'm on a City page with Insights
Scenario: | User can add a Helpful to an Insight
|
---|---|
When | I press the Helpful button |
Then | it will increase the Helpful icon by one |
So That | I identify the most helpful insights |
Scenario: | User can remove Helpful
|
---|---|
When | I press the Helpful button |
Then | it will decrement the Helpful icon by one |
So That | I can modify any mistakes I made about helpful insights |