Skip to content

Commit b08e387

Browse files
test(user): Add comprehensive tests for promo like/unlike endpoint
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.
1 parent 31ca826 commit b08e387

File tree

2 files changed

+451
-0
lines changed

2 files changed

+451
-0
lines changed

promo_code/user/tests/user/base.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,10 @@ def get_user_promo_detail_url(cls, promo_id):
8787
'api-user:user-promo-detail',
8888
kwargs={'id': promo_id},
8989
)
90+
91+
@classmethod
92+
def get_user_promo_like_url(cls, promo_id):
93+
return django.urls.reverse(
94+
'api-user:user-promo-like',
95+
kwargs={'id': promo_id},
96+
)

0 commit comments

Comments
 (0)