1414import org .prebid .server .proto .openrtb .ext .request .ImpMediaType ;
1515
1616import java .math .BigDecimal ;
17- import java .math .RoundingMode ;
1817import java .util .Collections ;
1918import java .util .List ;
2019import java .util .Set ;
@@ -44,7 +43,7 @@ public class FloorAdjustmentsResolverTest extends VertxTest {
4443 private static final String EUR = "EUR" ;
4544 private static final String UAH = "UAH" ;
4645
47- @ Mock ( strictness = LENIENT )
46+ @ Mock
4847 private CurrencyConversionService currencyService ;
4948
5049 @ Mock (strictness = LENIENT )
@@ -55,22 +54,6 @@ public class FloorAdjustmentsResolverTest extends VertxTest {
5554 @ BeforeEach
5655 public void before () {
5756 target = new FloorAdjustmentsResolver (bidAdjustmentsRulesResolver , currencyService );
58-
59- given (currencyService .convertCurrency (any (), any (), any (), any ())).willAnswer (invocation -> {
60- final BigDecimal amount = invocation .getArgument (0 );
61- final String fromCurrency = invocation .getArgument (2 );
62- final String toCurrency = invocation .getArgument (3 );
63-
64- if (fromCurrency .equals (toCurrency )) {
65- return amount ;
66- } else if (toCurrency .equals (USD )) {
67- return amount .divide (BigDecimal .TEN , 4 , RoundingMode .HALF_EVEN );
68- } else if (fromCurrency .equals (USD )) {
69- return amount .multiply (BigDecimal .TEN );
70- } else {
71- return amount ;
72- }
73- });
7457 }
7558
7659 @ Test
@@ -84,13 +67,14 @@ public void resolveShouldReturnInitialPriceWhenNoRulesFoundForAnyMediaType() {
8467 .willReturn (Collections .emptyList ());
8568 given (bidAdjustmentsRulesResolver .resolve (bidRequest , video_outstream , BIDDER_NAME , null ))
8669 .willReturn (Collections .emptyList ());
70+ given (currencyService .convertCurrency (BigDecimal .TEN , bidRequest , USD , USD )).willReturn (BigDecimal .TEN );
8771
8872 // when
8973 final Price actual = target .resolve (initialPrice , bidRequest , mediaTypes , BIDDER_NAME );
9074
9175 // then
9276 assertThat (actual ).isEqualTo (initialPrice );
93- verify (currencyService , times (2 )).convertCurrency (BigDecimal . TEN , bidRequest , USD , USD );
77+ verify (currencyService , times (2 )).convertCurrency (any (), any (), any (), any () );
9478 verifyNoMoreInteractions (currencyService );
9579 }
9680
@@ -105,14 +89,16 @@ public void resolveShouldApplyMultiplierRuleInReverse() {
10589
10690 given (bidAdjustmentsRulesResolver .resolve (bidRequest , banner , BIDDER_NAME , null ))
10791 .willReturn (singletonList (multiplierRule ));
92+ given (currencyService .convertCurrency (eq (new BigDecimal ("10.0000" )), eq (bidRequest ), eq (USD ), eq (USD )))
93+ .willReturn (BigDecimal .valueOf (20 ));
10894
10995 // when
11096 final Price actual = target .resolve (initialPrice , bidRequest , mediaTypes , BIDDER_NAME );
11197
11298 // then
11399 assertThat (actual ).isEqualTo (Price .of (USD , new BigDecimal ("10.0000" )));
114100
115- verify (currencyService ).convertCurrency (eq ( new BigDecimal ( "10.0000" )), eq ( bidRequest ), eq ( USD ), eq ( USD ));
101+ verify (currencyService ).convertCurrency (any (), any ( ), any ( ), any ( ));
116102 verifyNoMoreInteractions (currencyService );
117103 }
118104
@@ -127,6 +113,10 @@ public void resolveShouldApplyCpmRuleInReverse() {
127113
128114 given (bidAdjustmentsRulesResolver .resolve (bidRequest , banner , BIDDER_NAME , null ))
129115 .willReturn (singletonList (cpmRule ));
116+ given (currencyService .convertCurrency (new BigDecimal ("5" ), bidRequest , EUR , USD ))
117+ .willReturn (BigDecimal .valueOf (0.5 ));
118+ given (currencyService .convertCurrency (new BigDecimal ("50.5" ), bidRequest , USD , USD ))
119+ .willReturn (BigDecimal .valueOf (50 ));
130120
131121 // when
132122 final Price actual = target .resolve (initialPrice , bidRequest , mediaTypes , BIDDER_NAME );
@@ -135,8 +125,7 @@ public void resolveShouldApplyCpmRuleInReverse() {
135125 final Price expectedPrice = Price .of (USD , new BigDecimal ("50.5" ));
136126 assertThat (actual ).isEqualTo (expectedPrice );
137127
138- verify (currencyService ).convertCurrency (new BigDecimal ("5" ), bidRequest , EUR , USD );
139- verify (currencyService ).convertCurrency (new BigDecimal ("50.5" ), bidRequest , USD , USD );
128+ verify (currencyService , times (2 )).convertCurrency (any (), any (), any (), any ());
140129 verifyNoMoreInteractions (currencyService );
141130 }
142131
@@ -172,15 +161,18 @@ public void resolveShouldApplyMultipleRulesInReverseOrder() {
172161
173162 given (bidAdjustmentsRulesResolver .resolve (bidRequest , banner , BIDDER_NAME , null ))
174163 .willReturn (List .of (rule1 , rule2 ));
164+ given (currencyService .convertCurrency (new BigDecimal ("5" ), bidRequest , EUR , USD ))
165+ .willReturn (BigDecimal .valueOf (0.5 ));
166+ given (currencyService .convertCurrency (new BigDecimal ("50.2500" ), bidRequest , USD , USD ))
167+ .willReturn (BigDecimal .valueOf (100 ));
175168
176169 // when
177170 final Price actual = target .resolve (initialPrice , bidRequest , mediaTypes , BIDDER_NAME );
178171
179172 // then
180173 assertThat (actual ).isEqualTo (Price .of (USD , new BigDecimal ("50.2500" )));
181174
182- verify (currencyService ).convertCurrency (new BigDecimal ("5" ), bidRequest , EUR , USD );
183- verify (currencyService ).convertCurrency (new BigDecimal ("50.2500" ), bidRequest , USD , USD );
175+ verify (currencyService , times (2 )).convertCurrency (any (), any (), any (), any ());
184176 verifyNoMoreInteractions (currencyService );
185177 }
186178
@@ -199,15 +191,20 @@ public void resolveShouldChooseMinimalFloorAcrossMediaTypesAfterConversion() {
199191 given (bidAdjustmentsRulesResolver .resolve (bidRequest , video_outstream , BIDDER_NAME , null ))
200192 .willReturn (singletonList (videoRule ));
201193
194+ given (currencyService .convertCurrency (new BigDecimal ("25.0000" ), bidRequest , USD , EUR ))
195+ .willReturn (new BigDecimal ("250.0000" ));
196+ given (currencyService .convertCurrency (new BigDecimal ("500" ), bidRequest , UAH , USD ))
197+ .willReturn (new BigDecimal ("50" ));
198+ given (currencyService .convertCurrency (new BigDecimal ("150" ), bidRequest , USD , EUR ))
199+ .willReturn (new BigDecimal ("1500" ));
200+
202201 // when
203202 final Price actual = target .resolve (initialPrice , bidRequest , mediaTypes , BIDDER_NAME );
204203
205204 // then
206205 assertThat (actual ).isEqualTo (Price .of (USD , new BigDecimal ("25.0000" )));
207206
208- verify (currencyService ).convertCurrency (new BigDecimal ("25.0000" ), bidRequest , USD , EUR );
209- verify (currencyService ).convertCurrency (new BigDecimal ("500" ), bidRequest , UAH , USD );
210- verify (currencyService ).convertCurrency (new BigDecimal ("150" ), bidRequest , USD , EUR );
207+ verify (currencyService , times (3 )).convertCurrency (any (), any (), any (), any ());
211208 verifyNoMoreInteractions (currencyService );
212209 }
213210
0 commit comments