2121import co .rsk .config .mining .StableMinGasPriceSystemConfig ;
2222import co .rsk .net .http .HttpException ;
2323import co .rsk .net .http .SimpleHttpClient ;
24+ import org .junit .jupiter .api .BeforeEach ;
2425import org .junit .jupiter .api .Test ;
2526
2627import java .time .Duration ;
2930import static org .junit .jupiter .api .Assertions .assertEquals ;
3031import static org .junit .jupiter .api .Assertions .assertTrue ;
3132import static org .mockito .ArgumentMatchers .anyString ;
32- import static org .mockito .Mockito .*;
33+ import static org .mockito .Mockito .anyBoolean ;
34+ import static org .mockito .Mockito .mock ;
35+ import static org .mockito .Mockito .reset ;
36+ import static org .mockito .Mockito .spy ;
37+ import static org .mockito .Mockito .times ;
38+ import static org .mockito .Mockito .verify ;
39+ import static org .mockito .Mockito .when ;
3340
3441class HttpGetMinGasPriceProviderTest {
3542
43+ private final MinGasPriceProvider fallbackProvider = mock (MinGasPriceProvider .class );
44+ private final SimpleHttpClient httpClient = mock (SimpleHttpClient .class );
45+ private StableMinGasPriceSystemConfig config ;
46+
47+ @ BeforeEach
48+ void setUp () {
49+ reset (fallbackProvider );
50+ config = createStableMinGasPriceSystemConfig ();
51+ }
52+
3653 @ Test
3754 void returnsMappedPriceFromWebClient () throws HttpException {
38- MinGasPriceProvider fallbackProvider = mock ( MinGasPriceProvider . class );
55+ // given
3956 when (fallbackProvider .getType ()).thenReturn (MinGasPriceProviderType .FIXED );
40-
41- SimpleHttpClient httpClient = mock (SimpleHttpClient .class );
4257 when (httpClient .doGet (anyString ())).thenReturn ("{\" bitcoin\" :{\" usd\" :10000}}" );
43- StableMinGasPriceSystemConfig config = createStableMinGasPriceSystemConfig ();
58+
59+ // when
4460 HttpGetMinGasPriceProvider provider = new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient );
4561
62+ // then
4663 Optional <Long > result = provider .getBtcExchangeRate ();
4764 verify (fallbackProvider , times (0 )).getMinGasPrice ();
4865 assertTrue (result .isPresent ());
@@ -51,69 +68,66 @@ void returnsMappedPriceFromWebClient() throws HttpException {
5168
5269 @ Test
5370 void whenRequestingTheValueTwiceCachedValueIsUsed () throws HttpException {
54- MinGasPriceProvider fallbackProvider = mock ( MinGasPriceProvider . class );
71+ // given
5572 when (fallbackProvider .getType ()).thenReturn (MinGasPriceProviderType .FIXED );
56-
57- SimpleHttpClient httpClient = mock (SimpleHttpClient .class );
5873 when (httpClient .doGet (anyString ())).thenReturn ("{\" bitcoin\" :{\" usd\" :10000}}" );
59-
60- StableMinGasPriceSystemConfig config = createStableMinGasPriceSystemConfig ();
6174 HttpGetMinGasPriceProvider provider = spy (new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient ));
6275
76+ // when
6377 // First call should fetch and cache the value
6478 provider .getMinGasPrice ();
6579 // Second call should use the cached value
6680 provider .getMinGasPrice (true );
6781
82+ // then
6883 verify (httpClient , times (1 )).doGet (anyString ());
69- verify (provider , times (2 )).getMinGasPrice (anyBoolean ());
84+ verify (provider , times (1 )).getMinGasPrice (anyBoolean ());
7085 }
7186
7287 @ Test
7388 void whenEmptyResponseReturnsFallbackProvider () throws HttpException {
74- MinGasPriceProvider fallbackProvider = mock ( MinGasPriceProvider . class );
89+ // given
7590 when (fallbackProvider .getMinGasPrice ()).thenReturn (10L );
7691 when (fallbackProvider .getType ()).thenReturn (MinGasPriceProviderType .FIXED );
77-
78- SimpleHttpClient httpClient = mock (SimpleHttpClient .class );
7992 when (httpClient .doGet (anyString ())).thenReturn ("" );
80- StableMinGasPriceSystemConfig config = createStableMinGasPriceSystemConfig ();
81- HttpGetMinGasPriceProvider provider = new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient );
8293
94+ // when
95+ HttpGetMinGasPriceProvider provider = new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient );
8396 Long result = provider .getMinGasPrice (true );
97+
98+ // then
8499 verify (fallbackProvider , times (1 )).getMinGasPrice ();
85100 assertEquals (10L , result );
86101 }
87102
88103 @ Test
89104 void whenErrorReturnsFallbackProvider () throws HttpException {
90- MinGasPriceProvider fallbackProvider = mock ( MinGasPriceProvider . class );
105+ // given
91106 when (fallbackProvider .getMinGasPrice ()).thenReturn (10L );
92107 when (fallbackProvider .getType ()).thenReturn (MinGasPriceProviderType .FIXED );
93-
94- SimpleHttpClient httpClient = mock (SimpleHttpClient .class );
95108 when (httpClient .doGet (anyString ())).thenThrow (new HttpException ("Error" ));
96- StableMinGasPriceSystemConfig config = createStableMinGasPriceSystemConfig ();
97- HttpGetMinGasPriceProvider provider = new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient );
98109
110+ // when
111+ HttpGetMinGasPriceProvider provider = new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient );
99112 Long result = provider .getMinGasPrice (true );
113+
114+ // then
100115 verify (fallbackProvider , times (1 )).getMinGasPrice ();
101116 assertEquals (10L , result );
102117 }
103118
104119 @ Test
105120 void whenPathIsWrongReturnsFallBack () throws HttpException {
106- MinGasPriceProvider fallbackProvider = mock ( MinGasPriceProvider . class );
121+ // given
107122 when (fallbackProvider .getMinGasPrice ()).thenReturn (10L );
108123 when (fallbackProvider .getType ()).thenReturn (MinGasPriceProviderType .FIXED );
109-
110- SimpleHttpClient httpClient = mock (SimpleHttpClient .class );
111124 when (httpClient .doGet (anyString ())).thenReturn ("{\" btc\" :{\" usd\" :10000}}" );
112- StableMinGasPriceSystemConfig config = createStableMinGasPriceSystemConfig ();
113- HttpGetMinGasPriceProvider provider = new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient );
114125
126+ // when
127+ HttpGetMinGasPriceProvider provider = new HttpGetMinGasPriceProvider (config , fallbackProvider , httpClient );
115128 Long result = provider .getMinGasPrice (true );
116129
130+ // then
117131 verify (fallbackProvider , times (1 )).getMinGasPrice ();
118132 assertEquals (10L , result );
119133 }
0 commit comments