Sprint 4 Test Driven Development - root-mrrobot/wits-academy GitHub Wiki

Sprint 1 User Acceptance Criteria

User Stories User Acceptance Criteria
1. Both types of users (lecturer & student) should be able to register on the app by entering their username, email, password, and confirming said password and finally clicking the register button. This allows a user to have a personal account on the app. Given that a new user goes to the register page and enters a username, email password and confirms said password and clicks on the register button, then the user should be successfully registered and able to log in with their chosen credentials
2. Should both types of users already have an account on the app, they should be able to click the “Login” hyperlink which will direct them to the login page so that they may log into their personal account. Given that a registered user is on the register page, the user should be able to navigate to the login page by clicking the “Login” hyperlink, so that they may use the app.
3. A user should be able to log into the app by entering their email and password correctly and clicking the “Log in” button so that they may be directed to the home page where they can access the full functionality of the app. Given that a registered user is logged out, they should be able to go to the log in page and enter their email and password and click the “Log in” button, then the data associated to the user should be accessible and the user should be taken to the home page.
4. A user should be able to navigate to the register page by clicking the “Register” hyperlink if they do not already have an account so that they may create one. Given that a user is not yet registered, and they are on the login page, the user should be able to navigate to the register page by clicking the “register” hyperlink, so that they may use the app.
5. An authenticated user should be brought to their respective home page after logging in so that they may access the different features that the app provides. Given that a registered user has logged into the app the user should be brought to and able to access the home page so that they may make full use of the functionalities that the app offers.
6. An authenticated user should be able to access their personal account page through the home page so that they may view or edit their personal details. Given that a registered user has logged into the app the user should be brought to and able to access the home page where they can access their personal account page so that they can view their personal information.

Sprint 2 User Acceptance Criteria

User Stories User Acceptance Criteria
1. As a Student I want to be able to go to the “My Account" page so that I can view all my details (username, email) so that I may edit these details if necessary and I want to be able to click a “Go to Lecturer View” button so that I may view the courses that I have as a lecturer and create more courses Given that a student user goes to the account page, the user should be able to switch to the lecturer view so that the user can add courses and make use of the lecturer’s functionality given that the user is a lecturer as well as a student.
2. As an authenticated user who is a student, I want to be able to navigate to a home page, so that I can view all the courses that are available on the app and filter the courses according to the category of the courses I want to view, I should be able to click on a specific course so that I may view the details of the course so that I can subscribe to the specific course. Given that a registered user is on the student home page, the user should be able to view a list of all the courses that exist, the user should also be able to click on the specific course in order to view the details of the course so that they can subscribe to a course should it be a course that they are interested
3. As a Student I want to be able to view all the course I am subscribed to in this tab so that I may access the content of the course Given that a registered user is on the subscribed page the user should be able to view all the courses that they are subscribed to so that they can access the courses material that is uploaded by the lecturer.
4. As a Lecturer I want to be able to go to the “My Account" page so that I can view all my details(username, email, password, etc.) so that I may edit these details if necessary and I want to be able to click a “Go to Student View” button so that I may view the courses that are available and the courses that I am currently subscribed to. Given that a lecturer user goes to the account page, the user should be able to switch to the student view so that the user can view the available courses and subscribe to new given that the user is a lecturer as well as a student.
5. As an authenticated user who is a lecturer, I want to be able to navigate to a page that shows the different courses that I teach, so that I can view all the courses' pictures, names, and the categories that the courses belong to and later add course content. Given that a registered user is on the all courses page the lecture should be able to view a list of all their existing courses so that they may later add course material to the course.
6. As a lecturer I want to be able to click the "add course" button so that I can create an additional course on the app by entering the Course Name, Choose a Course Category from a drop down menu, entering a Course Description and uploading a picture for the course. Given that a registered user is on the add course page, the lecturer should be able to insert a course name, category, picture and description so that the specific course is created and the students may access said course.

Sprint 3 User Acceptance Criteria

User Stories User Acceptance Criteria
1. As a lecturer user, I should be able to create topics under a selected course, so that I can add course content such as pdfs, videos/video links, etc. under said topics so that the students may access the course material in a more organized way. Given that a lecturer user is on a specific course page, the user should be able to add topics under a course, so that the course material is well organized and easily accessible to the student.
2. As a lecturer user, I should be able to add and upload documents (pdfs, slides), videos/video links under topics so that a student may access the course material under the specific topic. Given that a lecturer user has created topics under a specific course, the user should be able to upload pdfs and videos under each topic, so that the student may access these course materials in an organized manner.
3. As a student user, when viewing a specific course, I should be able to subscribe to said course by clicking the “subscribe” button so that I can access the courses material. Given that a student user is viewing a specific course, the user should be able to subscribe to the course so that they have access to the course’s material.
4. As a student user, I should be able to navigate to the "Subscription" page so that I can view and later access all the course material for the courses that I am subscribed to so that the material can be accessed offline. Given that a student user is on the subscriptions page, the user should be able to view only the courses to which they are subscribed to, so that they can easily access the course’s material.
5. As a student user, I should be able to download the course material from a course that I am subscribed to so that I may access the course material from a local machine. Given that a student user is on a specific courses page, the user should be able to download the material (pdfs and videos) that have been uploaded by the lecturer, so that they may access the downloaded material from a local machine.
6. As a user, I should be able to upload a profile picture so that I can make my Account Page more personalized. Given that a registered user is on their account page, the user may upload a profile picture to their account page, so that their account page is more personalized.

Sprint 4 User Acceptance Criteria

User Stories User Acceptance Criteria
1. As a lecturer user, I should be able to click the "create quiz" button so that I can create a quiz. Given that a lecturer user clicks the “create quiz” button, the user should be able to create a new quiz instance, so that they may upload questions to that specific quiz instance.
2. As a lecturer user, I should be able to add MCQ questions to a created quiz by clicking the "add questions" button so that I can later use the quiz to test the students’ knowledge and understanding of the course content. Given that a lecturer user has created a quiz instance, the user should be able to add MCQ questions and their respective answers to said quiz, so that the student user may then access, and answer said quiz which contains the questions.
3. As a lecturer user, I should be able to set the answers to a quiz so that the students' attempted quizzes can be marked. Given that a lecturer user has already set the questions and their respective answer choices, the user should be able to set an answer that is correct, so that when a student user answers a quiz the questions get marked according to the correct answer set by the lecturer.
4. As a student user, I should be able to attempt a quiz that has been uploaded by a course lecturer so that I can see whether I understand the course material uploaded by the lecturer. Given that a student user is subscribed to a course and there exists a quiz in that course, the student user should be able to view, and answer said quiz, so that the student know how well they’ve understood the course work.
5. As a student user, I should be able to receive a mark after I've completed a quiz based on the answers set by the lecturer, so that I know how well I have done in the quiz and where I've made mistakes. Given that a student user has answered a quiz, the user should be able to review the quiz and the correct answers, so that they may see how well they’ve done on the quiz.
6. As a student user, I should be able to rate a course that I am subscribed to so that I can contribute to the feedback given to the lecturer from the students and so that other students may know what the course rating is. Given that a student user is subscribed to a course, the user should be able to rate a course so that other student users know how great the course is.