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_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_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_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_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_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)