The purpose of this application is provide an easy way to track bugs/features for payment and to collaborate with fellow team members in real time with a message history.
- Python3
- Chromedriver available in the 'user' path executing tests
pip3 install -r /path/to/requirements.txt
export SECRET_KEY=<complete key>
SECRET_KEY environment variable
python3 manage.py test
The 'development' and 'testing' of the app have been done on the 'master' branch. 'Coverage' has been calculated on the 'master' branch.
The deployed version (master_heroku) on heroku has the following differences from the 'master' branch
-
No testing profile in the config.py file and file uses environment variables instead of hardcoded values. The 'master' branch does not contain this file so the example version of the file requires hardcoded values as described in the Installation steps.
-
The deployed branch uses these heroku configuration variables
- CURRENT_HOST (app.py home route replacing https://localhost:5000)
- FLASK_CONFIG
- MONGO_DBNAME (config.py)
- MONGO_URI (config.py)
- SECRET_KEY (config.py)
- YOURAPPLICATION_SETTINGS
-
The webserver specified on heroku is 'gunicorn'
-
DEBUG=False and host/port taken from os.environ environment variables
-
Heroku config files are 'runtime.txt', 'Procfile' and 'requirements.txt'
-
As a user I want to be able to enter my username, email, password and password confirmation to register with the site and be shown message 'You have successfully registered'
- Acceptance criteria:
- Text box and label for;
- Username
- Passwords
- Password Confirmation
- Register Button
- Text box and label for;
- Acceptance criteria:
-
As a user I want to be prevented from entering usernames and email addresses that are already registered
- Acceptance criteria:
- A warning is displayed alerting the user that the email or username has been registered
- The user cannot submit the form
- Acceptance criteria:
-
As a user I want to be alerted when the password and password confirmation text do not match
- Acceptance criteria:
- A warning is displayed alerting the user that the password and password confirmation do not match
- Acceptance criteria:
-
As a user I want to be alerted when either the username or password result in a failed login attempt
- Acceptance criteria:
- A warning is displayed alerting the user that either the password or username is incorrect
- Acceptance criteria:
-
As a user I want to be advised when the login has been successful
- Acceptance criteria:
- The home page links change
- A message is displayed confirming a successful login
- Acceptance criteria:
-
As a user I want to be advised when I have logged out
- Acceptance criteria:
- The home page links change
- A message is displayed confirming a successful logout
- Acceptance criteria:
-
As a user I want to be shown all created Features & Issues created ( url route /products)
- Acceptance criteria:
- Feature/Issue headline contains;
- Name
- Price
- Total Cumulative Donations
- Status
- Feature/Issue body contains;
- Description & Feature/Issue type
- User uploaded image with fullsize toggle on click
- Need (Low, Medium or High)
- Complexity (Low, Medium or High)
- Attached document to download
- Feature/Issue body Cart options;
- Add a vote Button
- Add specified quantity to the cart Button
- Edit Feature/Issue button
- Feature/Issue headline contains;
- Acceptance criteria:
-
As a logged in user I want to be able to create a Feature or Issue ( url route /products/new)
-
Acceptance criteria:
- A new Feature/Issue contains;
- Name
- Price (For Issues its set to zero on save)
- Total Cumulative Donations
- Status
- Description & Feature/Issue type
- User uploaded image with fullsize toggle on click
- Need (Low, Medium or High)
- Complexity (Low, Medium or High)
- Attached document to download
- Votes with default value of 0
- A new Feature/Issue contains;
-
As a logged in user I want to be able to create a Feature/Issue (url route /products/new) and be prevented from using a 'Name' that exists in the database, upload an image file that is not an image or uploading a document that is too large or not an accepted file type.
-
Acceptance criteria:
- name - Name must be unique
- image - Upload a valid image. The file you uploaded was either not an image or a corrupted image.
- product_document - Please keep filesize under 5.0MB. Current filesize N MB
-
As a logged in user I want to be able to create a Feature/Issue (url route /products/new) without an 'Image' file or 'Product Document' file
-
Acceptance criteria:
- name - Name must be unique
- image - A placeholder image will be shown instead of the Upload image
- Document - No file will be shown
-
As a logged in user I want to be able to edit the price of a Feature and it be reflected on the price of the same feature on the all features and issues page.
-
Acceptance criteria:
- Price will show the amended Feature price
-
As a logged in user I do not want to be able to edit the price of an Issue.
-
Acceptance criteria:
- Price will not show the amended Issue price and continue to be zero
-
As a logged in user I want to be able to edit the name of a Feature/Issue and it be reflected on the name of the same feature on the all features and issues page.
-
Acceptance criteria:
- Name will show the amended Feature/Issue name
- Image will be unchanged and no error message will be shown
- Document Image will be unchanged and no error message will be shown
-
As a logged in user I want to be able to edit a feature/issue and be prevented from using a 'Name' that exists in the database
-
Acceptance criteria:
- name - Name must be unique
-
As a logged in user I want to be able to add 2 different Features to the cart and the number of Features in the cart shown on the navigation page will be 2
-
Acceptance criteria:
- Cart Number = 2
-
As a logged in user I want to be able to add 1 or more Features to the cart, click onto the Checkout page and make a payment
-
Acceptance criteria:
- Cart contains at least 1 Feature
- Checkout Charge shows the total of the Features selected in the Cart
- After entering valid credit card details, clicking 'Pay'
- Message 'Success! We've charged your card!' is shown
-
As a logged in user I want to be able to add 1 or more Features to the cart, click onto the Checkout page and fail to make a payment when an incorrect credit card number is used
-
Acceptance criteria:
- Cart contains at least 1 Feature
- Checkout Charge shows the total of the Features selected in the Cart
- After entering valid credit card details, clicking 'Pay'
- Message 'Your card number is incorrect.' is shown
-
As a logged in user I want to be able to add unique Feature/Issue Area options
-
Acceptance criteria:
- Add unique Feature/Issue Area name
- This additional name is shown in the list of all Feature/Issue Areas
-
As a logged in user I want to be able to add non unique Feature/Issue Area options and be shown an error
-
Acceptance criteria:
- Add non unique Feature/Issue Area name
- Error message shown 'Name must be unique'
-
As a logged in user I want to be able to edit and save an existing Feature/Issue Area name
-
Acceptance criteria:
- Edit Feature/Issue Area name
- This edited version is shown in the complete list of all Features/Issues
-
As a logged in user I want to be able to delete a Feature/Issue Area Name not used in a Feature/Issue
-
Acceptance criteria:
- Delete Feature/Issue Area name
- This Feature/Issue Area name is not shown in the complete list of all Features/Issues
-
As a logged in user I want to be not able to delete a Feature/Issue Area Name used in a Feature/Issue
-
Acceptance criteria:
- Delete Feature/Issue Area name
- Error message shown '{Feature/Issue Area Name} Cannot be deleted, Please delete Feature/Issue instead'
-
As a logged in user and creator/owner of the Feature/Issue I want to be able to delete it
-
Acceptance criteria:
- No record of a Stripe payment exists in the 'checkout_saleproduct' table with the id of the Feature/Issue being deleted
- Delete Feature/Issue name
- This Feature/Issue Area name is not shown in the complete list of all Features/Issues
-
As a logged in user with a Feature/Issue with one payment assigned, I want to be stopped from deleting it
-
Acceptance criteria:
- Delete Feature/Issue name
- Error message shown '{Feature/Issue Name} can not be deleted as users have paid funds'
-
As a logged in user and not the creator/owner of the Feature/Issue I want to be stopped from deleting it
-
Acceptance criteria:
- Delete Feature/Issue name
- Error message shown '{Feature/Issue Name} can only be deleted by the creator'
- View the /products url and add a Feature or Issue to the cart, the number of Features shown in the cart at the right of the cart graphic should increase by the quantity added to the cart
- View the /products url and click on the '+1 Vote' button for any Issue, the total vote number should increment by 1 and turn red only allowing one vote per registered user per feature/issue, were the user has voted on the feature/issue before the number of votes will not increment by 1, turn red and the button will turn red and text change to 'Already Voted!'
- View the /products url and click on the '+1 Vote' button for any Feature, the total vote number should increment by 1 if the user has purchased the Feature and turn red only allowing one vote per registered user per feature/issue, were the user has voted on the feature/issue before the number of votes will not increment by 1, turn red and the button will turn red and text change to 'Already Voted!'. If the user has not purchased the Feature the button will turn red and show the text 'Purchase Required'
- Click 'Comments' and if no comment exists your shown the edit comment page to save comments, enter comments on the 'Edit Comment' page and they will saved and shown on the 'View Comment' page
- As a 'staff' user the voting button will be replaced by a button to add 15 minutes time spend working on the Feature or Issues, each click adds 15 minutes to the total shown in the Feature/Issue description bar in red
Click on the link 'Forgot My Password' and enter your email address, either look on the terminal running the webserver or the email address supplied and open the link in the browser, enter the new password into the input boxes provided and click 'Reset Password'. Return to the login page and login using the new password.
- .....
- The Product Id (Feature/Issue) numbers 0 and 1 are reserved for voting functionality, the product entries for these id's have to be removed from the database manually to avoid these product id's being used for real products