[POST] A New Timeslot
arafaysaleem opened this issue · 0 comments
arafaysaleem commented
Summary
As an admin
, I should be able to create timeslots, so that I can select one while creating classes.
Acceptance Criteria
GIVEN an admin
is creating a timeslot entry in the app
WHEN the app hits the /timeslots
endpoint with a valid POST request, containing:
- start_time
- end_time
- slot_number
THEN the app should receive a status 201
AND in the response, the following information should be returned:
- headers
- timeslot_id
Sample Request/Sample Response
headers: {
error: 0,
message: "..."
}
body: {
"timeslot_id": 1,
"affected_rows": 1
}
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
{Some complementary notes if necessary}
Testing Notes
Scenario 1: POST request is successful
- Create a new timeslot entry with a POST request to
/timeslots
endpoint and ensure a201
status code is returned. - Use the
id
returned by the response in a subsequent GET request to/timeslots/:id
endpoint and ensure a200
status code is returned. - Ensure the response contains an timeslot with the correct information i.e. matching the initially sent body.
- Clean up the database by sending a DELETE request to
/timeslots/:id
endpoint and ensure a200
status code is returned.
Scenario 2: POST request is unsuccessful due to time conflicts
- Send a POST request to
/timeslots
endpoint with either a conflictingstart_time
orend_time
. - Ensure a
500
status code is returned. - And the response headers'
code
parameter should contain "CreateFailedException". - And the response headers'
message
parameter should contain "Timeslot conflicts found".
Scenario 3: POST request is incorrect
- Send a POST request to
/timeslots
endpoint with an incorrect key name in the body - Ensure a
422
status code is returned - And the response headers'
code
parameter should contain "InvalidPropertiesException". - And the response headers'
data
parameter should contain the name of the invalid parameter.
Scenario 4: POST request is forbidden
- Send a POST request to
/timeslots
endpoint with astudent
account token. - Ensure a
403
forbidden status code is returned. - And the response headers'
code
parameter should contain "ForbiddenException"
Scenario 5: POST request is unauthorized
- Send a POST request to
/timeslots
endpoint without an authorization token - Ensure a
401
unauthorized status code is returned. - And the response headers'
code
parameter should contain "TokenMissingException"