Skip to content

Commit

Permalink
✨ amp-auto-ads extension: New Denakop enpoint URL (#30014)
Browse files Browse the repository at this point in the history
* new endpoint

* unused vars

* enabling responsive ads

* new default AdConstraints

* update tests
  • Loading branch information
gurodrigues committed Aug 28, 2020
1 parent fa0ef2e commit c881676
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 30 deletions.
24 changes: 17 additions & 7 deletions extensions/amp-auto-ads/0.1/denakop-network-config.js
Expand Up @@ -41,12 +41,25 @@ export class DenakopNetworkConfig {
* True if responsive is enabled for auto-ads
*/
isResponsiveEnabled() {
return false;
return true;
}

/** @override */
getConfigUrl() {
const docInfo = Services.documentInfoForDoc(this.autoAmpAdsElement_);
const accountId = this.autoAmpAdsElement_.getAttribute('data-account-id');
if (accountId) {
return buildUrl(
'https://v3.denakop.com/ad-request',
{
'a': accountId,
'v': 'amp',
'u': docInfo.canonicalUrl,
},
/* maxLength */ 4096
);
}

const publisherId = this.autoAmpAdsElement_.getAttribute(
'data-publisher-id'
);
Expand All @@ -57,8 +70,6 @@ export class DenakopNetworkConfig {
'p': publisherId,
't': tagId,
'u': docInfo.canonicalUrl,
'w': window.screen.width,
'h': window.screen.height,
},
/* maxLength */ 4096
);
Expand All @@ -67,7 +78,6 @@ export class DenakopNetworkConfig {
/** @override */
getAttributes() {
const attributes = dict({
'layout': 'fixed',
'data-multi-size-validation': 'false',
'type': 'doubleclick',
'data-ad': 'denakop',
Expand All @@ -83,10 +93,10 @@ export class DenakopNetworkConfig {
return {
initialMinSpacing: viewportHeight,
subsequentMinSpacing: [
{adCount: 3, spacing: viewportHeight * 2},
{adCount: 6, spacing: viewportHeight * 3},
{adCount: 4, spacing: viewportHeight * 2},
{adCount: 8, spacing: viewportHeight * 3},
],
maxAdCount: 8,
maxAdCount: 20,
};
}

Expand Down
45 changes: 22 additions & 23 deletions extensions/amp-auto-ads/0.1/test/test-denakop-network-config.js
Expand Up @@ -28,25 +28,30 @@ describes.realWin(
},
(env) => {
let ampAutoAdsElem;
let oldAmpAutoAdsElem;
let document;

beforeEach(() => {
document = env.win.document;
ampAutoAdsElem = document.createElement('amp-auto-ads');
env.win.document.body.appendChild(ampAutoAdsElem);
oldAmpAutoAdsElem = document.createElement('amp-auto-ads');
env.win.document.body.appendChild(oldAmpAutoAdsElem);
});

afterEach(() => {
env.win.document.body.removeChild(ampAutoAdsElem);
});

describe('Denakop', () => {
const ACCOUNT_ID = '1';
const PUBLISHER_ID = '1000';
const TAG_ID = '2819896d-f724';

beforeEach(() => {
ampAutoAdsElem.setAttribute('data-publisher-id', PUBLISHER_ID);
ampAutoAdsElem.setAttribute('data-tag-id', TAG_ID);
oldAmpAutoAdsElem.setAttribute('data-publisher-id', PUBLISHER_ID);
oldAmpAutoAdsElem.setAttribute('data-tag-id', TAG_ID);
ampAutoAdsElem.setAttribute('data-account-id', ACCOUNT_ID);
});

it('should report enabled always', () => {
Expand All @@ -58,31 +63,25 @@ describes.realWin(
const adNetwork = getAdNetworkConfig('denakop', ampAutoAdsElem);
const configUrl = adNetwork.getConfigUrl();

expect(configUrl).to.contain('//v2.denakop.com/ad-request/amp');
expect(configUrl).to.contain('p=' + PUBLISHER_ID);
expect(configUrl).to.contain('t=' + TAG_ID);
expect(configUrl).to.contain('https://v3.denakop.com/ad-request');
expect(configUrl).to.contain('a=' + ACCOUNT_ID);
expect(configUrl).to.contain('v=amp');
expect(configUrl).to.contain('u=https%3A%2F%2Ffoo.bar%2Fbaz');
});

it.skip("should truncate the URL if it's too long", () => {
const adNetwork = getAdNetworkConfig('denakop', ampAutoAdsElem);

const canonicalUrl =
'http://foo.bar/a'.repeat(4050) + 'shouldnt_be_included';

const docInfo = Services.documentInfoForDoc(ampAutoAdsElem);
env.sandbox.stub(docInfo, 'canonicalUrl').callsFake(canonicalUrl);
it('should generate the old config fetch URL', () => {
const adNetwork = getAdNetworkConfig('denakop', oldAmpAutoAdsElem);
const configUrl = adNetwork.getConfigUrl();

const url = adNetwork.getConfigUrl();
expect(url).to.contain('ama_t=amp');
expect(url).to.contain('url=http%3A%2F%2Ffoo.bar');
expect(url).not.to.contain('shouldnt_be_included');
expect(configUrl).to.contain('//v2.denakop.com/ad-request/amp');
expect(configUrl).to.contain('p=' + PUBLISHER_ID);
expect(configUrl).to.contain('t=' + TAG_ID);
expect(configUrl).to.contain('u=https%3A%2F%2Ffoo.bar%2Fbaz');
});

it('should generate the attributes', () => {
const adNetwork = getAdNetworkConfig('denakop', ampAutoAdsElem);
expect(adNetwork.getAttributes()).to.deep.equal({
'layout': 'fixed',
'data-multi-size-validation': 'false',
'type': 'doubleclick',
'data-ad': 'denakop',
Expand All @@ -102,16 +101,16 @@ describes.realWin(
expect(adNetwork.getDefaultAdConstraints()).to.deep.equal({
initialMinSpacing: 500,
subsequentMinSpacing: [
{adCount: 3, spacing: 1000},
{adCount: 6, spacing: 1500},
{adCount: 4, spacing: 1000},
{adCount: 8, spacing: 1500},
],
maxAdCount: 8,
maxAdCount: 20,
});
});

it('should not be responsive-enabled', () => {
it('responsive should be enabled', () => {
const adNetwork = getAdNetworkConfig('denakop', ampAutoAdsElem);
expect(adNetwork.isResponsiveEnabled()).to.be.false;
expect(adNetwork.isResponsiveEnabled()).to.be.true;
});
});
}
Expand Down

0 comments on commit c881676

Please sign in to comment.