From 1bbc2a89dbdfb82e724bffee20974b49a2dad9b2 Mon Sep 17 00:00:00 2001 From: Viktor Rasevych Date: Fri, 15 Dec 2023 18:29:52 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=81=20Reset=20resize=20properties=20on?= =?UTF-8?q?=20each=20set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/criteo-mraid.js | 2 +- src/mraid.ts | 1 + tests/mraid.test.ts | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/build/criteo-mraid.js b/build/criteo-mraid.js index c704163..8a368f4 100644 --- a/build/criteo-mraid.js +++ b/build/criteo-mraid.js @@ -1 +1 @@ -!function(){"use strict";function isFunction(any){return"function"==typeof any}function isNumber(any){return"number"==typeof any}!function(LogLevel){LogLevel.Debug="Debug",LogLevel.Info="Info",LogLevel.Warning="Warning",LogLevel.Error="Error"}(LogLevel=LogLevel||{}),function(MraidEvent){MraidEvent.Ready="ready",MraidEvent.Error="error",MraidEvent.StateChange="stateChange",MraidEvent.ViewableChange="viewableChange",MraidEvent.SizeChange="sizeChange"}(MraidEvent=MraidEvent||{});var LogLevel,MraidEvent,MraidState,MraidPlacementType,EventsCoordinator=function(){function EventsCoordinator(){this.eventListeners=new Map(Object.values(MraidEvent).map(function(e){return[e,new Set]}))}return EventsCoordinator.prototype.addEventListener=function(event,listener,logger){var _a;event&&this.isCorrectEvent(event)?listener?isFunction(listener)?null!=(_a=this.eventListeners.get(event))&&_a.add(listener):logger(LogLevel.Error,"addEventListener","Incorrect listener when addEventListener. \n Listener is not a function. Actual type = ".concat(typeof listener)):logger(LogLevel.Error,"addEventListener","Incorrect listener when addEventListener. It is null or undefined"):logger(LogLevel.Error,"addEventListener","Incorrect event when addEventListener.Type = ".concat(typeof event,", value = ").concat(event))},EventsCoordinator.prototype.removeEventListener=function(event,listener,logger){var listeners;event&&this.isCorrectEvent(event)?listener&&!isFunction(listener)?logger(LogLevel.Error,"removeEventListener","Incorrect listener when removeEventListener. \n Listener is not a function. Actual type = ".concat(typeof listener)):(listeners=this.eventListeners.get(event),listener?null!=listeners&&listeners.delete(listener):null!=listeners&&listeners.clear()):logger(LogLevel.Error,"removeEventListener","Incorrect event when removeEventListener.Type = ".concat(typeof event,", value = ").concat(event))},EventsCoordinator.prototype.fireReadyEvent=function(){var _a;null!=(_a=this.eventListeners.get(MraidEvent.Ready))&&_a.forEach(function(value){null!=value&&value()})},EventsCoordinator.prototype.fireErrorEvent=function(message,action){var _a;null!=(_a=this.eventListeners.get(MraidEvent.Error))&&_a.forEach(function(value){null!=value&&value(message,action)})},EventsCoordinator.prototype.fireStateChangeEvent=function(newState){var _a;null!=(_a=this.eventListeners.get(MraidEvent.StateChange))&&_a.forEach(function(value){null!=value&&value(newState)})},EventsCoordinator.prototype.fireViewableChangeEvent=function(isViewable){var _a;null!=(_a=this.eventListeners.get(MraidEvent.ViewableChange))&&_a.forEach(function(value){null!=value&&value(isViewable)})},EventsCoordinator.prototype.fireSizeChangeEvent=function(width,height){var _a;null!=(_a=this.eventListeners.get(MraidEvent.SizeChange))&&_a.forEach(function(value){null!=value&&value(width,height)})},EventsCoordinator.prototype.isCorrectEvent=function(event){return event&&this.eventListeners.has(event)},EventsCoordinator}(),ExpandProperties=(!function(MraidState){MraidState.Loading="loading",MraidState.Default="default",MraidState.Expanded="expanded",MraidState.Hidden="hidden",MraidState.Resized="resized"}(MraidState=MraidState||{}),!function(MraidPlacementType){MraidPlacementType.Unknown="",MraidPlacementType.Inline="inline",MraidPlacementType.Interstitial="interstitial"}(MraidPlacementType=MraidPlacementType||{}),function(width,height){this.useCustomClose=!1,this.isModal=!0,this.width=width,this.height=height});var SdkFeature,Size=function(){function Size(width,height){this.width=width,this.height=height}return Size.prototype.clone=function(){return new Size(this.width,this.height)},Size}();!function(SdkFeature){SdkFeature.Sms="sms",SdkFeature.Tel="tel",SdkFeature.Calendar="calendar",SdkFeature.StorePicture="storePicture",SdkFeature.InlineVideo="inlineVideo"}(SdkFeature=SdkFeature||{});var ClosePosition,Orientation,defaultSupportedSdkFeatures=new function(sms,tel,inlineVideo){this.calendar=!1,this.storePicture=!1,this.sms=sms,this.tel=tel,this.inlineVideo=inlineVideo}(!1,!1,!1),Position=function(){function Position(x,y,width,height){this.x=x,this.y=y,this.width=width,this.height=height}return Position.prototype.clone=function(){return new Position(this.x,this.y,this.width,this.height)},Position}(),initialPosition=new Position(0,0,0,0),ResizeProperties=(!function(ClosePosition){ClosePosition.TopLeft="top-left",ClosePosition.TopRight="top-right",ClosePosition.Center="center",ClosePosition.BottomLeft="bottom-left",ClosePosition.BottomRight="bottom-right",ClosePosition.TopCenter="top-center",ClosePosition.BottomCenter="bottom-center"}(ClosePosition=ClosePosition||{}),function(){function ResizeProperties(width,height,offsetX,offsetY,customClosePosition,allowOffscreen){void 0===customClosePosition&&(customClosePosition=ClosePosition.TopRight),void 0===allowOffscreen&&(allowOffscreen=!0),this.width=width,this.height=height,this.offsetX=offsetX,this.offsetY=offsetY,this.customClosePosition=customClosePosition,this.allowOffscreen=allowOffscreen}return ResizeProperties.prototype.copy=function(){return new ResizeProperties(this.width,this.height,this.offsetX,this.offsetY,this.customClosePosition,this.allowOffscreen)},ResizeProperties}()),ResizePropertiesValidator=function(){function ResizePropertiesValidator(){this.closeRegionSize=50,this.halfCloseRegionSize=this.closeRegionSize/2,this.adMinSize=this.closeRegionSize}return ResizePropertiesValidator.prototype.validate=function(resizeProperties,maxSize,currentPosition){return resizeProperties?0===Object.keys(resizeProperties).length?"Resize properties object is empty":this.validateSize(resizeProperties.width,"width",maxSize.width)||this.validateSize(resizeProperties.height,"height",maxSize.height)||this.validateOffset(resizeProperties.offsetX,"offsetX")||this.validateOffset(resizeProperties.offsetY,"offsetY")||this.validateCustomClosePosition(resizeProperties.customClosePosition)||this.validateAllowOffscreen(resizeProperties.allowOffscreen)||this.validateCloseButtonPosition(resizeProperties,maxSize,currentPosition):"Resize properties object is not passed"},ResizePropertiesValidator.prototype.joinedClosePosition=function(){return"[".concat(Object.values(ClosePosition).join(", "),"]")},ResizePropertiesValidator.prototype.validateSize=function(value,side,maxSize){return value||0===value?isNumber(value)&&Number.isFinite(value)?value { expect(resizeProperties).toEqual(setResizeProperties); }); + + test("given validator returns no error and then validator returns error should return undefined resize properties", () => { + const setResizeProperties = { + width: 100, + height: 100, + offsetY: 2, + offsetX: 3, + customClosePosition: "center", + allowOffscreen: true, + }; + + mraid.setResizeProperties(setResizeProperties); + when( + resizePropertiesValidator.validate(anything(), anything(), anything()) + ).thenReturn("Error message"); + mraid.setResizeProperties(setResizeProperties); + + expect(mraid.getResizeProperties()).toBe(undefined); + }); }); test("getResizeProperties given setResizeProperties never called should return undefined", () => {