from django.test import TestCase from oscar.apps.customer.forms import ProfileForm from oscar.core.compat import existing_user_fields, get_user_model from oscar.test.factories import ProductAlertFactory, UserFactory class TestACustomUserModel(TestCase): def setUp(self): self.user_klass = get_user_model() def test_can_be_created_without_error(self): try: self.user_klass.objects.create_user("_", "a@a.com", "pa55w0rd") except Exception as e: self.fail("Unable to create user model: %s" % e) def test_extra_field_is_accessible(self): self.assertTrue("extra_field" in existing_user_fields(["extra_field"])) self.assertTrue(hasattr(self.user_klass(), "extra_field")) def test_profile_form_doesnt_expose_extra_field(self): form = ProfileForm(self.user_klass()) expected_fields = set(["first_name", "last_name", "email"]) self.assertTrue(expected_fields == set(form.fields)) def test_migrate_alerts_to_user(self): user = UserFactory(email="a@a.com") ProductAlertFactory(email=user.email) user._migrate_alerts_to_user() assert user.alerts.count() == 1