-
Notifications
You must be signed in to change notification settings - Fork 3.9k
/
test-adsense.js
82 lines (78 loc) · 2.74 KB
/
test-adsense.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/**
* Copyright 2017 The AMP HTML Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS-IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {adsense} from '../adsense';
describes.realWin('adsenseDelayedFetch', {}, env => {
let containerElem;
beforeEach(() => {
containerElem = env.win.document.createElement('div');
containerElem.setAttribute('id', 'c');
env.win.document.body.appendChild(containerElem);
});
it('should create script/ins and call adsbygoogle push', () => {
let pushArg;
env.win.adsbygoogle = {
push: arg => {
expect(pushArg).to.not.be.ok;
pushArg = arg;
},
};
const canonicalUrl = 'https://foo.com?some=page';
const clientId = 'some_clientId';
const pageViewId = 'some_pageViewId';
env.win.context = {canonicalUrl, clientId, pageViewId};
const elementAttributes = {
'adChannel': 'data-ad-channel',
'adClient': 'data-ad-client',
'adSlot': 'data-ad-slot',
'adHost': 'data-ad-host',
'adtest': 'data-adtest',
'tagOrigin': 'data-tag-origin',
};
const data = {};
Object.keys(elementAttributes).forEach(
attr => data[attr] = `some-${attr}`);
data['experimentId'] = '1234,567,890';
adsense(env.win, data);
expect(env.win.document.querySelector('script[src=' +
'"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"]'))
.to.be.ok;
const insElement = env.win.document.querySelector('ins.adsbygoogle');
expect(insElement).to.be.ok;
expect(insElement.getAttribute('data-page-url')).to.equal(canonicalUrl);
Object.keys(elementAttributes).forEach(attr =>
expect(insElement.getAttribute(elementAttributes[attr]))
.to.equal(`some-${attr}`));
expect(pushArg).to.be.ok;
expect(pushArg).to.jsonEqual({
params: {
'google_ad_modifications': {
eids: ['1234', '567', '890'],
},
},
});
expect(env.win.gaGlobal).to.jsonEqual({
cid: clientId,
hid: pageViewId,
});
});
it('throws on invalid responsive ad unit height', () => {
const data = {'autoFormat': 'rspv', 'height': '666'};
expect(() => {
adsense(env.win, data);
}).to.throw(
/Specified height 666 in <amp-ad> tag is not equal to the required/);
});
});