test_namechanges.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from datetime import timedelta
  2. from misago.users.namechanges import (
  3. get_left_namechanges,
  4. get_next_available_namechange,
  5. get_username_options,
  6. )
  7. def test_user_without_permission_to_change_name_has_no_changes_left(user):
  8. user_acl = {"name_changes_allowed": 0}
  9. assert get_left_namechanges(user, user_acl) == 0
  10. def test_user_without_namechanges_has_all_changes_left(user):
  11. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  12. assert get_left_namechanges(user, user_acl) == 3
  13. def test_user_own_namechanges_are_subtracted_from_changes_left(user):
  14. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  15. user.set_username("Changed")
  16. assert get_left_namechanges(user, user_acl) == 2
  17. def test_user_own_recent_namechanges_subtract_from_changes_left(user):
  18. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 5}
  19. user.set_username("Changed")
  20. assert get_left_namechanges(user, user_acl) == 2
  21. def test_user_own_expired_namechanges_dont_subtract_from_changes_left(user):
  22. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 5}
  23. username_change = user.set_username("Changed")
  24. username_change.changed_on -= timedelta(days=10)
  25. username_change.save()
  26. assert get_left_namechanges(user, user_acl) == 3
  27. def test_user_namechanges_by_other_users_dont_subtract_from_changes_left(user):
  28. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  29. username_change = user.set_username("Changed")
  30. username_change.changed_by = None
  31. username_change.save()
  32. assert get_left_namechanges(user, user_acl) == 3
  33. def test_user_next_available_namechange_is_none_for_user_with_changes_left(user):
  34. user_acl = {"name_changes_allowed": 3, "name_changes_expire": 0}
  35. assert get_next_available_namechange(user, user_acl, 3) is None
  36. def test_user_next_available_namechange_is_none_if_own_namechanges_dont_expire(user):
  37. user_acl = {"name_changes_allowed": 1, "name_changes_expire": 0}
  38. user.set_username("Changed")
  39. assert get_next_available_namechange(user, user_acl, 0) is None
  40. def test_user_next_available_namechange_is_calculated_if_own_namechanges_expire(user):
  41. user_acl = {"name_changes_allowed": 1, "name_changes_expire": 1}
  42. username_change = user.set_username("Changed")
  43. next_change_on = get_next_available_namechange(user, user_acl, 0)
  44. assert next_change_on
  45. assert next_change_on == username_change.changed_on + timedelta(days=1)