@@ -3348,6 +3348,109 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlForOutputStreamVide
33483348 .containsExactly (expectedBidExt );
33493349 }
33503350
3351+ @ Test
3352+ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenMetaMediaTypeIsVideoAndVideoIsPresent ()
3353+ throws JsonProcessingException {
3354+
3355+ // given
3356+ final ExtRequest extBidRequest = ExtRequest .of (ExtRequestPrebid .builder ()
3357+ .bidders (mapper .valueToTree (ExtPrebidBidders .of (
3358+ mapper .createObjectNode ().set ("apexRenderer" , BooleanNode .valueOf (true )))))
3359+ .build ());
3360+
3361+ final BidRequest givenBidRequest = givenBidRequest (
3362+ builder -> builder .ext (extBidRequest ),
3363+ imp -> imp .id ("impId" ).video (Video .builder ().build ()),
3364+ identity ());
3365+
3366+ final ObjectNode givenBidExt = mapper .valueToTree (
3367+ ExtPrebid .of (ExtBidPrebid .builder ()
3368+ .meta (ExtBidPrebidMeta .builder ()
3369+ .mediaType ("video" )
3370+ .rendererUrl ("https://renderer.url.from.bidder" )
3371+ .build ())
3372+ .build (), null ));
3373+
3374+ final BidderCall <BidRequest > httpCall = givenHttpCall (
3375+ givenBidRequest ,
3376+ mapper .writeValueAsString (RubiconBidResponse .builder ()
3377+ .cur ("USD" )
3378+ .seatbid (singletonList (RubiconSeatBid .builder ()
3379+ .bid (singletonList (givenRubiconBid (bid ->
3380+ bid .impid ("impId" ).price (ONE ).ext (givenBidExt ))))
3381+ .build ()))
3382+ .build ()));
3383+
3384+ // when
3385+ final Result <List <BidderBid >> result = target .makeBids (httpCall , givenBidRequest );
3386+
3387+ // then
3388+ final ObjectNode expectedBidExt = mapper .valueToTree (
3389+ ExtPrebid .of (ExtBidPrebid .builder ()
3390+ .meta (ExtBidPrebidMeta .builder ()
3391+ .mediaType ("video" )
3392+ .rendererUrl ("https://video-outstream.rubiconproject.com/apex-2.2.1.js" )
3393+ .build ())
3394+ .build (), null ));
3395+
3396+ assertThat (result .getErrors ()).isEmpty ();
3397+ assertThat (result .getValue ())
3398+ .extracting (BidderBid ::getBid )
3399+ .extracting (Bid ::getExt )
3400+ .containsExactly (expectedBidExt );
3401+ }
3402+
3403+ @ Test
3404+ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenMetaMediaTypeIsVideoAndVideoIsAbsent ()
3405+ throws JsonProcessingException {
3406+
3407+ // given
3408+ final ExtRequest extBidRequest = ExtRequest .of (ExtRequestPrebid .builder ()
3409+ .bidders (mapper .valueToTree (ExtPrebidBidders .of (
3410+ mapper .createObjectNode ().set ("apexRenderer" , BooleanNode .valueOf (true )))))
3411+ .build ());
3412+
3413+ final BidRequest givenBidRequest = givenBidRequest (
3414+ builder -> builder .ext (extBidRequest ),
3415+ imp -> imp .id ("impId" ).video (null ),
3416+ identity ());
3417+
3418+ final ObjectNode givenBidExt = mapper .valueToTree (
3419+ ExtPrebid .of (ExtBidPrebid .builder ()
3420+ .meta (ExtBidPrebidMeta .builder ()
3421+ .mediaType ("video" )
3422+ .rendererUrl ("https://renderer.url.from.bidder" )
3423+ .build ())
3424+ .build (), null ));
3425+
3426+ final BidderCall <BidRequest > httpCall = givenHttpCall (
3427+ givenBidRequest ,
3428+ mapper .writeValueAsString (RubiconBidResponse .builder ()
3429+ .cur ("USD" )
3430+ .seatbid (singletonList (RubiconSeatBid .builder ()
3431+ .bid (singletonList (givenRubiconBid (bid ->
3432+ bid .impid ("impId" ).price (ONE ).ext (givenBidExt ))))
3433+ .build ()))
3434+ .build ()));
3435+
3436+ // when
3437+ final Result <List <BidderBid >> result = target .makeBids (httpCall , givenBidRequest );
3438+
3439+ // then
3440+ final ObjectNode expectedBidExt = mapper .valueToTree (
3441+ ExtPrebid .of (ExtBidPrebid .builder ()
3442+ .meta (ExtBidPrebidMeta .builder ()
3443+ .rendererUrl ("https://video-outstream.rubiconproject.com/apex-2.2.1.js" )
3444+ .build ())
3445+ .build (), null ));
3446+
3447+ assertThat (result .getErrors ()).isEmpty ();
3448+ assertThat (result .getValue ())
3449+ .extracting (BidderBid ::getBid )
3450+ .extracting (Bid ::getExt )
3451+ .containsExactly (givenBidExt );
3452+ }
3453+
33513454 @ Test
33523455 public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsNotDefined ()
33533456 throws JsonProcessingException {
@@ -3377,7 +3480,7 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRenderer
33773480 }
33783481
33793482 @ Test
3380- public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsDefinedAsFalse ()
3483+ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsDefinedAsFalse ()
33813484 throws JsonProcessingException {
33823485
33833486 // given
@@ -3412,7 +3515,7 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenApexRendererIsD
34123515 }
34133516
34143517 @ Test
3415- public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenBidResponseIsNotVideo ()
3518+ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenBidResponseIsNotVideo ()
34163519 throws JsonProcessingException {
34173520
34183521 // given
@@ -3447,7 +3550,7 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenBidResponseIsNo
34473550 }
34483551
34493552 @ Test
3450- public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenVideoPlacementIsOne ()
3553+ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenVideoPlacementIsOne ()
34513554 throws JsonProcessingException {
34523555
34533556 // given
@@ -3482,7 +3585,7 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenVideoPlacementI
34823585 }
34833586
34843587 @ Test
3485- public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenVideoPlcmtIsOne ()
3588+ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenVideoPlcmtIsOne ()
34863589 throws JsonProcessingException {
34873590
34883591 // given
0 commit comments