1818 */
1919package org .apache .fineract .test .stepdef .common ;
2020
21+ import static java .util .Arrays .asList ;
22+ import static org .assertj .core .api .Assertions .assertThat ;
23+
24+ import com .google .gson .Gson ;
2125import io .cucumber .java .en .Given ;
2226import io .cucumber .java .en .When ;
2327import java .io .IOException ;
28+ import java .util .Collections ;
29+ import java .util .List ;
30+ import org .apache .fineract .client .models .CurrencyUpdateRequest ;
31+ import org .apache .fineract .client .services .CurrencyApi ;
2432import org .apache .fineract .client .services .DefaultApi ;
33+ import org .apache .fineract .client .util .JSON ;
34+ import org .apache .fineract .test .helper .ErrorMessageHelper ;
35+ import org .apache .fineract .test .helper .ErrorResponse ;
2536import org .apache .fineract .test .helper .GlobalConfigurationHelper ;
2637import org .springframework .beans .factory .annotation .Autowired ;
2738
@@ -32,6 +43,11 @@ public class GlobalConfigurationStepDef {
3243 @ Autowired
3344 private DefaultApi defaultApi ;
3445
46+ @ Autowired
47+ private CurrencyApi currencyApi ;
48+
49+ private static final Gson GSON = new JSON ().getGson ();
50+
3551 @ Given ("Global configuration {string} is disabled" )
3652 public void disableGlobalConfiguration (String configKey ) throws IOException {
3753 globalConfigurationHelper .disableGlobalConfiguration (configKey , 0L );
@@ -51,6 +67,56 @@ public void setGlobalConfigValueString(String configKey, String configValue) thr
5167 public void setGlobalConfigValueStringDefaultApi (String configKey , String configValue ) throws IOException {
5268 Long configValueLong = Long .valueOf (configValue );
5369 defaultApi .updateGlobalConfiguration (configKey , configValueLong );
70+ }
71+
72+ @ When ("Update currency with incorrect empty value outcomes with an error" )
73+ public void updateCurrencyEmptyValueFailure () throws IOException {
74+ var request = new CurrencyUpdateRequest ();
75+ var currencyResponse = currencyApi .updateCurrencies (request .currencies (Collections .emptyList ())).execute ();
76+ final ErrorResponse errorDetails = ErrorResponse .from (currencyResponse );
77+ assertThat (errorDetails .getHttpStatusCode ()).as (ErrorMessageHelper .setCurrencyEmptyValueFailure ()).isEqualTo (400 );
78+ assertThat (errorDetails .getSingleError ().getDeveloperMessage ()).isEqualTo (ErrorMessageHelper .setCurrencyEmptyValueFailure ());
79+ }
80+
81+ @ When ("Update currency with incorrect null value outcomes with an error" )
82+ public void updateCurrencyIncorrectNullValueFailure () throws IOException {
83+ var request = new CurrencyUpdateRequest ();
84+ var currencyResponse = currencyApi .updateCurrencies (request .currencies (Collections .singletonList (null ))).execute ();
85+ final ErrorResponse errorDetails = ErrorResponse .from (currencyResponse );
86+ assertThat (errorDetails .getHttpStatusCode ()).as (ErrorMessageHelper .setCurrencyIncorrectValueFailure ("null" )).isEqualTo (404 );
87+ assertThat (errorDetails .getSingleError ().getDeveloperMessage ())
88+ .isEqualTo (ErrorMessageHelper .setCurrencyIncorrectValueFailure ("null" ));
89+ }
90+
91+ @ When ("Update currency as NULL value outcomes with an error" )
92+ public void updateCurrencyNullValueFailure () throws IOException {
93+ var request = new CurrencyUpdateRequest ();
94+ var currencyResponse = currencyApi .updateCurrencies (request .currencies (null )).execute ();
95+ Integer httpStatusCodeExpected = 400 ;
96+
97+ String errorBody = currencyResponse .errorBody ().string ();
98+ ErrorResponse errorResponse = GSON .fromJson (errorBody , ErrorResponse .class );
99+ Integer httpStatusCodeActual = errorResponse .getHttpStatusCode ();
100+ List <String > developerMessagesActual = errorResponse .getErrors ().stream ().map (ErrorResponse .Error ::getDeveloperMessage ).toList ();
101+
102+ List <String > developerMessagesExpected = asList (ErrorMessageHelper .setCurrencyEmptyValueFailure (),
103+ ErrorMessageHelper .setCurrencyNullValueMandatoryFailure ());
104+
105+ assertThat (httpStatusCodeActual )
106+ .as (ErrorMessageHelper .wrongErrorCodeInFailedChargeAdjustment (httpStatusCodeActual , httpStatusCodeExpected ))
107+ .isEqualTo (httpStatusCodeExpected );
108+ assertThat (developerMessagesActual )
109+ .as (ErrorMessageHelper .wrongErrorMessage (developerMessagesActual .toString (), developerMessagesExpected .toString ()))
110+ .containsAll (developerMessagesExpected );
111+ }
54112
113+ @ When ("Update currency as {string} value outcomes with an error" )
114+ public void updateCurrencyIncorrectValueFailure (String currency ) throws IOException {
115+ var request = new CurrencyUpdateRequest ();
116+ var currencyResponse = currencyApi .updateCurrencies (request .currencies (Collections .singletonList (currency ))).execute ();
117+ final ErrorResponse errorDetails = ErrorResponse .from (currencyResponse );
118+ assertThat (errorDetails .getHttpStatusCode ()).as (ErrorMessageHelper .setCurrencyIncorrectValueFailure (currency )).isEqualTo (404 );
119+ assertThat (errorDetails .getSingleError ().getDeveloperMessage ())
120+ .isEqualTo (ErrorMessageHelper .setCurrencyIncorrectValueFailure (currency ));
55121 }
56122}
0 commit comments