From 42672f1b091418b4237e9d4d423bb2283538d671 Mon Sep 17 00:00:00 2001 From: ddubyk Date: Mon, 19 Aug 2024 17:11:04 +0300 Subject: [PATCH] Fix currency conversion bug. --- .../server/bidder/rubicon/RubiconBidder.java | 2 +- .../bidder/rubicon/RubiconBidderTest.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java index e6f49dd6f43..675d5dd4bd5 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java @@ -618,7 +618,7 @@ private BigDecimal convertToXAPICurrency(BigDecimal value, private static BigDecimal resolveBidFloorPrice(Imp imp) { final BigDecimal bidFloor = imp.getBidfloor(); - return BidderUtil.isValidPrice(bidFloor) ? bidFloor : null; + return bidFloor != null && bidFloor.compareTo(BigDecimal.ZERO) >= 0 ? bidFloor : null; } private static String resolveBidFloorCurrency(Imp imp, BidRequest bidRequest, List errors) { diff --git a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java index d19933818ee..b7c2a053298 100644 --- a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java @@ -789,6 +789,31 @@ public void makeHttpRequestsShouldResolveImpBidFloorCurrencyIfNotUSDAndCallCurre .containsOnly(tuple(BigDecimal.TEN, "USD")); } + @Test + public void makeHttpRequestsShouldResolveImpBidFloorCurrencyIfNotUSDAndBidFloorIsZero() { + // given + final BidRequest bidRequest = givenBidRequest( + builder -> builder + .banner(Banner.builder().format(singletonList(Format.builder().w(300).h(250).build())).build()) + .bidfloor(BigDecimal.ZERO).bidfloorcur("EUR"), + identity()); + + given(currencyConversionService.convertCurrency(any(), any(), anyString(), anyString())) + .willReturn(BigDecimal.ZERO); + + // when + final Result>> result = target.makeHttpRequests(bidRequest); + + // then + assertThat(result.getErrors()).isEmpty(); + verify(currencyConversionService).convertCurrency(eq(BigDecimal.ZERO), any(), eq("EUR"), eq("USD")); + assertThat(result.getValue()).hasSize(1).doesNotContainNull() + .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) + .flatExtracting(BidRequest::getImp).doesNotContainNull() + .extracting(Imp::getBidfloor, Imp::getBidfloorcur) + .containsOnly(tuple(BigDecimal.ZERO, "USD")); + } + @Test public void makeHttpRequestsShouldNotSetBidFloorCurrencyToUSDIfNull() { // given