from django.test import TestCase, Client from django.urls import reverse from django.contrib.auth import get_user_model User = get_user_model() class LearnerRegistrationTest(TestCase): def setUp(self): self.client = Client() self.url = reverse("lilcity:registration-learner") self.user_data = { "email": "test@example.com", "first_name": "Alice", "last_name": "T", "password": "12345" } def test_get_html_form(self): response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertEqual(response.templates[0].name, 'auth/registration-learner.html') def test_should_create_user(self): self.assertEqual(User.objects.count(), 0) response = self.client.post(self.url, self.user_data) self.assertEqual(response.status_code, 201) self.assertTrue(response.json()['success']) user = User.objects.get(email=self.user_data['email']) self.assertEqual(user.username, self.user_data['email']) self.assertEqual(user.first_name, self.user_data['first_name']) self.assertEqual(user.last_name, self.user_data['last_name']) def test_invalid_data(self): del self.user_data['email'] response = self.client.post(self.url, self.user_data) self.assertEqual(response.status_code, 400) self.assertIn('email', response.json()) def test_should_redirect_main_page_when_user_not_anonymous(self): # todo pass