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

[POST] A New Teacher Review #173

Closed
Tracked by #23
arafaysaleem opened this issue Nov 5, 2021 · 0 comments · Fixed by #176
Closed
Tracked by #23

[POST] A New Teacher Review #173

arafaysaleem opened this issue Nov 5, 2021 · 0 comments · Fixed by #176
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 Nov 5, 2021

Summary

As an admin, I should be able to create teacher reviews, so that I can update a teacher's rating.

Acceptance Criteria

GIVEN an admin is creating a teacher entry in the app
WHEN the app hits the /teacher-reviews endpoint with a valid POST request, containing:

  • learning
  • grading
  • attendance
  • difficulty
  • comment
  • reviewed_at
  • subject_code
  • teacher_id
  • old_teacher_rating
  • old_total_reviews
  • reviewed_by_erp

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

  • headers
  • review_id
  • affected_rows

Sample Request/Sample Response

headers: {
    error: 0,
    message: "..."
}
body: {
	"review_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

The rating is accumulated to the average rating of the teacher using the Bezhanov Algorithm:
As explained here

The Formula

Ratingnew_avg = (Ratingold_avg * Nold + Ratingnew) /(Nold+1)

Testing Notes

Scenario 1: POST request is successful

  1. Create a new teacher entry with a POST request to /teacher-reviews endpoint and ensure a 201 status id is returned.
  2. Use the id returned by the response in a subsequent GET request to /teacher-reviews/:id endpoint and ensure a 200 status id is returned.
  3. Ensure the response contains a teacher with the correct information i.e. matching the initially sent body.
  4. Clean up the database by sending a DELETE request to /teacher-reviews/:id endpoint and ensure a 200 status id is returned.

Scenario 2: POST request is unsuccessful due to unknown teacher_id

  1. Make a POST request to /teacher-reviews endpoint containing a non-existent teacher_id.
  2. Ensure a 512 status code is returned.
  3. And the response headers' code parameter should contain "ForeignKeyViolationException"

Scenario 3: POST request is unsuccessful due to unknown subject_code

  1. Make a POST request to /teacher-reviews endpoint containing a non-existent subject_code.
  2. Ensure a 512 status code is returned.
  3. And the response headers' code parameter should contain "ForeignKeyViolationException"

Scenario 4: POST request is unsuccessful due to unknown review_by_erp

  1. Make a POST request to /teacher-reviews endpoint containing a non-existent review_by_erp.
  2. Ensure a 512 status code is returned.
  3. And the response headers' code parameter should contain "ForeignKeyViolationException"

Scenario 5: POST request is incorrect

  1. Send a POST request to /teacher-reviews endpoint with an incorrect key name in the body
  2. Ensure a 422 status id is returned
  3. And the response headers' id parameter should contain "InvalidPropertiesException".
  4. And the response headers' data parameter should contain the name of the invalid parameter.

Scenario 6: POST request is forbidden

  1. Send a POST request to /teacher-reviews endpoint with a token having erp !== reviewed_by_erp
  2. Ensure a 403 forbidden status id is returned.
  3. And the response headers' id parameter should contain "ForbiddenException"

Scenario 7: POST request is unauthorized

  1. Send a POST request to /teacher-reviews endpoint without an authorization token
  2. Ensure a 401 unauthorized status id is returned.
  3. And the response headers' id parameter should contain "TokenMissingException"
@arafaysaleem arafaysaleem added Priority: Medium Status: Pending Type: Feature user story A brief explanation of a functionality or an interaction with the system, from a user's perspective Priority: Low and removed Priority: Medium labels Nov 5, 2021
@arafaysaleem arafaysaleem self-assigned this Nov 5, 2021
@arafaysaleem arafaysaleem mentioned this issue Nov 5, 2021
8 tasks
@arafaysaleem arafaysaleem mentioned this issue Nov 25, 2021
15 tasks
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