test_namechanges.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from datetime import timedelta
  2. from django.contrib.auth import get_user_model
  3. from django.test import TestCase
  4. from misago.users.namechanges import (
  5. get_next_available_namechange,
  6. get_left_namechanges,
  7. get_username_options,
  8. )
  9. User = get_user_model()
  10. class UsernameChangesTests(TestCase):
  11. def test_user_without_permission_to_change_name_has_no_changes_left(self):
  12. user = User.objects.create_user("User", "test@example.com")
  13. user_acl = {"name_changes_allowed": 0}
  14. assert get_left_namechanges(user, user_acl) == 0
  15. def test_user_without_namechanges_has_all_changes_left(self):
  16. user = User.objects.create_user("User", "test@example.com")
  17. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  18. assert get_left_namechanges(user, user_acl) == 3
  19. def test_user_own_namechanges_are_subtracted_from_changes_left(self):
  20. user = User.objects.create_user("User", "test@example.com")
  21. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  22. user.set_username("Changed")
  23. assert get_left_namechanges(user, user_acl) == 2
  24. def test_user_own_recent_namechanges_subtract_from_changes_left(self):
  25. user = User.objects.create_user("User", "test@example.com")
  26. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 5}
  27. user.set_username("Changed")
  28. assert get_left_namechanges(user, user_acl) == 2
  29. def test_user_own_expired_namechanges_dont_subtract_from_changes_left(self):
  30. user = User.objects.create_user("User", "test@example.com")
  31. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 5}
  32. username_change = user.set_username("Changed")
  33. username_change.changed_on -= timedelta(days=10)
  34. username_change.save()
  35. assert get_left_namechanges(user, user_acl) == 3
  36. def test_user_namechanges_by_other_users_dont_subtract_from_changes_left(self):
  37. user = User.objects.create_user("User", "test@example.com")
  38. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  39. username_change = user.set_username("Changed")
  40. username_change.changed_by = None
  41. username_change.save()
  42. assert get_left_namechanges(user, user_acl) == 3
  43. def test_user_next_available_namechange_is_none_for_user_with_changes_left(self):
  44. user = User.objects.create_user("User", "test@example.com")
  45. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  46. assert get_next_available_namechange(user, user_acl, 3) is None
  47. def test_user_next_available_namechange_is_none_if_own_namechanges_dont_expire(
  48. self
  49. ):
  50. user = User.objects.create_user("User", "test@example.com")
  51. user_acl = {"name_changes_allowed": 1, "name_changes_expire": 0}
  52. user.set_username("Changed")
  53. assert get_next_available_namechange(user, user_acl, 0) is None
  54. def test_user_next_available_namechange_is_calculated_if_own_namechanges_expire(
  55. self
  56. ):
  57. user = User.objects.create_user("User", "test@example.com")
  58. user_acl = {"name_changes_allowed": 1, "name_changes_expire": 1}
  59. username_change = user.set_username("Changed")
  60. next_change_on = get_next_available_namechange(user, user_acl, 0)
  61. assert next_change_on
  62. assert next_change_on == username_change.changed_on + timedelta(days=1)