feat: add multi-ID delete support with per-ID results
- Add delete_bounties() method to BountyService that returns individual results per bounty ID (deleted, not_found, permission_denied) - Update cmd_delete to accept multiple IDs and show per-ID messages - Add 3 tests for delete_bounties method Example output: /delete 1 2 3 ✅ Bounty #1 deleted. ✅ Bounty #2 deleted. ⛔ Bounty #3 not found. Fixes #47
This commit is contained in:
@@ -210,6 +210,46 @@ class TestBountyService:
|
||||
result = self.service.delete_bounty(-1001, 999, self.admin_user_id)
|
||||
assert result is False
|
||||
|
||||
def test_delete_bounties_multi_id_success(self):
|
||||
"""Test delete_bounties returns individual results for multiple bounties."""
|
||||
bounty1 = self.service.add_bounty(
|
||||
room_id=-1001, user_id=self.admin_user_id, text="To delete 1"
|
||||
)
|
||||
bounty2 = self.service.add_bounty(
|
||||
room_id=-1001, user_id=self.admin_user_id, text="To delete 2"
|
||||
)
|
||||
results = self.service.delete_bounties(
|
||||
-1001, [bounty1.id, bounty2.id], self.admin_user_id
|
||||
)
|
||||
assert results == {bounty1.id: "deleted", bounty2.id: "deleted"}
|
||||
# Verify both are soft deleted
|
||||
assert self.service.get_bounty(-1001, bounty1.id) is None
|
||||
assert self.service.get_bounty(-1001, bounty2.id) is None
|
||||
|
||||
def test_delete_bounties_mixed_results(self):
|
||||
"""Test delete_bounties returns not_found for non-existent bounties."""
|
||||
bounty = self.service.add_bounty(
|
||||
room_id=-1001, user_id=self.admin_user_id, text="To delete"
|
||||
)
|
||||
results = self.service.delete_bounties(
|
||||
-1001, [bounty.id, 999, 888], self.admin_user_id
|
||||
)
|
||||
assert results == {bounty.id: "deleted", 999: "not_found", 888: "not_found"}
|
||||
|
||||
def test_delete_bounties_permission_denied(self):
|
||||
"""Test delete_bounties returns permission_denied for non-admin users."""
|
||||
bounty = self.service.add_bounty(
|
||||
room_id=-1001, user_id=self.admin_user_id, text="To delete"
|
||||
)
|
||||
results = self.service.delete_bounties(
|
||||
-1001,
|
||||
[bounty.id],
|
||||
999, # non-admin user
|
||||
)
|
||||
assert results == {bounty.id: "permission_denied"}
|
||||
# Verify bounty was NOT deleted
|
||||
assert self.service.get_bounty(-1001, bounty.id) is not None
|
||||
|
||||
|
||||
class TestTrackingService:
|
||||
"""Unit tests for TrackingService."""
|
||||
|
||||
Reference in New Issue
Block a user