Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GET] All Timetables #212

Closed
Tracked by #26
arafaysaleem opened this issue Dec 21, 2021 · 0 comments · Fixed by #222
Closed
Tracked by #26

[GET] All Timetables #212

arafaysaleem opened this issue Dec 21, 2021 · 0 comments · Fixed by #222
Assignees
Labels
Status: Completed Type: Feature user story A brief explanation of a functionality or an interaction with the system, from a user's perspective

Comments

@arafaysaleem
Copy link
Collaborator

arafaysaleem commented Dec 21, 2021

Summary

As a student, I should be able to get all possible timetables, so that I can see all my past ones.

Acceptance Criteria

GIVEN an student is requesting all possible timetables in the app
WHEN the app hits the /timetables endpoint with a valid GET request containing query parameters, either:

  • student_erp (REQUIRED)
  • is_active
  • term_id

THEN the app should receive a status 200
AND in the response, the following information should be returned:

  • headers
  • list of timetables

Sample Request/Sample Response
For e.g. we want all timetables for a student with erp=17855 and for the term Fall 2021 i.e. student_erp=17855, term_id=1

headers: {
    error: 0,
    message: "..."
}
body: [
    {
	timetable_id: 1,
	student_erp: 17855, // <-- student_erp
	term_id: 1, // <-- Fall 2021 term
	is_active: 0,
    },
    {
	timetable_id: 2,
	student_erp: 17855,
	term_id: 1,
	is_active: 1,
    },
    {
	timetable_id: 3,
	student_erp: 17855,
	term_id: 1,
	is_active: 0,
    },
]

Resources

  • Development URL: {Here goes a URL to the feature on development API}
  • Production URL: {Here goes a URL to the feature on production API}

Dev Notes

This is going to return just the summarized objects for timetables. When user clicks on a single timetable then request goes to [GET] A Single Timetable, which returns a detailed overview.
This endpoint is going to be accessible and work the same way for the admin as well.

Testing Notes

Scenario 1: GET request is successful (Admin Only)

GIVEN an admin is requesting all possible timetables in the app
WHEN the app hits the /timetables endpoint with a valid GET request
THEN the app should receive a status 200
AND the body should be an array
AND the first item of the array should be an object containing the following fields:

  • timetable_id
  • student_erp
  • term_id
  • is_active

Scenario 2: GET request with query parameters is successful

GIVEN a student is requesting all possible timetables in the app
WHEN the app hits the /timetables endpoint with a valid GET request
AND the query parameters contain student_erp=17855
THEN the app should receive a status 200
AND the body should be an array
AND the first item of the array should be an object containing the following fields:

  • timetable_id
  • student_erp
  • term_id
  • is_active
    AND the key student_erp should be equal to 17855

Scenario 3: GET request is unsuccessful due to no student timetables

GIVEN a student is requesting all possible timetables in the app
WHEN the app hits the /timetables endpoint with a valid GET request
AND the query parameters contain student_erp=17855
THEN the app should receive a status 404
AND the response headers' code parameter should contain "NotFoundException"

Scenario 4: GET request is incorrect due to no query parameters

GIVEN a student is requesting all possible timetables in the app
WHEN the app hits the /timetables endpoint with a valid GET request
AND contains no query parameters
THEN the app should receive a status 422
AND the response headers' code parameter should contain "InvalidPropertiesException"
AND the response headers' data parameter should contain the name of the invalid parameters

Scenario 5: GET request is incorrect due to unknown query parameters

GIVEN a student is requesting all possible timetables in the app
WHEN the app hits the /timetables endpoint with a valid GET request
AND contains unknown query parameters
THEN the app should receive a status 422
AND the response headers' code parameter should contain "InvalidPropertiesException"
AND the response headers' data parameter should contain the name of the invalid parameters

Scenario 6: GET request is unauthorized

GIVEN a student is requesting all possible timetables in the app
WHEN the app hits the /timetables endpoint with a valid GET request
AND the request contains no authorization token
THEN the app should receive a status 401 Unauthorized
AND the response headers' code parameter should contain "TokenMissingException"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Completed Type: Feature user story A brief explanation of a functionality or an interaction with the system, from a user's perspective
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant