Skip to content

Conversation

@RandomProgramm3r
Copy link
Owner

This commit introduces a suite of DRF (Django REST Framework) unit/integration tests for the api/user/promo/{id}/like endpoint.

The tests cover the following key scenarios:

  • Initial state verification:
    • like_count is 0 and is_liked_by_user is false for a new promo.
    • Company view also reflects like_count as 0.
  • Liking a promo:
    • A user can successfully like a promo.
    • like_count increments correctly.
    • is_liked_by_user becomes true for the liking user.
  • Idempotency of liking:
    • Liking an already liked promo returns a successful response without altering the like count further.
  • Multiple users liking the same promo:
    • like_count reflects likes from different users.
    • is_liked_by_user status is accurate for each respective user.
  • Unliking a promo:
    • A user can successfully unlike a promo they previously liked.
    • like_count decrements correctly.
    • is_liked_by_user becomes false for the unliking user.
  • Idempotency of unliking:
    • Unliking a promo not currently liked by the user (or already unliked) returns a successful response without errors or incorrect state changes.
  • Verification of state from different perspectives (liking user, other users, company).

These tests ensure the reliability and correct behavior of the promo liking feature, including its idempotency and accurate reflection of like statuses and counts.

- Swap and rename `promo_detail_url` → `get_user_promo_detail_url` and
  `get_promo_business_detail_url` → `get_business_promo_detail_url`
- Improve readability and ensure consistent naming across tests
This commit introduces a suite of DRF (Django REST Framework) unit/integration tests for the `api/user/promo/{id}/like` endpoint.

The tests cover the following key scenarios:
- Initial state verification:
    - `like_count` is 0 and `is_liked_by_user` is false for a new promo.
    - Company view also reflects `like_count` as 0.
- Liking a promo:
    - A user can successfully like a promo.
    - `like_count` increments correctly.
    - `is_liked_by_user` becomes true for the liking user.
- Idempotency of liking:
    - Liking an already liked promo returns a successful response without altering the like count further.
- Multiple users liking the same promo:
    - `like_count` reflects likes from different users.
    - `is_liked_by_user` status is accurate for each respective user.
- Unliking a promo:
    - A user can successfully unlike a promo they previously liked.
    - `like_count` decrements correctly.
    - `is_liked_by_user` becomes false for the unliking user.
- Idempotency of unliking:
    - Unliking a promo not currently liked by the user (or already unliked) returns a successful response without errors or incorrect state changes.
- Verification of state from different perspectives (liking user, other users, company).

These tests ensure the reliability and correct behavior of the promo liking feature, including its idempotency and accurate reflection of like statuses and counts.
@RandomProgramm3r RandomProgramm3r merged commit 370e899 into main May 14, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant