def test_user_delete_favourite(self): """ Test that on hitting the delete favourite function when logged in, and in group causes favourite to be deleted """ sale = SaleFactory() user = UserFactory.create(groups=[GroupFactory(name='general')]) SaleFavouriteFactory(property=sale, user=user) request = self.factory.get( reverse('user:favourite', kwargs={ 'type': 'sale', 'slug': sale.slug })) request.user = user request = self.enable_middleware(request) response = UserFavouriteView.as_view()(request, type='sale', slug=sale.slug) favourites = SaleFavourite.objects.filter(user=user, property__slug=sale.slug) # Check that status code is 302 and redirect url is as expected and that the existing favourite was deleted self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/user/dashboard/') self.assertTrue(len(favourites) == 0)
def test_get_will_unsubscribe(self): """ Test that subscribe if not subscribed user is subscribed and redirected back to referer """ user = UserFactory.create(groups=[GroupFactory(name='general')]) alert = AlertFactory(user=user, criteria={ 'test1': 'test', 'test2': 'test' }) request = self.factory.get(reverse('user:subscribe') + "?test1=test&test2=test", HTTP_REFERER='/test/') request.user = user request = super(SubscribeViewTestCase, self).enable_middleware(request) response = UserSubscribeView.as_view()(request) alerts = Alert.objects.filter(user=user) # Check status code is 302 and that the url being redirected # back to is /test/ and that the alert is removed self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/test/') self.assertTrue(len(alerts) == 0)
def test_get_context_authenticated_and_subscribed(self): """ Test that on hitting the get_context function when authenticated and subscribed to alert that subscribed returns true """ user = UserFactory() # Subscribe the user to an alert alert = AlertFactory(user=user, criteria={ 'test1': 'test', 'test2': 'test' }) request = self.factory.get( reverse('sales:search') + '?' + urlencode({ 'test1': 'test', 'test2': 'test' })) request.user = user view = super(SearchPageViewTestCase, self).initialize(SearchPageView(), request) view.object_list = [] response = view.get_context_data() # Check if the context has the subscribed key and that it is set to true self.assertIn('subscribed', response) self.assertTrue(response['subscribed'])
def test_user_logged_in_and_in_group(self): """ Test when user logged in and in general group that the dashboard loads """ request = self.factory.get(reverse('user:dashboard')) request.user = UserFactory.create( groups=[GroupFactory(name='general')]) response = UserDashboardPageView.as_view()(request) self.assertEqual(response.status_code, 200) self.assertIn('homes-user/dashboard.html', response.template_name)
def test_user_logged_in_not_in_group(self): """ Test that on hitting the subscribe function when logged in, but not in group causes redirect """ request = self.factory.get(reverse('user:subscribe')) request.user = UserFactory() response = UserSubscribeView.as_view()(request) # Check that status code is 302 and redirect url is as expected self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/accounts/login/?next=/user/subscribe/')
def test_template_name(self): """ Test that the template name of the view is as expected """ sale = SaleFactory() request = self.factory.get( reverse('sales:detail', kwargs={'slug': sale.slug})) request.user = UserFactory() response = DetailPageView.as_view()(request, slug=sale.slug) # Check that the correct template is used for the view self.assertIn('homes-for-sale/detail.html', response.template_name)
def test_template_name(self): """ Test that the template name of the view is as expected """ letting = LettingFactory() request = self.factory.get(reverse('lettings:detail', kwargs={ 'slug': letting.slug })) request.user = UserFactory() response = DetailPageView.as_view()(request, slug=letting.slug) # Check that the correct template is used for the view self.assertIn('homes-to-let/detail.html', response.template_name)
def test_get_context_user_has_alerts(self): """ Test that when user has alerts they are returned """ user = UserFactory.create(groups=[GroupFactory(name='general')]) AlertFactory(user=user) request = self.factory.get(reverse('user:dashboard')) request.user = user response = UserDashboardPageView.as_view()(request) self.assertTrue(len(response.context_data['alerts']) == 1) self.assertIsInstance(response.context_data['alerts'][0], Alert)
def test_get_context(self): """ Test get_context for a logged in user in required group """ request = self.factory.get(reverse('user:dashboard')) request.user = UserFactory.create( groups=[GroupFactory(name='general')]) response = UserDashboardPageView.as_view()(request) # Check context has favourites, favourites.sale and favourites.letting and that # it also has alerts self.assertIn('favourites', response.context_data) self.assertIn('sale', response.context_data['favourites']) self.assertIn('letting', response.context_data['favourites']) self.assertIn('alerts', response.context_data)
def test_favourited_context_is_false(self): """ Test that a property is favourited by the user """ favourite = LettingFavouriteFactory() request = self.factory.get(reverse('lettings:detail', kwargs={ 'slug': favourite.property.slug })) request.user = UserFactory() response = DetailPageView.as_view()(request, slug=favourite.property.slug) # Check that the favourited context data is found but that it is set to false (not favourited) self.assertIn('favourited', response.context_data) self.assertFalse(response.context_data['favourited'])
def test_get_context_keys_correct_type(self): """ Test that the context contains required keys in context """ letting = LettingFactory() request = self.factory.get(reverse('lettings:detail', kwargs={ 'slug': letting.slug })) request.user = UserFactory() response = DetailPageView.as_view()(request, slug=letting.slug) # Check contains contact as LettingContactForm and form as SearchForm self.assertIsInstance(response.context_data['contact'], LettingContactForm) self.assertIsInstance(response.context_data['form'], SearchForm)
def test_user_delete_favourite_property_missing(self): """ Test that on hitting the delete favourite function when logged in, and in group causes 404 if property doesnt exist to delete user favourite from """ user = UserFactory.create(groups=[GroupFactory(name='general')]) request = self.factory.get( reverse('user:favourite', kwargs={ 'type': 'sale', 'slug': 'test' })) request.user = user request = self.enable_middleware(request) with self.assertRaises(Http404): UserFavouriteView.as_view()(request, type='sale', slug='test')
def test_get_context_contains_keys(self): """ Test that the context contains required keys in context """ sale = SaleFactory() request = self.factory.get( reverse('sales:detail', kwargs={'slug': sale.slug})) request.user = UserFactory() response = DetailPageView.as_view()(request, slug=sale.slug) # Check that the context contains the correct keys self.assertIn('contact', response.context_data) self.assertIn('favourited', response.context_data) self.assertIn('form', response.context_data) self.assertIn('google', response.context_data) self.assertIn('recaptcha', response.context_data)
def test_get_context_authenticated_not_subscribed(self): """ Test that on hitting the get_context function when authenticated and subscribed to alert that subscribed returns true """ user = UserFactory() request = self.factory.get(reverse('lettings:search') + '?' + urlencode({'test1': 'test','test2': 'test'})) request.user = user view = super(SearchPageViewTestCase, self).initialize(SearchPageView(), request) view.object_list = [] response = view.get_context_data() # Check that the context has the subscribed key and it is set to false as the user is logged in but there # are no alerts he/she is subscribed to self.assertIn('subscribed', response) self.assertFalse(response['subscribed'])
def test_user_logged_in_not_in_group(self): """ Test that on hitting the favourite function when logged in, but not in group causes redirect """ sale = SaleFactory() request = self.factory.get( reverse('user:favourite', kwargs={ 'type': 'sale', 'slug': sale.slug })) request.user = UserFactory() response = UserFavouriteView.as_view()(request) # Check that status code is 302 and redirect url is as expected self.assertEqual(response.status_code, 302) self.assertEqual( response.url, '/accounts/login/?next=/user/favourite/sale/{}/'.format(sale.slug))
def test_get_context_user_has_favourites(self): """ Test that when user has favourites in sale and letting that they are returned """ user = UserFactory.create(groups=[GroupFactory(name='general')]) SaleFavouriteFactory(user=user) LettingFavouriteFactory(user=user) request = self.factory.get(reverse('user:dashboard')) request.user = user response = UserDashboardPageView.as_view()(request) self.assertTrue(len(response.context_data['favourites']['sale']) == 1) self.assertTrue( len(response.context_data['favourites']['letting']) == 1) self.assertIsInstance(response.context_data['favourites']['sale'][0], SaleFavourite) self.assertIsInstance( response.context_data['favourites']['letting'][0], LettingFavourite)