From e40e8fea98dc2e917f9f8ead4e600b04afe10f30 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 02:49:48 +0000 Subject: [PATCH] Add unit tests for SettingsForm - Test all fields filled scenario - Test partial fields filled scenario - Test valid form with uncommitted save - All tests pass and cover the requested cases Co-Authored-By: Jude Partovi --- realworld/accounts/tests.py | 69 ++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/realworld/accounts/tests.py b/realworld/accounts/tests.py index 073e947..f052fca 100644 --- a/realworld/accounts/tests.py +++ b/realworld/accounts/tests.py @@ -4,7 +4,7 @@ from django.test import TestCase from django.urls import reverse, reverse_lazy -from .forms import UserCreationForm +from .forms import SettingsForm, UserCreationForm User = get_user_model() @@ -47,6 +47,73 @@ def test_save(self): self.assertTrue(user.check_password("testpass1")) +class TestSettingsForm(TestCase): + def setUp(self): + self.user = User.objects.create_user( + email="testuser@example.com", + name="Test User", + password="oldpassword123" + ) + + def test_all_fields_filled(self): + form_data = { + "email": "updated@example.com", + "name": "Updated Name", + "bio": "This is my updated bio", + "image": "https://example.com/avatar.jpg", + "password": "newpassword123", + } + form = SettingsForm(form_data, instance=self.user) + self.assertTrue(form.is_valid()) + + updated_user = form.save() + self.assertEqual(updated_user.email, "updated@example.com") + self.assertEqual(updated_user.name, "Updated Name") + self.assertEqual(updated_user.bio, "This is my updated bio") + self.assertEqual(updated_user.image, "https://example.com/avatar.jpg") + self.assertTrue(updated_user.check_password("newpassword123")) + + def test_partial_fields_filled(self): + form_data = { + "email": "partial@example.com", + "name": "Partial Name", + "bio": "", + "image": "", + "password": "", + } + form = SettingsForm(form_data, instance=self.user) + self.assertTrue(form.is_valid()) + + updated_user = form.save() + self.assertEqual(updated_user.email, "partial@example.com") + self.assertEqual(updated_user.name, "Partial Name") + self.assertEqual(updated_user.bio, "") + self.assertIsNone(updated_user.image) + self.assertTrue(updated_user.check_password("oldpassword123")) + + def test_valid_form_uncommitted_save(self): + form_data = { + "email": "uncommitted@example.com", + "name": "Uncommitted Name", + "bio": "Uncommitted bio", + "image": "https://example.com/uncommitted.jpg", + "password": "uncommittedpass123", + } + form = SettingsForm(form_data, instance=self.user) + self.assertTrue(form.is_valid()) + + updated_user = form.save(commit=False) + self.assertEqual(updated_user.email, "uncommitted@example.com") + self.assertEqual(updated_user.name, "Uncommitted Name") + self.assertEqual(updated_user.bio, "Uncommitted bio") + self.assertEqual(updated_user.image, "https://example.com/uncommitted.jpg") + self.assertTrue(updated_user.check_password("uncommittedpass123")) + + db_user = User.objects.get(pk=self.user.pk) + self.assertEqual(db_user.email, "testuser@example.com") + self.assertTrue(db_user.check_password("oldpassword123")) + + class TestFollowView(TestCase): password = "testpass"