test_namechanges.py 3.3 KB

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