Exemplo n.º 1
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)
Exemplo n.º 2
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)
Exemplo n.º 3
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'])
Exemplo n.º 4
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)
Exemplo n.º 5
0
    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/')
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
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)
Exemplo n.º 9
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)
Exemplo n.º 10
0
    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'])
Exemplo n.º 11
0
    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)
Exemplo n.º 12
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')
Exemplo n.º 13
0
    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)
Exemplo n.º 14
0
    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'])
Exemplo n.º 15
0
    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))
Exemplo n.º 16
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)