Skip to content

Commit

Permalink
Merge pull request #208 from spring-media/TRAC-1906_all_pages_no-entry
Browse files Browse the repository at this point in the history
removed "isArticlePage"  from conditions, doPlugin has to run at all …
  • Loading branch information
nickyanalytics authored Apr 9, 2024
2 parents e1f9fd5 + cdb7d06 commit 55da90f
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 108 deletions.
146 changes: 71 additions & 75 deletions extensions/doPlugins_global.js
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,7 @@ s._articleViewTypeObj = {
const referringDomain = s._utils.getDomainFromURLString(referrer);
const isSessionStart = s._utils.isSessionStart();
const isHomepage = s._utils.isHomepage();
const isArticle = s._utils.isArticlePage();
let pageViewEvent;
let channel;

Expand Down Expand Up @@ -399,7 +400,7 @@ s._articleViewTypeObj = {
} else if (this.isFromSecureMypass(referrer)||this.isFromPaypal(referrer)) {
pageViewEvent = 'event23,event201'; // Login via secure.mypass during session
//channel = '';
} else if (this.isWithoutReferrer() && this.isNavigated()) {
} else if (this.isWithoutReferrer() && this.isNavigated() && isArticle) {
pageViewEvent = 'event26,event202'; // Dark Social
channel = 'Dark Social';
} else if (this.isDirect(referrer)) {
Expand Down Expand Up @@ -517,9 +518,9 @@ s._articleViewTypeObj = {
const channelCategory = viewTypesResults ? viewTypesResults.channelCategory : '';

if (!s._utils.isAdWall(s)) {
if (s._utils.isArticlePage()) {
if (pageViewEvent) {
s._articleViewType = s.eVar44 = window.utag.data.sp_events = pageViewEvent;
s.eVar37 = s.prop59 = window.utag.data.sp_m_channel = channel || 'no-entry';
s.eVar37 = s.prop59 = window.utag.data.sp_m_channel = channel;
s.eVar38 = s.prop60 = window.utag.data.sp_m_channel_category = channelCategory;
s._eventsObj.addEvent(pageViewEvent);
this.setPageSourceAndAgeForCheckout(s);
Expand Down Expand Up @@ -643,27 +644,24 @@ s._setExternalReferringDomainEvents = function (s) {

];


if (s._utils.isArticlePage()) {
const referringURL = s._utils.getReferrer();
if (!referringURL) {
return;
}
domainsToEventMapping.forEach(domainEventMap => {
const { domains, event, matchRegex, channel, channelCategory} = domainEventMap;
const isRegexMatch = matchRegex && referringURL.match(matchRegex);
const isDomainMatch = domains && domains.some(domain => {
return referringURL && referringURL.includes(domain);
});
if (isRegexMatch || isDomainMatch) {
s._eventsObj.addEvent(event);
s.eVar44 = window.utag.data.sp_events = s.eVar44 ? s.eVar44 + ',' + event : event;
s.eVar37 = s.prop59 = window.utag.data.sp_m_channel = channel || 'no-entry';
s.eVar38 = s.prop60 = window.utag.data.sp_m_channel_category = channelCategory;
s._articleViewType = s.eVar44;
}
});
const referringURL = s._utils.getReferrer();
if (!referringURL) {
return;
}
domainsToEventMapping.forEach(domainEventMap => {
const { domains, event, matchRegex, channel, channelCategory} = domainEventMap;
const isRegexMatch = matchRegex && referringURL.match(matchRegex);
const isDomainMatch = domains && domains.some(domain => {
return referringURL && referringURL.includes(domain);
});
if (isRegexMatch || isDomainMatch) {
s._eventsObj.addEvent(event);
s.eVar44 = window.utag.data.sp_events = s.eVar44 ? s.eVar44 + ',' + event : event;
s.eVar37 = s.prop59 = window.utag.data.sp_m_channel = channel || 'no-entry';
s.eVar38 = s.prop60 = window.utag.data.sp_m_channel_category = channelCategory;
s._articleViewType = s.eVar44;
}
});
};

/**
Expand All @@ -672,60 +670,58 @@ s._setExternalReferringDomainEvents = function (s) {

s._setTrackingValueEvents = function (s) {

if (s._utils.isArticlePage()) {
const trackingValuesFromQueryParameter = s._articleViewTypeObj.getTrackingValue();
const trackingValuesFromQueryParameter = s._articleViewTypeObj.getTrackingValue();

if (trackingValuesFromQueryParameter) {
const socialTrackingParameter = s._articleViewTypeObj.isTrackingValueOrganicSocial();
const socialTrackingValue = trackingValuesFromQueryParameter;
if (trackingValuesFromQueryParameter) {
const socialTrackingParameter = s._articleViewTypeObj.isTrackingValueOrganicSocial();
const socialTrackingValue = trackingValuesFromQueryParameter;

if (socialTrackingParameter) {
let event;
let channel = 'Organic Social';
let channelCategory;
switch (true) {
case socialTrackingValue.includes('telegram'):
event = 'event225';
channelCategory = 'Telegram';
break;
case socialTrackingValue.includes('instagram'):
event = 'event53,event224';
channelCategory = 'Instagram';
break;
case socialTrackingValue.includes('youtube'):
event = 'event50,event223';
channelCategory = 'Youtube';
break;
case socialTrackingValue.includes('twitter'):
event = 'event51,event222';
channelCategory = 'Twitter';
break;
case socialTrackingValue.includes('facebook'):
event = 'event52,event221';
channelCategory = 'Facebook';
break;
case socialTrackingValue.includes('linkedin'):
event = 'event227';
channelCategory = 'LinkedIn';
break;
case socialTrackingValue.includes('xing'):
event = 'event228';
channelCategory = 'Xing';
break;
case socialTrackingValue.includes('pinterest'):
event = 'event229';
channelCategory = 'Pinterest';
break;
default:
event = 'event226';
channelCategory = 'Other organic Social';
}
s._eventsObj.addEvent(event);
s._articleViewType = s.eVar44 = window.utag.data.sp_events += ',' + event;
s.eVar37 = s.prop59 = window.utag.data.sp_m_channel = channel || 'no-entry';
s.eVar38 = s.prop60 = window.utag.data.sp_m_channel_category = channelCategory || '';
}
}
if (socialTrackingParameter) {
let event;
let channel = 'Organic Social';
let channelCategory;
switch (true) {
case socialTrackingValue.includes('telegram'):
event = 'event225';
channelCategory = 'Telegram';
break;
case socialTrackingValue.includes('instagram'):
event = 'event53,event224';
channelCategory = 'Instagram';
break;
case socialTrackingValue.includes('youtube'):
event = 'event50,event223';
channelCategory = 'Youtube';
break;
case socialTrackingValue.includes('twitter'):
event = 'event51,event222';
channelCategory = 'Twitter';
break;
case socialTrackingValue.includes('facebook'):
event = 'event52,event221';
channelCategory = 'Facebook';
break;
case socialTrackingValue.includes('linkedin'):
event = 'event227';
channelCategory = 'LinkedIn';
break;
case socialTrackingValue.includes('xing'):
event = 'event228';
channelCategory = 'Xing';
break;
case socialTrackingValue.includes('pinterest'):
event = 'event229';
channelCategory = 'Pinterest';
break;
default:
event = 'event226';
channelCategory = 'Other organic Social';
}
s._eventsObj.addEvent(event);
s._articleViewType = s.eVar44 = window.utag.data.sp_events += ',' + event;
s.eVar37 = s.prop59 = window.utag.data.sp_m_channel = channel;
s.eVar38 = s.prop60 = window.utag.data.sp_m_channel_category = channelCategory || '';
}
}
};

Expand Down
30 changes: 11 additions & 19 deletions tests/doplugins/doplugins_article_view_type.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,7 @@ describe('articleViewType()', () => {
let isSessionStartMock;
let isNavigatedMock;
let isHomepageMock;
let isArticleMock;

beforeEach(() => {
jest.spyOn(s._utils, 'getDomainFromURLString').mockReturnValue(anyReferrerDomain);
Expand All @@ -583,6 +584,7 @@ describe('articleViewType()', () => {
isSessionStartMock = jest.spyOn(s._utils, 'isSessionStart').mockReturnValue(false);
isNavigatedMock = jest.spyOn(s._articleViewTypeObj, 'isNavigated').mockReturnValue(false);
isHomepageMock = jest.spyOn(s._utils, 'isHomepage').mockReturnValue(false);
isArticleMock = jest.spyOn(s._utils, 'isArticlePage').mockReturnValue(true);

});

Expand Down Expand Up @@ -944,8 +946,7 @@ describe('articleViewType()', () => {
jest.restoreAllMocks();
});

it('should evaluate referrer URL when available to determine article-view-type', function () {
isArticlePageMock.mockReturnValue(true);
it('should evaluate referrer URL when available', function () {
isAdWallMock.mockReturnValue(false);
isOtherTrackingValueMock.mockReturnValue(false);
window.document.referrer = 'any-referrer-url';
Expand All @@ -954,7 +955,6 @@ describe('articleViewType()', () => {
});

it('should evaluate tracking URL param when referrer is NOT available', function () {
isArticlePageMock.mockReturnValue(true);
isAdWallMock.mockReturnValue(false);
window.location.search = 'cid=email.-cid';
s._articleViewTypeObj.setViewTypes(s);
Expand All @@ -968,7 +968,6 @@ describe('articleViewType()', () => {
channelCategory: 'any-channel-category'
};
isAdWallMock.mockReturnValue(false);
isArticlePageMock.mockReturnValue(true);
window.location.search = 'cid=any-cid';
getViewTypeByTrackingPropertyMock.mockReturnValue(anyViewType);

Expand All @@ -991,7 +990,6 @@ describe('articleViewType()', () => {
it('should NOT assign the page-view-type to s._articleViewType and s.eVar44 if page is NOT of type article', function () {
const anyViewType = 'any-view-type';
isAdWallMock.mockReturnValue(false);
isArticlePageMock.mockReturnValue(false);
getViewTypeByTrackingPropertyMock.mockReturnValue(anyViewType);

expect(s._articleViewType).toBeUndefined();
Expand All @@ -1004,20 +1002,25 @@ describe('articleViewType()', () => {
});

it('should call setPageSourceAndAgeForCheckout() function if page is of type article', function () {
const anyViewType = {
pageViewEvent: 'any-view-type',
channel: 'any-channel',
channelCategory: 'any-channel-category'
};
getViewTypeByReferrerMock.mockReturnValue(anyViewType);
getViewTypeByTrackingPropertyMock.mockReturnValue(anyViewType);
isAdWallMock.mockReturnValue(false);
isArticlePageMock.mockReturnValue(true);

s._articleViewTypeObj.setViewTypes(s);
expect(setPageSourceAndAgeForCheckoutMock).toHaveBeenCalled();
});

it('should NOT call setPageSourceAndAgeForCheckout() function if page is NOT of type article', function () {
isAdWallMock.mockReturnValue(false);
isArticlePageMock.mockReturnValue(false);

s._articleViewTypeObj.setViewTypes(s);
expect(setPageSourceAndAgeForCheckoutMock).not.toHaveBeenCalled();
});
});

it('should call s._eventsObj.addEvent() with pag-view-type as the argument if page is of type article', function () {
//const anyViewType = 'any-view-type';
Expand All @@ -1036,17 +1039,6 @@ describe('articleViewType()', () => {
expect(addEventMock).toHaveBeenCalledWith(anyViewType.pageViewEvent);
});

it('should NOT call s._eventsObj.addEvent() with pag-view-type as the argument if page is NOT of type article', function () {
const anyViewType = 'any-view-type';
isAdWallMock.mockReturnValue(false);
isArticlePageMock.mockReturnValue(false);
getViewTypeByTrackingPropertyMock.mockReturnValue(anyViewType);

s._articleViewTypeObj.setViewTypes(s);

expect(addEventMock).not.toHaveBeenCalled();
});

it('should call s._eventsObj.addEvent() with event20 as the argument if page was viewed after the homepage (homepage teaser click)', function () {
isAdWallMock.mockReturnValue(false);
isPageViewFromHomeMock.mockReturnValue(true);
Expand Down
7 changes: 0 additions & 7 deletions tests/doplugins/doplugins_externel_referring_domain.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,6 @@ describe('External referring domains', () => {
jest.restoreAllMocks();
});

it('should run only on article pages', function () {
isArticlePageMock.mockReturnValue(false);

s._setExternalReferringDomainEvents(s);
expect(getReferrerMock).not.toBeCalled();
});

it('should set event49 and it should not set event213 if the referring domain is www.google.de', () => {
getReferrerMock.mockReturnValue('www.google.com');

Expand Down
7 changes: 0 additions & 7 deletions tests/doplugins/doplugins_trackingValue_events.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,6 @@ describe('_setTrackingValueEvents (URL Parameter like cid)', () => {
afterEach(() => {
jest.restoreAllMocks();
});

it('should run only on article pages', function () {
isArticlePageMock.mockReturnValue(false);

s._setTrackingValueEvents(s);
expect(getTrackingValueMock).not.toBeCalled();
});

//Telegram
it('should set event225 if the trackingValue contains telegram', () => {
Expand Down

0 comments on commit 55da90f

Please sign in to comment.