Skip to content

Commit

Permalink
Merge pull request #118 from MailOnline/next-release
Browse files Browse the repository at this point in the history
Next release
  • Loading branch information
carpasse authored Dec 10, 2018
2 parents e6dbc9b + 28355ca commit 81d3eb5
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 21 deletions.
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ module.exports = {
'!**/src/**/__karma__/**/*'
],
coverageDirectory: './coverage/',
coverageReporters: ['json', 'lcov', 'text', 'clover', 'html'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
testEnvironment: './GlobalJsDomEnv.js',
testPathIgnorePatterns: ['<rootDir>/node_modules/'],
Expand Down
10 changes: 5 additions & 5 deletions src/adUnit/VastAdUnit.js
Original file line number Diff line number Diff line change
Expand Up @@ -227,13 +227,13 @@ class VastAdUnit extends VideoAdUnit {
/**
* This method resizes the ad unit to fit the available space in the passed {@link VideoAdContainer}
*
* @throws if ad unit is not started.
* @throws if ad unit is finished.
*
* @param width {number} - the new width of the ad container.
* @param height {number} - the new height of the ad container.
* @param viewmode {string} - fullscreen | normal | thumbnail
* @returns {Promise} - that resolves once the unit was resized
*/
async resize () {
await super.resize();
async resize (width, height, viewmode) {
await super.resize(width, height, viewmode);

if (this.isStarted() && !this.isFinished()) {
const inlineAd = this.vastChain[0].ad;
Expand Down
17 changes: 10 additions & 7 deletions src/adUnit/VideoAdUnit.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import preventManualProgress from './helpers/dom/preventManualProgress';
import Emitter from './helpers/Emitter';
import retrieveIcons from './helpers/icons/retrieveIcons';
import addIcons from './helpers/icons/addIcons';
import viewmode from './helpers/vpaid/viewmode';
import safeCallback from './helpers/safeCallback';

const {
Expand Down Expand Up @@ -145,6 +146,7 @@ class VideoAdUnit extends Emitter {

this[_protected].size = {
height: element.clientHeight,
viewmode: viewmode(element.clientWidth, element.clientHeight),
width: element.clientWidth
};
const unsubscribe = onElementResize(element, () => {
Expand All @@ -156,13 +158,8 @@ class VideoAdUnit extends Emitter {
const height = element.clientHeight;
const width = element.clientWidth;

this[_protected].size = {
height: element.clientHeight,
width: element.clientWidth
};

if (height !== prevSize.height || width !== prevSize.width) {
this.resize();
this.resize(width, height, viewmode(width, height));
}
});

Expand Down Expand Up @@ -312,7 +309,13 @@ class VideoAdUnit extends Emitter {
*
* @returns {Promise} - that resolves once the unit was resized
*/
async resize () {
async resize (width, height, mode) {
this[_protected].size = {
height,
viewmode: mode,
width
};

if (this.isStarted() && !this.isFinished() && this.icons) {
await this[_protected].removeIcons();
await this[_protected].drawIcons();
Expand Down
6 changes: 3 additions & 3 deletions src/adUnit/VpaidAdUnit.js
Original file line number Diff line number Diff line change
Expand Up @@ -470,10 +470,10 @@ class VpaidAdUnit extends VideoAdUnit {
*
* @returns {Promise} - that resolves once the unit was resized
*/
async resize () {
await super.resize();
async resize (width, height, viewmode) {
await super.resize(width, height, viewmode);

return callAndWait(this.creativeAd, resizeAd, adSizeChange);
return callAndWait(this.creativeAd, resizeAd, adSizeChange, width, height, viewmode);
}
}

Expand Down
30 changes: 30 additions & 0 deletions src/adUnit/__tests__/VastAdUnit.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import retrieveIcons from '../helpers/icons/retrieveIcons';
const {
iconClick,
iconView,
skip,
error: errorEvt
} = linearEvents;
const mockStopMetricHandler = jest.fn();
Expand All @@ -31,6 +32,7 @@ jest.mock('../helpers/metrics/handlers/index', () => [
videoElement.addEventListener('error', () => callback('error', videoElement.error));
videoElement.addEventListener('progress', ({detail}) => callback('progress', detail));
videoElement.addEventListener('custom', (event) => callback('custom', event.data));
videoElement.addEventListener('skip', () => callback('skip'));

return mockStopMetricHandler;
}),
Expand Down Expand Up @@ -522,6 +524,34 @@ describe('VastAdUnit', () => {
}]);
});

test('must cancel on `skip` event', async () => {
canPlay.mockReturnValue(true);
const adUnit = new VastAdUnit(vastChain, videoAdContainer);

const promise = new Promise((resolve) => {
adUnit.on(skip, (...args) => {
resolve(args);
});
});

await adUnit.start();

const data = {};
const event = new CustomEvent(skip);

event.data = data;
videoAdContainer.videoElement.dispatchEvent(event);

const passedArgs = await promise;

expect(passedArgs).toEqual([{
adUnit,
type: skip
}]);

expect(adUnit.isFinished()).toBe(true);
});

test('cancel must stop the metric handlers ', async () => {
canPlay.mockReturnValue(true);
const adUnit = new VastAdUnit(vastChain, videoAdContainer);
Expand Down
3 changes: 2 additions & 1 deletion src/adUnit/__tests__/VideoAdUnit.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ describe('VideoAdUnit', () => {
test('if true must resize the adUnit on ad container resize', () => {
const adUnit = new VideoAdUnit(vpaidChain, videoAdContainer, {responsive: true});

adUnit.resize = jest.fn();
jest.spyOn(adUnit, 'resize');
adUnit.emit(start);

expect(onElementResize).toHaveBeenCalledTimes(1);
Expand All @@ -362,6 +362,7 @@ describe('VideoAdUnit', () => {
simulateResize();

expect(adUnit.resize).toHaveBeenCalledTimes(1);
expect(adUnit.resize).toHaveBeenCalledWith(150, 100, 'thumbnail');

simulateResize();

Expand Down
4 changes: 2 additions & 2 deletions src/adUnit/__tests__/VpaidAdUnit.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -552,9 +552,9 @@ describe('VpaidAdUnit', () => {
describe('resize', () => {
test('must call resizeAd', async () => {
await adUnit.start();
await adUnit.resize();
await adUnit.resize(100, 150, 'normal');

expect(callAndWait).toHaveBeenCalledWith(mockCreativeAd, resizeAd, adSizeChange);
expect(callAndWait).toHaveBeenCalledWith(mockCreativeAd, resizeAd, adSizeChange, 100, 150, 'normal');
});
});

Expand Down
6 changes: 3 additions & 3 deletions src/adUnit/helpers/vpaid/callAndWait.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import waitFor from './waitFor';

const callAndWait = (creativeAd, method, event) => {
const waitPromise = waitFor(creativeAd, event, 3000);
const callAndWait = (creativeAd, method, event, ...args) => {
const waitPromise = waitFor(creativeAd, event, 5000);

creativeAd[method]();
creativeAd[method](...args);

return waitPromise;
};
Expand Down

0 comments on commit 81d3eb5

Please sign in to comment.