You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

54 lines
1.8 KiB

from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.core import mail
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_send_email_for_verification(self):
self.client.post(self.url, self.user_data)
self.assertEqual(len(mail.outbox), 1)
self.assertListEqual(mail.outbox[0].to, [self.user_data['email']])
def test_should_redirect_main_page_when_user_not_anonymous(self): # todo
pass