feat: finalize UI/UX
This commit is contained in:
@@ -16,7 +16,6 @@ class SignUpFormTest(TestCase):
|
||||
"email": "ada@example.com",
|
||||
"company": "Analytical Engines",
|
||||
"phone": "+1 555 0100",
|
||||
"timezone": "UTC",
|
||||
"password1": "Str0ngPass!word",
|
||||
"password2": "Str0ngPass!word",
|
||||
}
|
||||
@@ -26,7 +25,6 @@ class SignUpFormTest(TestCase):
|
||||
self.assertEqual(user.email, "ada@example.com")
|
||||
profile = ClientProfile.objects.get(user=user)
|
||||
self.assertEqual(profile.company, "Analytical Engines")
|
||||
self.assertEqual(profile.timezone, "UTC")
|
||||
|
||||
|
||||
class AccountViewsTest(TestCase):
|
||||
@@ -34,6 +32,15 @@ class AccountViewsTest(TestCase):
|
||||
response = self.client.get(reverse("accounts:signup"))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_logged_out_nav_exposes_login_and_registration(self):
|
||||
response = self.client.get(reverse("pages:home"))
|
||||
navbar = response.content.decode().split("</nav>", 1)[0]
|
||||
|
||||
self.assertIn("Login", navbar)
|
||||
self.assertIn("Start a Project", navbar)
|
||||
self.assertIn(reverse("accounts:login"), navbar)
|
||||
self.assertIn(reverse("accounts:signup"), navbar)
|
||||
|
||||
def test_signup_creates_account_and_logs_in(self):
|
||||
response = self.client.post(
|
||||
reverse("accounts:signup"),
|
||||
@@ -44,7 +51,6 @@ class AccountViewsTest(TestCase):
|
||||
"email": "grace@example.com",
|
||||
"company": "",
|
||||
"phone": "",
|
||||
"timezone": "UTC",
|
||||
"password1": "Str0ngPass!word",
|
||||
"password2": "Str0ngPass!word",
|
||||
},
|
||||
@@ -58,6 +64,47 @@ class AccountViewsTest(TestCase):
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertIn(reverse("accounts:login"), response.url)
|
||||
|
||||
def test_authenticated_nav_uses_sidebar_for_account_actions(self):
|
||||
user = User.objects.create_user(
|
||||
username="workspace-user",
|
||||
email="workspace@example.com",
|
||||
password="Str0ngPass!word",
|
||||
)
|
||||
self.client.force_login(user)
|
||||
|
||||
response = self.client.get(reverse("projects:dashboard"))
|
||||
|
||||
self.assertContains(response, "Profile & account")
|
||||
self.assertContains(response, "Project briefs")
|
||||
navbar = response.content.decode().split("</nav>", 1)[0]
|
||||
self.assertNotIn("My Projects", navbar)
|
||||
self.assertNotIn("Logout", navbar)
|
||||
self.assertIn("navbar-account", navbar)
|
||||
self.assertIn("navbar-account-dropdown", navbar)
|
||||
self.assertIn("Your profile", navbar)
|
||||
self.assertIn("New project brief", navbar)
|
||||
self.assertIn("Contact support", navbar)
|
||||
self.assertIn("Sign out", navbar)
|
||||
self.assertIn("default-avatar.png", navbar)
|
||||
|
||||
def test_profile_exposes_professional_fields_and_avatar_upload(self):
|
||||
user = User.objects.create_user(
|
||||
username="researcher",
|
||||
first_name="Marie",
|
||||
last_name="Curie",
|
||||
email="marie@example.com",
|
||||
password="Str0ngPass!word",
|
||||
)
|
||||
self.client.force_login(user)
|
||||
|
||||
response = self.client.get(reverse("accounts:profile"))
|
||||
|
||||
self.assertContains(response, 'enctype="multipart/form-data"')
|
||||
self.assertContains(response, 'name="avatar"')
|
||||
self.assertContains(response, 'name="job_title"')
|
||||
self.assertContains(response, 'name="bio"')
|
||||
self.assertNotContains(response, 'name="timezone"')
|
||||
|
||||
def test_logout_requires_post_and_clears_session(self):
|
||||
self.client.login(username="newclient", password="Str0ngPass!word")
|
||||
response = self.client.get(reverse("accounts:logout"))
|
||||
|
||||
Reference in New Issue
Block a user