def test_submit_to_local_ga_articlepage_with_tags( self, mock_submit_tracking): """requests for article with tags should make a submit tracking with a cd6 value in the custom params containing all the article tags""" request = RequestFactory().get( '/sections-main1-1/{}/{}/'.format( self.yourmind.slug, self.article.slug), HTTP_HOST='localhost', HTTP_X_DCMGUID="0000-000-01" ) request.site = self.main.get_site() middleware = GemMoloGoogleAnalyticsMiddleware() middleware.process_response( request, self.response) # a normal response should activate GA tracking nav_tags = ArticlePageTags.objects.all() tags = [nav_tag.tag.title for nav_tag in nav_tags] mock_submit_tracking.assert_called_once_with( 'local_ga_tracking_code', request, self.response, {'cd5': self.article.title, "cd3": 'Visitor', 'cd1': "0000-000-01", 'cd6': "|".join(tags)} )
def test_submit_to_local_ga_articlepage_no_tags( self, mock_submit_tracking): '''request for articles with not tags should not have a cd6 value in the custom params''' request = RequestFactory().get( '/sections-main1-1/{}/{}/'.format( self.yourmind.slug, self.article2.slug), HTTP_X_DCMGUID="0000-000-01" ) request.site = self.main.get_site() middleware = GemMoloGoogleAnalyticsMiddleware() middleware.process_response( request, self.response) # a normal response should activate GA tracking mock_submit_tracking.assert_called_once_with( 'local_ga_tracking_code', request, self.response, {'cd5': self.article2.title, "cd3": 'Visitor', 'cd1': "0000-000-01"})
def test_submit_to_local_ga_translated_articlepage_title( self, mock_submit_tracking): """requests for article with tags should make a submit tracking with a cd6 value in the custom params containing all the article tags""" french = SiteLanguageRelation.objects.create( language_setting=Languages.for_site(Site.objects.first()), locale='fr', is_active=True) french_article = self.mk_article_translation(self.article2, french) french_article.title = "french translation of article" french_article.save_revision().publish() request = RequestFactory().get( '/sections-main1-1/{}/{}/'.format( self.yourmind.slug, french_article.slug), HTTP_HOST='localhost', HTTP_X_DCMGUID="0000-000-01" ) request.COOKIES[settings.LANGUAGE_COOKIE_NAME] = french.locale request.site = self.main.get_site() middleware = GemMoloGoogleAnalyticsMiddleware() middleware.process_response( request, self.response) # check that the tilte of the article in the main languge is used mock_submit_tracking.assert_called_once_with( 'local_ga_tracking_code', request, self.response, {'cd5': self.article2.title, "cd3": 'Visitor', 'cd1': "0000-000-01", })
def test_submit_to_local_ga_account__custom_params(self, mock_submit_tracking): ''' Given that bbm_ga_account_subdomain and bbm_ga_tracking_code are set in Gem Settings, and the URL does not contain the bbm_ga_account_subdomain, info should be sent to the local GA account, not the additional GA account. ''' # create a user with a profile self.user = User.objects.create_user( username='******', email='*****@*****.**', password='******') self.client.login(username='******', password='******') self.user.profile.gender = 'f' self.user.profile.save() request = RequestFactory().get( '/', HTTP_HOST='localhost', HTTP_X_DCMGUID="0000-000-01", ) request.site = self.main.get_site() request.user = self.user middleware = GemMoloGoogleAnalyticsMiddleware() middleware.submit_to_local_account( request, self.response, self.site_settings) cd1 = middleware.get_visitor_id(request) mock_submit_tracking.assert_called_once_with( 'local_ga_tracking_code', request, self.response, {"cd3": 'Registered', 'cd2': self.user.profile.uuid, 'cd1': cd1})
def test_submit_to_local_ga__ignored_info(self, mock_submit_tracking): ''' Paths in GOOGLE_ANALYTICS_IGNORE_PATH should not invoke a call to google analytics tracking ''' request = RequestFactory().get( '/profiles/password-reset/', HTTP_HOST='localhost', ) request.site = self.main.get_site() middleware = GemMoloGoogleAnalyticsMiddleware() middleware.process_response( request, self.response) # test that the tracking method is not called with senstive info mock_submit_tracking.assert_not_called() request = RequestFactory().get( '/profiles/reset-success/', HTTP_HOST='localhost', ) middleware.process_response( request, self.response) mock_submit_tracking.assert_not_called() request = RequestFactory().get( '/profiles/reset-password/', HTTP_HOST='localhost', ) middleware.process_response( request, self.response) mock_submit_tracking.assert_not_called()
def test_submit_to_local_ga__sensitive_info(self, mock_submit_tracking): ''' Paths with sensitive information should not be tracked on google analytics ''' request = RequestFactory().get( '/search/?q=user%40user.com', HTTP_HOST='localhost', ) request.site = self.main.get_site() middleware = GemMoloGoogleAnalyticsMiddleware() middleware.process_response( request, self.response) mock_submit_tracking.assert_not_called()
def test_submit_to_local_ga_valid_info(self, mock_submit_tracking): request = RequestFactory().get( '/search/?q=whatislife', HTTP_HOST='localhost', HTTP_X_DCMGUID="0000-000-01" ) request.site = self.main.get_site() middleware = GemMoloGoogleAnalyticsMiddleware() middleware.process_response( request, self.response) # a normal response should activate GA tracking mock_submit_tracking.assert_called_once_with( 'local_ga_tracking_code', request, self.response, {"cd3": 'Visitor', 'cd1': "0000-000-01"})
def test_submit_to_additional_ga_account(self, mock_submit_tracking): ''' Given that bbm_ga_account_subdomain and bbm_ga_tracking_code are set in Gem Settings, and the URL contains the bbm_ga_account_subdomain, info should be sent to the additional GA account. ''' request = RequestFactory().get( '/', HTTP_HOST='bbm.localhost', HTTP_X_DCMGUID="0000-000-01" ) request.site = self.main.get_site() middleware = GemMoloGoogleAnalyticsMiddleware() middleware.submit_to_local_account( request, self.response, self.site_settings) mock_submit_tracking.assert_called_once_with( 'bbm_tracking_code', request, self.response, {"cd3": 'Visitor', 'cd1': "0000-000-01"})