From f3cfdbce881255071b16e3b71fef2595aceee484 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 03:13:53 +0000 Subject: [PATCH] Add unit tests for SettingsForm class - Test invalid form with missing required fields (email, name) - Test valid form saved without commit (commit=False) - Test valid form saved with commit (commit=True) - Test optional password field behavior (empty password doesn't change user password) All tests follow existing patterns and cover the three requested scenarios: 1) Form is invalid (missing fields) 2) Form is valid and saved but not committed 3) Form is valid and both saved and committed Co-Authored-By: Jude Partovi --- realworld/accounts/tests.py | 85 ++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/realworld/accounts/tests.py b/realworld/accounts/tests.py index 073e947..5b8cfa7 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,89 @@ def test_save(self): self.assertTrue(user.check_password("testpass1")) +class TestSettingsForm(TestCase): + form_data = { + "name": "Updated Tester", + "email": "updated@gmail.com", + "bio": "This is my bio", + "image": "https://example.com/image.jpg", + "password": "newpass123", + } + + def test_invalid_form_missing_fields(self): + form_data = self.form_data.copy() + del form_data["email"] + form = SettingsForm(form_data) + self.assertFalse(form.is_valid()) + self.assertIn("email", form.errors) + + form_data = self.form_data.copy() + del form_data["name"] + form = SettingsForm(form_data) + self.assertFalse(form.is_valid()) + self.assertIn("name", form.errors) + + def test_save_without_commit(self): + user = User.objects.create_user( + "original@gmail.com", name="Original User", password="oldpass" + ) + + form = SettingsForm(self.form_data, instance=user) + self.assertTrue(form.is_valid()) + + updated_user = form.save(commit=False) + + self.assertEqual(updated_user.email, "updated@gmail.com") + self.assertEqual(updated_user.name, "Updated Tester") + self.assertEqual(updated_user.bio, "This is my bio") + self.assertEqual(updated_user.image, "https://example.com/image.jpg") + self.assertTrue(updated_user.check_password("newpass123")) + + user.refresh_from_db() + self.assertEqual(user.email, "original@gmail.com") + self.assertEqual(user.name, "Original User") + self.assertTrue(user.check_password("oldpass")) + + def test_save_with_commit(self): + user = User.objects.create_user( + "original@gmail.com", name="Original User", password="oldpass" + ) + + form = SettingsForm(self.form_data, instance=user) + self.assertTrue(form.is_valid()) + + updated_user = form.save(commit=True) + + self.assertEqual(updated_user.email, "updated@gmail.com") + self.assertEqual(updated_user.name, "Updated Tester") + self.assertEqual(updated_user.bio, "This is my bio") + self.assertEqual(updated_user.image, "https://example.com/image.jpg") + self.assertTrue(updated_user.check_password("newpass123")) + + user.refresh_from_db() + self.assertEqual(user.email, "updated@gmail.com") + self.assertEqual(user.name, "Updated Tester") + self.assertEqual(user.bio, "This is my bio") + self.assertEqual(user.image, "https://example.com/image.jpg") + self.assertTrue(user.check_password("newpass123")) + + def test_save_without_password_change(self): + user = User.objects.create_user( + "original@gmail.com", name="Original User", password="oldpass" + ) + + form_data = self.form_data.copy() + form_data["password"] = "" + + form = SettingsForm(form_data, instance=user) + self.assertTrue(form.is_valid()) + + updated_user = form.save(commit=True) + + self.assertTrue(updated_user.check_password("oldpass")) + self.assertFalse(updated_user.check_password("newpass123")) + + class TestFollowView(TestCase): password = "testpass"