test_deleteprofilefield.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from io import StringIO
  2. from django.contrib.auth import get_user_model
  3. from django.core.management import call_command
  4. from django.test import TestCase
  5. from misago.users.management.commands import deleteprofilefield
  6. UserModel = get_user_model()
  7. class DeleteProfileFieldTests(TestCase):
  8. def test_no_fieldname(self):
  9. """utility has no showstoppers when no fieldname is given"""
  10. out = StringIO()
  11. call_command(deleteprofilefield.Command(), stderr=out)
  12. command_output = out.getvalue().splitlines()[0].strip()
  13. self.assertEqual(command_output, "Specify fieldname to delete.")
  14. def test_no_fields_set(self):
  15. """utility has no showstoppers when no fields are set"""
  16. out = StringIO()
  17. call_command(deleteprofilefield.Command(), "gender", stdout=out)
  18. command_output = out.getvalue().splitlines()[0].strip()
  19. self.assertEqual(
  20. command_output, '"gender" profile field has been deleted from 0 users.'
  21. )
  22. def test_delete_fields(self):
  23. """utility has no showstoppers when no fields are set"""
  24. user = UserModel.objects.create_user("Bob", "bob@bob.com", "pass123")
  25. user.profile_fields = {"gender": "male", "bio": "Yup!"}
  26. user.save()
  27. out = StringIO()
  28. call_command(deleteprofilefield.Command(), "gender", stdout=out)
  29. command_output = out.getvalue().splitlines()[0].strip()
  30. self.assertEqual(
  31. command_output, '"gender" profile field has been deleted from 1 users.'
  32. )
  33. user = UserModel.objects.get(pk=user.pk)
  34. self.assertEqual(user.profile_fields, {"bio": "Yup!"})