Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

removed "isArticlePage" from conditions, doPlugin has to run at all … #208

Merged
merged 3 commits into from
Apr 9, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 72 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,10 @@ s._articleViewTypeObj = {
const channelCategory = viewTypesResults ? viewTypesResults.channelCategory : '';

if (!s._utils.isAdWall(s)) {
if (s._utils.isArticlePage()) {
//if (s._utils.isArticlePage()) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment can be removed.

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 +645,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 +671,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
Loading