def test_filterads(self): # Filter without results request = self.factory.get('/', data={'brand': 'nobrand'}) user = UserFactory.create() request.user = user response = views.AdSearchView.as_view(model=TestAd, no_results_msg="no", results_msg="yes")(request) # Be sure that no is in messages self.assertTrue('no' in [i.message for i in request._messages]) # Filter with results test_ads = TestAdFactory.create_batch(12) # client try to filter search # and get at lead one result request = self.factory.get('/', data={'brand': test_ads[0].brand}) user = UserFactory.create() request.user = user response = views.AdSearchView.as_view(model=TestAd, no_results_msg="no", results_msg="yes")(request) # Be sure that yes is in messages self.assertTrue('yes' in [i.message for i in request._messages]) # check that we don't return initial ads self.assertTrue('initial_ads' not in response.context_data) # check that the user have a form to save it search self.assertTrue('ad_search_form' in response.context_data) # or get 0 results request = self.factory.get('/', data={'brand': 'nologo'}) request.user = user response = views.AdSearchView.as_view(model=TestAd)(request)
def test_create(self): # get form request = self.factory.get('/') user = UserFactory.create() request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) # valid form_data = {'brand': 'my_guitar', 'user_entered_address': '5 rue de Vernueil, Paris', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0} request = self.factory.post('/', data=form_data, files=[]) user = UserFactory.create() request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) # invalid form_data = {'brand': 'my_guitar', 'user_entered_address': 'fkjfkjfkjfkj', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0} request = self.factory.post('/', data=form_data, files=[]) user = UserFactory.create() request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) self.assertEqual(response.context_data['form'].errors['user_entered_address'], [u'Indiquer une adresse valide.'])
def test_create_update_read__delete_search(self): test_ad = TestAdFactory.create() # here we build a search ad form # create location = "SRID%3D900913%3BPOLYGON((2.3886182861327825+48.834761790252024%2C2.2773817138671575+48.837925498723266%2C2.3251035766601262+48.87180983721773%2C2.4023511962890325+48.87293892019383%2C2.3886182861327825+48.834761790252024))" request = self.factory.post('/', data={'search': 'brand=' + test_ad.brand + '&location=' + location}) user = UserFactory.create() request.user = user response = views.AdSearchView.as_view(model=TestAd)(request) ad_search = AdSearch.objects.all().filter(user=user)[0] # update request = self.factory.post('/', data={'search': 'brand=' + test_ad.brand}) request.user = user response = views.AdSearchView.as_view(model=TestAd)(request, search_id=ad_search.pk) # read request = self.factory.get('/') request.user = user response = views.AdSearchView.as_view(model=TestAd)(request, search_id=ad_search.pk) not_ad_search_owner_user = UserFactory.create() request = self.factory.get('/') request.user = not_ad_search_owner_user view = views.AdSearchView.as_view(model=TestAd) self.assertRaises(Http404, view, request, search_id=ad_search.pk) # delete request = self.factory.get('/') # by non authorized user request.user = not_ad_search_owner_user view = views.AdSearchDeleteView.as_view() self.assertRaises(Http404, view, request, pk=ad_search.pk) # by authorized user (owner of ad search) request = self.factory.post('/') request.user = ad_search.user response = views.AdSearchDeleteView.as_view()(request, pk=ad_search.pk)
def test_create(self): # get form request = self.factory.get('/') user = UserFactory.create() request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) # valid form_data = { 'brand': 'my_guitar', 'user_entered_address': '5 rue de Verneuil, Paris', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0 } request = self.factory.post('/', data=form_data, files=[]) user = UserFactory.create() request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) # invalid form_data = { 'brand': 'my_guitar', 'user_entered_address': 'fkjfkjfkjfkj', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0 } request = self.factory.post('/', data=form_data, files=[]) user = UserFactory.create() request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) self.assertEqual( response.context_data['form'].errors['user_entered_address'], [u'Indiquer une adresse valide.'])
def test_send_message(self): with mock_signal_receiver(geoad_user_message) as user_message: test_ad = TestAdFactory.create() user = UserFactory.create() request = self.factory.post('/', data={'message': 'Hi buddy !'}) request.user = user response = views.AdDetailView.as_view(model=TestAd)(request, pk=test_ad.pk) # verify mail is sent self.assertEquals(user_message.call_count, 1)
def test_create_update_read_delete_search(self): test_ad = TestAdFactory.create() # here we build a search ad form # create location = "SRID%3D900913%3BPOLYGON((2.3886182861327825+48.834761790252024%2C2.2773817138671575+48.837925498723266%2C2.3251035766601262+48.87180983721773%2C2.4023511962890325+48.87293892019383%2C2.3886182861327825+48.834761790252024))" request = self.factory.post('/', data={ 'search': 'brand=' + test_ad.brand + '&location=' + location }) user = UserFactory.create() request.user = user response = views.AdSearchView.as_view(model=TestAd)(request) ad_search = AdSearch.objects.all().filter(user=user)[0] # update request = self.factory.post('/', data={'search': 'brand=' + test_ad.brand}) request.user = user response = views.AdSearchView.as_view(model=TestAd)( request, search_id=ad_search.pk) # read request = self.factory.get('/') request.user = user response = views.AdSearchView.as_view(model=TestAd)( request, search_id=ad_search.pk) not_ad_search_owner_user = UserFactory.create() request = self.factory.get('/') request.user = not_ad_search_owner_user view = views.AdSearchView.as_view(model=TestAd) self.assertRaises(Http404, view, request, search_id=ad_search.pk) # delete request = self.factory.get('/') # by non authorized user request.user = not_ad_search_owner_user view = views.AdSearchDeleteView.as_view() self.assertRaises(Http404, view, request, pk=ad_search.pk) # by authorized user (owner of ad search) request = self.factory.post('/') request.user = ad_search.user response = views.AdSearchDeleteView.as_view()(request, pk=ad_search.pk)
def test_not_owner_delete(self): # create a user, and an ad, and test if the user # who is not the ad owner can't delete it test_ad = TestAdFactory.create() user = UserFactory.create() request = self.factory.get('/') request.user = user view = views.AdDeleteView.as_view(model=TestAd) self.assertRaises(Http404, view, request, pk=test_ad.pk) request = self.factory.post('/') request.user = user view = views.AdDeleteView.as_view(model=TestAd) self.assertRaises(Http404, view, request, pk=test_ad.pk)
def test_not_owner_delete(self): # Create a user and an ad # Test if the user who is not the ad owner can't delete it test_ad = TestAdFactory.create() user = UserFactory.create() request = self.factory.get('/') request.user = user view = views.AdDeleteView.as_view(model=TestAd) self.assertRaises(Http404, view, request, pk=test_ad.pk) request = self.factory.post('/') request.user = user view = views.AdDeleteView.as_view(model=TestAd) self.assertRaises(Http404, view, request, pk=test_ad.pk) self.assertTrue(test_ad in TestAd.objects.all())
def test_filterads(self): test_ads = TestAdFactory.create_batch(12) # client try to filter search # and get at lead one result request = self.factory.get('/', data={'brand': test_ads[0].brand}) user = UserFactory.create() request.user = user response = views.AdSearchView.as_view(model=TestAd)(request) # check that we don't return initial ads self.assertTrue('initial_ads' not in response.context_data) # check that the user have a form to save it search self.assertTrue('ad_search_form' in response.context_data) # or get 0 results request = self.factory.get('/', data={'brand': 'nologo'}) request.user = user response = views.AdSearchView.as_view(model=TestAd)(request)
def test_not_owner_update(self): test_ad = TestAdFactory.create() user = UserFactory.create() form_data = { 'brand': test_ad.brand, 'location': test_ad.location, 'user_entered_address': test_ad.user_entered_address, 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0} request = self.factory.get('/') request.user = user view = views.AdUpdateView.as_view(model=TestAd, form_class=TestAdForm) self.assertRaises(Http404, view, request, pk=test_ad.pk) request = self.factory.post('/', data=form_data) request.user = user view = views.AdUpdateView.as_view(model=TestAd, form_class=TestAdForm) self.assertRaises(Http404, view, request, pk=test_ad.pk)
def test_create_same_slug(self): user = UserFactory.create() form_data = {'brand': 'my_guitar', 'user_entered_address': '5 rue de Vernueil, Paris', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0} request = self.factory.post('/', data=form_data, files=[]) request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) form_data = {'brand': 'my_guitar', 'user_entered_address': '5 rue de Vernueil, Paris', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0} request = self.factory.post('/', data=form_data, files=[]) request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request)
def test_not_owner_update(self): test_ad = TestAdFactory.create() user = UserFactory.create() form_data = { 'brand': test_ad.brand, 'location': test_ad.location, 'user_entered_address': test_ad.user_entered_address, 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0 } request = self.factory.get('/') request.user = user view = views.AdUpdateView.as_view(model=TestAd, form_class=TestAdForm) self.assertRaises(Http404, view, request, pk=test_ad.pk) request = self.factory.post('/', data=form_data) request.user = user view = views.AdUpdateView.as_view(model=TestAd, form_class=TestAdForm) self.assertRaises(Http404, view, request, pk=test_ad.pk)
def test_create_same_slug(self): user = UserFactory.create() form_data = { 'brand': 'my_guitar', 'user_entered_address': '5 rue de Verneuil, Paris', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0 } request = self.factory.post('/', data=form_data, files=[]) request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request) form_data = { 'brand': 'my_guitar', 'user_entered_address': '5 rue de Verneuil, Paris', 'geoads-adpicture-content_type-object_id-TOTAL_FORMS': 4, 'geoads-adpicture-content_type-object_id-INITIAL_FORMS': 0 } request = self.factory.post('/', data=form_data, files=[]) request.user = user response = views.AdCreateView.as_view(model=TestAd, form_class=TestAdForm)(request)
def test_send_message(self): test_ad = TestAdFactory.create() user = UserFactory.create() request = self.factory.post('/', data={'message':'Hi buddy !'}) request.user = user response = views.AdDetailView.as_view(model=TestAd)(request, pk=test_ad.pk)