def setUp(self): Site.objects.get_or_create(id=settings.SITE_ID, domain='example.com', name='example.com') self.obj = get_usersettings_model().objects.create( **self.usersettings_data) self.user = get_user_model().objects.create_superuser( self.username, self.email, self.password) self.assertTrue( self.client.login(username=self.username, password=self.password), 'Failed to login user %s' % self.email) factory = RequestFactory() request = factory.get('/admin') request.user = self.user request.session = {} self.request = request self.settings_admin = SettingsAdmin(get_usersettings_model(), AdminSite()) # Hack to test this function as it calls 'messages.add' # See https://code.djangoproject.com/ticket/17971 setattr(self.request, 'session', 'session') messages = FallbackStorage(self.request) setattr(self.request, '_messages', messages)
class TestUserSettingsShotcuts(TestCase): usersettings_model = get_usersettings_model() usersettings_data = { 'site_id': settings.SITE_ID, 'user_id': 1, 'site_title': 'Site Title', 'tag_line': 'Friends don\'t let friends use Drupal', 'street_address': '1600 Amphitheatre Parkway', 'address_locality': 'Mountain View', 'address_region': 'CA', 'postal_code': '94043', 'telephone': '+1 650-253-0000', } def setUp(self): Site.objects.get_or_create(id=settings.SITE_ID, domain='example.com', name='example.com') self.usersettings_model.objects.create(**self.usersettings_data) def test_get_current_usersettings(self): # Test that the correct UserSettings object is returned current_usersettings = get_current_usersettings() self.assertIsInstance(current_usersettings, self.usersettings_model) @override_settings(USERSETTINGS_MODEL='SiteSettings') def test_get_usersettings_model_fails_with_improper_settings(self): self.assertRaises(ImproperlyConfigured, get_usersettings_model)
class MiddlewareTest(TestCase): usersettings_model = get_usersettings_model() usersettings_data = { 'site_id': settings.SITE_ID, 'user_id': 1, 'site_title': 'Site Title', 'tag_line': 'Friends don\'t let friends use Drupal', 'street_address': '1600 Amphitheatre Parkway', 'address_locality': 'Mountain View', 'address_region': 'CA', 'postal_code': '94043', 'telephone': '+1 650-253-0000', } def setUp(self): Site.objects.get_or_create(id=settings.SITE_ID, domain='example.com', name='example.com') self.usersettings_model.objects.create(**self.usersettings_data) def test_request(self): """ Makes sure that the request has correct `usersettings` attribute. """ middleware = CurrentUserSettingsMiddleware() request = HttpRequest() middleware.process_request(request) self.assertEqual(request.usersettings.site.id, settings.SITE_ID)
def test_save_model_saves_logged_in_user(self): self.settings_admin.save_model(self.request, self.obj, form=None, change=False) usersettings = get_usersettings_model().objects.get( site_id=settings.SITE_ID) self.assertEqual(usersettings.user, self.user)
def __init__(self, *args, **kwargs): super(UserSettingsToolbar, self).__init__(*args, **kwargs) self.model = get_usersettings_model() self.opts = self.model._meta try: self.model_name = self.opts.model_name except AttributeError: self.model_name = self.opts.module_name
def setUp(self): Site.objects.get_or_create(id=settings.SITE_ID, domain='example.com', name='example.com') self.obj = get_usersettings_model().objects.create(**self.usersettings_data) self.user = get_user_model().objects.create_superuser( self.username, self.email, self.password) self.assertTrue(self.client.login( username=self.username, password=self.password), 'Failed to login user %s' % self.email) factory = RequestFactory() request = factory.get('/admin') request.user = self.user request.session = {} self.request = request self.settings_admin = SettingsAdmin(get_usersettings_model(), AdminSite()) # Hack to test this function as it calls 'messages.add' # See https://code.djangoproject.com/ticket/17971 setattr(self.request, 'session', 'session') messages = FallbackStorage(self.request) setattr(self.request, '_messages', messages)
class MiddlewareTest(TestCase): usersettings_model = get_usersettings_model() usersettings_data = { 'site_id': settings.SITE_ID, 'user_id': 1, 'site_title': 'Site Title', 'tag_line': 'Friends don\'t let friends use Drupal', 'street_address': '1600 Amphitheatre Parkway', 'address_locality': 'Mountain View', 'address_region': 'CA', 'postal_code': '94043', 'telephone': '+1 650-253-0000', } def setUp(self): Site.objects.get_or_create(id=settings.SITE_ID, domain='example.com', name='example.com') self.usersettings_model.objects.create(**self.usersettings_data) def test_context_processors(self): """ Test the `usersettings` attribute is available as context in templates """ resp = self.client.get(reverse('current_usersettings')) self.assertEqual(200, resp.status_code) self.failUnless(isinstance(resp.context['usersettings'], self.usersettings_model)) @override_settings( MIDDLEWARE_CLASSES=( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',) ) def test_context_processors_without_middleware(self): """ Test usersettings context_processors still works without the custom middleware """ resp = self.client.get(reverse('current_usersettings')) self.assertEqual(200, resp.status_code) self.failUnless(isinstance(resp.context['usersettings'], self.usersettings_model))
class AdminTest(TestCase): username = '******' email = '*****@*****.**' password = '******' test_sites = ( 'google.com', 'facebook.com', 'youtube.com', 'yahoo.com', 'wikipedia.org', ) usersettings_data = { 'site_id': settings.SITE_ID, 'user_id': 2, 'site_title': 'Site Title', 'tag_line': 'Friends don\'t let friends use Drupal', 'street_address': '1600 Amphitheatre Parkway', 'address_locality': 'Mountain View', 'address_region': 'CA', 'postal_code': '94043', 'telephone': '+1 650-253-0000', } model_opts = get_usersettings_model()._meta def create_sites(self): for site in self.test_sites: Site.objects.create(domain=site, name=site) def get_model_info(self): # module_name is renamed to model_name in Django 1.8 app_label = self.model_opts.app_label try: return app_label, self.model_opts.model_name except AttributeError: return app_label, self.model_opts.module_name def setUp(self): Site.objects.get_or_create(id=settings.SITE_ID, domain='example.com', name='example.com') self.obj = get_usersettings_model().objects.create( **self.usersettings_data) self.user = get_user_model().objects.create_superuser( self.username, self.email, self.password) self.assertTrue( self.client.login(username=self.username, password=self.password), 'Failed to login user %s' % self.email) factory = RequestFactory() request = factory.get('/admin') request.user = self.user request.session = {} self.request = request self.settings_admin = SettingsAdmin(get_usersettings_model(), AdminSite()) # Hack to test this function as it calls 'messages.add' # See https://code.djangoproject.com/ticket/17971 setattr(self.request, 'session', 'session') messages = FallbackStorage(self.request) setattr(self.request, '_messages', messages) def test_has_add_permission(self): # now this should return False, as there is only 1 site # and we have already created an usersettings self.assertFalse(self.settings_admin.has_add_permission(self.request)) def test_save_model_saves_logged_in_user(self): self.settings_admin.save_model(self.request, self.obj, form=None, change=False) usersettings = get_usersettings_model().objects.get( site_id=settings.SITE_ID) self.assertEqual(usersettings.user, self.user) def test_get_site_choices(self): self.create_sites() # this should return a tuple self.assertTrue( len(self.settings_admin.get_site_choices()) == len(self.test_sites) + 1) def test_changelist_view_redirects_automatically(self): """ There is only 1 obj.. we should redirect to it, when trying to access changelist """ change_url = reverse('admin:%s_%s_change' % self.get_model_info(), args=(self.obj.pk, )) changelist_url = reverse('admin:%s_%s_changelist' % self.get_model_info()) resp = self.client.get(changelist_url) self.assertRedirects(resp, change_url) @override_settings( MIDDLEWARE_CLASSES=( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', ), ) def test_chagelist_view_redirects_to_add_view(self): """ We have 1 site in database, we should redirect to add view, """ # we delete the object created at setUp() self.obj.delete() add_url = '%s?site_id=%s' % (reverse( 'admin:%s_%s_add' % self.get_model_info()), settings.SITE_ID) # if we try to access the changelist, it should redirect to add view changelist_url = reverse('admin:%s_%s_changelist' % self.get_model_info()) resp = self.client.get(changelist_url) self.assertRedirects(resp, add_url) def test_add_view_raises_403(self): # we already have usersettings for all sites, so cant add anymore. add_url = reverse('admin:%s_%s_add' % self.get_model_info()) resp = self.client.get(add_url) self.assertEqual(resp.status_code, 403) def test_add_view_shows_select_site_form(self): # we crete lots of sites self.create_sites() # this should show te select site form add_url = reverse('admin:%s_%s_add' % self.get_model_info()) resp = self.client.get(add_url) self.assertIsInstance(resp.context['adminform'].form, SelectSiteForm) def test_add_view_shows_select_site_if_given_site_id_does_not_exist(self): # we crete lots of sites self.create_sites() # this should show te select site form add_url = '%s?site_id=%s' % (reverse( 'admin:%s_%s_add' % self.get_model_info()), 999) resp = self.client.get(add_url) self.assertIsInstance(resp.context['adminform'].form, SelectSiteForm) def test_add_view_redirects_to_changeview_for_existing_usersettings(self): add_url = '%s?site_id=%s' % (reverse( 'admin:%s_%s_add' % self.get_model_info()), settings.SITE_ID) change_url = reverse('admin:%s_%s_change' % self.get_model_info(), args=(self.obj.pk, )) resp = self.client.get(add_url) self.assertRedirects(resp, change_url) def tearDown(self): self.client.logout()
def test_save_model_saves_logged_in_user(self): self.settings_admin.save_model(self.request, self.obj, form=None, change=False) usersettings = get_usersettings_model().objects.get(site_id=settings.SITE_ID) self.assertEqual(usersettings.user, self.user)
def __init__(self, *args, **kwargs): super(UserSettingsToolbar, self).__init__(*args, **kwargs) self.model = get_usersettings_model() self.opts = self.model._meta
class TestUserSettingsModel(TestCase): usersettings_model = get_usersettings_model() usersettings_data = { 'site_id': settings.SITE_ID, 'user_id': 1, 'site_title': 'Site Title', 'tag_line': 'Friends don\'t let friends use Drupal', 'street_address': '1600 Amphitheatre Parkway', 'address_locality': 'Mountain View', 'address_region': 'CA', 'postal_code': '94043', 'telephone': '+1 650-253-0000', } def setUp(self): Site.objects.get_or_create(id=settings.SITE_ID, domain='example.com', name='example.com') def create_usersettings(self): return self.usersettings_model.objects.create(**self.usersettings_data) def test_add_user_settings(self): self.create_usersettings() self.assertEqual(self.usersettings_model.objects.all().count(), 1) def test_usersettings_manager(self): # Make sure that get_current() does not return a deleted UserSettings object. self.create_usersettings() current_usersettings = self.usersettings_model.objects.get_current() self.assertIsInstance(current_usersettings, self.usersettings_model) current_usersettings.delete() self.assertRaises(ObjectDoesNotExist, self.usersettings_model.objects.get_current) def test_usersettings_cache(self): # After updating a UserSettings object (e.g. via the admin), we shouldn't return a # bogus value from the USERSETTINGS_CACHE. self.create_usersettings() current_usersettings = self.usersettings_model.objects.get_current() self.assertEqual(self.usersettings_data['site_title'], current_usersettings.site_title) usersettings2 = self.usersettings_model.objects.get_current() usersettings2.site_title = 'Django is AWESOME' usersettings2.save() current_usersettings = self.usersettings_model.objects.get_current() self.assertEqual('Django is AWESOME', current_usersettings.site_title) def test_delete_all_usersettings_clears_cache(self): """ When all UserSettings objects are deleted the cache should also be cleared and get_current_usersettings() should raise a DoesNotExist.""" self.create_usersettings() self.assertIsInstance(self.usersettings_model.objects.get_current(), self.usersettings_model) self.usersettings_model.objects.all().delete() self.assertRaises(self.usersettings_model.DoesNotExist, self.usersettings_model.objects.get_current) def test_clear_cache(self): self.create_usersettings() # this will cache the current usersettings as USERSETTINGS_CACHE self.usersettings_model.objects.get_current() # we clear all USERSETTINGS_CACHE self.usersettings_model.objects.clear_cache() # test to ensure USERSETTINGS_CACHE is empty from usersettings.models import USERSETTINGS_CACHE self.assertDictEqual(USERSETTINGS_CACHE, {})