47
47
public class ExchangeRateServiceTest extends TestBase {
48
48
49
49
/**
50
- * Logback version of the Slfj logger used by {@link ExchangeRateService}. This
51
- * allows us to test if specific messages were logged <br/><br/>
52
- *
50
+ * Logback version of the Slf4j logger used by {@link ExchangeRateService}. This
51
+ * allows us to test if specific messages were logged.
53
52
* See https://stackoverflow.com/a/52229629
54
53
*/
55
54
private static Logger exchangeRateServiceLogger ;
56
55
private static final String LIST_APPENDER_NAME = "testListAppender" ;
57
56
58
57
@ BeforeAll
59
- static void setup () {
58
+ static void setup () {
60
59
// Get the logger object for logs in ExchangeRateService
61
60
exchangeRateServiceLogger = (Logger ) LoggerFactory .getLogger (ExchangeRateService .class );
62
61
63
- // Initiate and append a ListAppender, which allows us to programmatically inspect log messages
62
+ // Initiate and append a ListAppender, which allows us to programmatically inspect
63
+ // log messages
64
64
ListAppender <ILoggingEvent > listAppender = new ListAppender <>();
65
65
listAppender .setName (LIST_APPENDER_NAME );
66
66
listAppender .start ();
@@ -75,7 +75,8 @@ public void getAllMarketPrices_withNoExchangeRates_logs_Exception() {
75
75
76
76
Map <String , Object > retrievedData = service .getAllMarketPrices ();
77
77
78
- doSanityChecksForRetrievedDataSingleProvider (retrievedData , dummyProvider .getPrefix (), numberOfCurrencyPairsOnExchange );
78
+ doSanityChecksForRetrievedDataSingleProvider (
79
+ retrievedData , dummyProvider .getPrefix (), numberOfCurrencyPairsOnExchange );
79
80
80
81
// No exchange rates provided by this exchange, two things should happen
81
82
// A) the timestamp should be set to 0
@@ -86,7 +87,8 @@ public void getAllMarketPrices_withNoExchangeRates_logs_Exception() {
86
87
assertEquals (0L , retrievedData .get (dummyProvider .getPrefix () + "Ts" ));
87
88
88
89
// B) Check that an error is logged
89
- // Log msg has the format: java.lang.IllegalStateException: No exchange rate data found for ExchangeName-JzfP1
90
+ // Log msg has the format: java.lang.IllegalStateException: No exchange rate data
91
+ // found for ExchangeName-JzfP1
90
92
List <ILoggingEvent > logsList = ((ListAppender ) exchangeRateServiceLogger .getAppender (LIST_APPENDER_NAME )).list ;
91
93
assertEquals (Level .ERROR , logsList .get (0 ).getLevel ());
92
94
assertTrue (logsList .get (0 ).getMessage ().endsWith ("No exchange rate data found for " + dummyProvider .getName ()));
@@ -100,7 +102,8 @@ public void getAllMarketPrices_withSingleExchangeRate() {
100
102
101
103
Map <String , Object > retrievedData = service .getAllMarketPrices ();
102
104
103
- doSanityChecksForRetrievedDataSingleProvider (retrievedData , dummyProvider .getPrefix (), numberOfCurrencyPairsOnExchange );
105
+ doSanityChecksForRetrievedDataSingleProvider (
106
+ retrievedData , dummyProvider .getPrefix (), numberOfCurrencyPairsOnExchange );
104
107
105
108
// One rate was provided by this provider, so the timestamp should not be 0
106
109
assertNotEquals (0L , retrievedData .get (dummyProvider .getPrefix () + "Ts" ));
@@ -118,13 +121,14 @@ public void getAllMarketPrices_withMultipleProviders() {
118
121
doSanityChecksForRetrievedDataMultipleProviders (retrievedData ,
119
122
asList (dummyProvider1 .getPrefix (), dummyProvider2 .getPrefix ()));
120
123
121
- // One rate was provided by each provider in this service, so the timestamp (for both providers) should not be 0
124
+ // One rate was provided by each provider in this service, so the timestamp
125
+ // (for both providers) should not be 0
122
126
assertNotEquals (0L , retrievedData .get (dummyProvider1 .getPrefix () + "Ts" ));
123
127
assertNotEquals (0L , retrievedData .get (dummyProvider2 .getPrefix () + "Ts" ));
124
128
}
125
129
126
130
/**
127
- * Performs generic sanity checks on the response format and contents
131
+ * Performs generic sanity checks on the response format and contents.
128
132
*
129
133
* @param retrievedData Response data retrieved from the {@link ExchangeRateService}
130
134
* @param providerPrefix {@link ExchangeRateProvider#getPrefix()}
@@ -143,17 +147,18 @@ private void doSanityChecksForRetrievedDataSingleProvider(Map<String, Object> re
143
147
}
144
148
145
149
/**
146
- * Performs generic sanity checks on the response format and contents
150
+ * Performs generic sanity checks on the response format and contents.
147
151
*
148
152
* @param retrievedData Response data retrieved from the {@link ExchangeRateService}
149
- * @param providerPrefixes List of all {@link ExchangeRateProvider#getPrefix()} the {@link ExchangeRateService} uses
153
+ * @param providerPrefixes List of all {@link ExchangeRateProvider#getPrefix()} the
154
+ * {@link ExchangeRateService} uses
150
155
*/
151
156
private void doSanityChecksForRetrievedDataMultipleProviders (Map <String , Object > retrievedData ,
152
- List <String > providerPrefixes ) {
157
+ List <String > providerPrefixes ) {
153
158
// Check the correct amount of entries were present in the service response:
154
- // The timestamp and the count fields are per provider, so N providers means N times those fields
155
- // timestamp (x N) + count (x N) + price data (stored as a list under the key "data")
156
- // So expected size is Nx2 + 1
159
+ // The timestamp and the count fields are per provider, so N providers means N
160
+ // times those fields timestamp (x N) + count (x N) + price data (stored as a list
161
+ // under the key "data"). So expected size is Nx2 + 1.
157
162
int n = providerPrefixes .size ();
158
163
assertEquals (n * 2 + 1 , retrievedData .size ());
159
164
for (String providerPrefix : providerPrefixes ) {
0 commit comments