예제 #1
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)
예제 #2
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)
예제 #3
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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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')
예제 #7
0
    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)