UNPKG

react-gpt-for-prebid

Version:

A react display ad component using Google Publisher Tag & Prebid

467 lines (407 loc) 15.8 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentServiceMock = exports.CompanionAdsServiceMock = exports.PubAdsServiceMock = exports.SizeMappingBuilderMock = exports.SlotMock = exports.GPTMock = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _apiList = require("./apiList"); var _Events = require("../Events"); var _Events2 = _interopRequireDefault(_Events); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function createMock(list, obj) { return list.reduce(function (mock, _ref) { var _ref2 = _slicedToArray(_ref, 2), api = _ref2[0], type = _ref2[1]; if (typeof mock[api] === "undefined") { if (type === "function") { mock[api] = function () { if (arguments.length) { return arguments.length <= 0 ? undefined : arguments[0]; } return {}; }; } else if (type === "boolean") { mock[api] = true; } else { mock[api] = {}; } } return mock; }, obj || {}); } function getSize(slot) { var sizes = slot.getSizes(); var item = sizes; while (Array.isArray(item[0])) { item = item[0]; } return item; } var SlotMock = function () { function SlotMock(adUnitPath, size, divId) { _classCallCheck(this, SlotMock); this.adUnitPath = adUnitPath; this.size = size; this.divId = divId; this.services = []; this.attributes = {}; this.categoryExclusions = []; this._targeting = {}; } _createClass(SlotMock, [{ key: "defineSizeMapping", value: function defineSizeMapping(sizeMapping) { this.size = sizeMapping; return this; } }, { key: "addService", value: function addService(service) { this.services.push(service); } }, { key: "getServices", value: function getServices() { return this.services; } }, { key: "set", value: function set(key, value) { this.attributes[key] = value; return this; } }, { key: "get", value: function get(key) { return this.attributes[key]; } }, { key: "getAttributeKeys", value: function getAttributeKeys() { return Object.keys(this.attributes); } }, { key: "setCollapseEmptyDiv", value: function setCollapseEmptyDiv(collapse, collapseBeforeAdFetch) { this.collapseEmptyDiv = collapse; this.collapseBeforeAdFetch = collapseBeforeAdFetch; return this; } }, { key: "getCollapseEmptyDiv", value: function getCollapseEmptyDiv() { return this.collapseEmptyDiv; } }, { key: "setClickUrl", value: function setClickUrl(clickUrl) { this.clickUrl = clickUrl; return this; } }, { key: "getClickUrl", value: function getClickUrl() { return this.clickUrl; } }, { key: "setCategoryExclusion", value: function setCategoryExclusion(categoryExclusion) { this.categoryExclusions.push(categoryExclusion); return this; } }, { key: "getCategoryExclusions", value: function getCategoryExclusions() { return this.categoryExclusions; } }, { key: "clearCategoryExclusions", value: function clearCategoryExclusions() { this.categoryExclusions = []; return this; } }, { key: "setTargeting", value: function setTargeting(key, value) { this._targeting[key] = value; return this; } }, { key: "getAdUnitPath", value: function getAdUnitPath() { return this.adUnitPath; } }, { key: "clearTargeting", value: function clearTargeting() { this._targeting = {}; return this; } }, { key: "getTargeting", value: function getTargeting(key) { return this._targeting && this._targeting[key]; } }, { key: "getTargetingKeys", value: function getTargetingKeys() { return this._targeting && Object.keys(this._targeting); } }, { key: "getSizes", value: function getSizes() { return this.size; } }, { key: "getSlotElementId", value: function getSlotElementId() { return this.divId; } }]); return SlotMock; }(); createMock(_apiList.slotAPI, SlotMock.prototype); var SizeMappingBuilderMock = function () { function SizeMappingBuilderMock() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, SizeMappingBuilderMock); this.config = config; } _createClass(SizeMappingBuilderMock, [{ key: "addSize", value: function addSize(viewportSize, slotSize) { if (!this.mapping) { this.mapping = []; } this.mapping.push([viewportSize, slotSize]); return this; } }, { key: "build", value: function build() { return this.mapping; } }]); return SizeMappingBuilderMock; }(); var BaseService = function () { function BaseService() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, BaseService); this.config = config; this.listeners = {}; this.slots = {}; } _createClass(BaseService, [{ key: "addEventListener", value: function addEventListener(eventType, cb) { if (!this.listeners[eventType]) { this.listeners[eventType] = []; } this.listeners[eventType].push(cb); } }, { key: "getSlots", value: function getSlots() { var _this = this; return Object.keys(this.slots).map(function (key) { return _this.slots[key]; }); } }]); return BaseService; }(); var PubAdsServiceMock = function (_BaseService) { _inherits(PubAdsServiceMock, _BaseService); function PubAdsServiceMock() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, PubAdsServiceMock); var _this2 = _possibleConstructorReturn(this, (PubAdsServiceMock.__proto__ || Object.getPrototypeOf(PubAdsServiceMock)).call(this, config)); _this2.version = _apiList.pubadsVersion; return _this2; } _createClass(PubAdsServiceMock, [{ key: "getVersion", value: function getVersion() { return this.version; } }, { key: "refresh", value: function refresh(slots) { var _this3 = this; if (!slots) { slots = Object.keys(this.slots).map(function (key) { return _this3.slots[key]; }); } setTimeout(function () { var key = _Events2.default.SLOT_RENDER_ENDED; slots.forEach(function (slot) { if (_this3.listeners[key]) { _this3.listeners[key].forEach(function (cb) { var isEmpty = !!_this3.config.emptyAd; var event = { isEmpty: isEmpty, creativeId: isEmpty ? null : Date.now(), lineItemId: isEmpty ? null : Date.now(), serviceName: "publisher_ads", size: isEmpty ? null : getSize(slot), slot: slot }; cb(event); }); } }); }, 0); } }]); return PubAdsServiceMock; }(BaseService); createMock(_apiList.pubadsAPI, PubAdsServiceMock.prototype); var CompanionAdsServiceMock = function (_BaseService2) { _inherits(CompanionAdsServiceMock, _BaseService2); function CompanionAdsServiceMock() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, CompanionAdsServiceMock); return _possibleConstructorReturn(this, (CompanionAdsServiceMock.__proto__ || Object.getPrototypeOf(CompanionAdsServiceMock)).call(this, config)); } _createClass(CompanionAdsServiceMock, [{ key: "enableSyncLoading", value: function enableSyncLoading() { this._enableSyncLoading = true; } }, { key: "setRefreshUnfilledSlots", value: function setRefreshUnfilledSlots(value) { if (typeof value === "boolean") { this._refreshUnfilledSlots = value; } } }]); return CompanionAdsServiceMock; }(BaseService); var ContentServiceMock = function (_BaseService3) { _inherits(ContentServiceMock, _BaseService3); function ContentServiceMock() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, ContentServiceMock); return _possibleConstructorReturn(this, (ContentServiceMock.__proto__ || Object.getPrototypeOf(ContentServiceMock)).call(this, config)); } _createClass(ContentServiceMock, [{ key: "setContent", value: function setContent(slot, content) { slot._content = content; } }]); return ContentServiceMock; }(BaseService); var GPTMock = function () { function GPTMock() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, GPTMock); this.pubadsReady = false; this.config = config; this.version = _apiList.gptVersion; this.cmd = {}; this.cmd.push = function (cb) { cb(); }; } _createClass(GPTMock, [{ key: "getVersion", value: function getVersion() { return this.version; } }, { key: "enableServices", value: function enableServices() { var _this6 = this; setTimeout(function () { _this6.pubadsReady = true; }, 0); } }, { key: "sizeMapping", value: function sizeMapping() { if (!this.sizeMappingBuilder) { this.sizeMappingBuilder = new SizeMappingBuilderMock(this.config); } return this.sizeMappingBuilder; } }, { key: "pubads", value: function pubads() { if (!this._pubads) { this._pubads = new PubAdsServiceMock(this.config); } return this._pubads; } }, { key: "companionAds", value: function companionAds() { if (!this._companionAds) { this._companionAds = new CompanionAdsServiceMock(this.config); } return this._companionAds; } }, { key: "content", value: function content() { if (!this._content) { this._content = new ContentServiceMock(this.config); } return this._content; } }, { key: "defineSlot", value: function defineSlot(adUnitPath, size, divId) { var slot = new SlotMock(adUnitPath, size, divId); this.pubads().slots[divId] = slot; return slot; } }, { key: "defineOutOfPageSlot", value: function defineOutOfPageSlot(adUnitPath, divId) { var slot = new SlotMock(adUnitPath, [1, 1], divId); this.pubads().slots[divId] = slot; return slot; } }, { key: "display", value: function display(divId) { var _this7 = this; var pubads = this.pubads(); setTimeout(function () { Object.keys(pubads.listeners).forEach(function (key) { if (pubads.listeners[key]) { pubads.listeners[key].forEach(function (cb) { var slot = pubads.slots[divId]; var isEmpty = !!_this7.config.emptyAd; var event = { isEmpty: isEmpty, creativeId: isEmpty ? null : Date.now(), lineItemId: isEmpty ? null : Date.now(), serviceName: "publisher_ads", size: isEmpty ? null : getSize(slot), slot: slot }; cb(event); }); } }); }, 0); } }]); return GPTMock; }(); createMock(_apiList.gptAPI, GPTMock.prototype); exports.GPTMock = GPTMock; exports.SlotMock = SlotMock; exports.SizeMappingBuilderMock = SizeMappingBuilderMock; exports.PubAdsServiceMock = PubAdsServiceMock; exports.CompanionAdsServiceMock = CompanionAdsServiceMock; exports.ContentServiceMock = ContentServiceMock;