Skip to content

Commit 72654ce

Browse files
committed
FINERACT-2248: Migrate SearchHelper, NotificationHelper, TaxComponentHelper and TaxGroupHelper to fineract-client-feign
1 parent 86a1323 commit 72654ce

7 files changed

Lines changed: 247 additions & 60 deletions

File tree

integration-tests/src/test/java/org/apache/fineract/integrationtests/NotificationApiTest.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,16 @@
2626
import io.restassured.specification.RequestSpecification;
2727
import io.restassured.specification.ResponseSpecification;
2828
import java.util.List;
29+
import org.apache.fineract.client.feign.FineractFeignClient;
2930
import org.apache.fineract.client.models.GetNotification;
3031
import org.apache.fineract.client.models.GetNotificationsResponse;
3132
import org.apache.fineract.client.models.GetOfficesResponse;
3233
import org.apache.fineract.client.models.PostClientsRequest;
3334
import org.apache.fineract.client.models.PostUsersRequest;
3435
import org.apache.fineract.client.models.PostUsersResponse;
36+
import org.apache.fineract.integrationtests.client.feign.helpers.FeignNotificationHelper;
3537
import org.apache.fineract.integrationtests.common.ClientHelper;
36-
import org.apache.fineract.integrationtests.common.NotificationHelper;
38+
import org.apache.fineract.integrationtests.common.FineractFeignClientHelper;
3739
import org.apache.fineract.integrationtests.common.OfficeHelper;
3840
import org.apache.fineract.integrationtests.common.Utils;
3941
import org.apache.fineract.integrationtests.useradministration.users.UserHelper;
@@ -46,11 +48,11 @@ public class NotificationApiTest {
4648
public static final int SUPER_USER_ID = 1;
4749
public static final String CLIENT_OBJECT_TYPE = "client";
4850
public static final String CREATED_ACTION_TYPE = "created";
51+
4952
private RequestSpecification requestSpec;
5053
private ResponseSpecification responseSpec;
51-
52-
private RequestSpecification newUserRequestSpec;
53-
private ResponseSpecification newUserResponseSpec;
54+
private FeignNotificationHelper notificationHelper;
55+
private FeignNotificationHelper newUserNotificationHelper;
5456

5557
@BeforeEach
5658
public void setUp() {
@@ -59,43 +61,42 @@ public void setUp() {
5961
requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
6062
responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
6163

64+
notificationHelper = new FeignNotificationHelper(FineractFeignClientHelper.getFineractFeignClient());
65+
6266
GetOfficesResponse headOffice = OfficeHelper.getHeadOffice();
6367
String username = Utils.uniqueRandomStringGenerator("NotificationUser", 4);
64-
String password = Utils.randomStringGenerator("A1b2c3d4e5f$", 1); // prefix is to conform with the password
65-
// rules
68+
String password = Utils.randomStringGenerator("A1b2c3d4e5f$", 1);
69+
6670
PostUsersRequest createUserRequest = new PostUsersRequest().username(username).firstname(Utils.randomFirstNameGenerator())
6771
.lastname(Utils.randomLastNameGenerator()).email("whatever@mifos.org").password(password).repeatPassword(password)
6872
.sendPasswordToEmail(false).roles(List.of(SUPER_USER_ROLE_ID)).officeId(headOffice.getId());
6973

7074
PostUsersResponse userCreationResponse = UserHelper.createUser(requestSpec, responseSpec, createUserRequest);
7175
Assertions.assertNotNull(userCreationResponse.getResourceId());
7276

73-
newUserRequestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
74-
newUserRequestSpec.header("Authorization",
75-
"Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey(username, password));
76-
newUserResponseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
77-
77+
FineractFeignClient newUserClient = FineractFeignClientHelper.createNewFineractFeignClient(username, password);
78+
newUserNotificationHelper = new FeignNotificationHelper(newUserClient);
7879
}
7980

8081
@Test
8182
public void testNotificationRetrievalWorksWhenNoNotificationsAreAvailable() {
8283
// given
8384
// when
84-
GetNotificationsResponse response = NotificationHelper.getNotifications(requestSpec, responseSpec);
85+
GetNotificationsResponse response = notificationHelper.getNotifications();
8586
// then
8687
Assertions.assertNotNull(response);
8788
}
8889

8990
@Test
9091
public void testNotificationRetrievalWorksWhenOneNotificationIsAvailable() {
91-
// given
92+
// given (still using RestAssured-based ClientHelper - to be migrated separately)
9293
PostClientsRequest clientRequest = ClientHelper.defaultClientCreationRequest();
9394
Integer clientId = ClientHelper.createClient(requestSpec, responseSpec, clientRequest);
9495
Assertions.assertNotNull(clientId);
9596

9697
// when
97-
NotificationHelper.waitUntilNotificationsAreAvailable(newUserRequestSpec, newUserResponseSpec);
98-
GetNotificationsResponse response = NotificationHelper.getNotifications(newUserRequestSpec, newUserResponseSpec);
98+
newUserNotificationHelper.waitUntilNotificationsAreAvailable();
99+
GetNotificationsResponse response = newUserNotificationHelper.getNotifications();
99100
// then
100101
Assertions.assertNotNull(response);
101102
List<GetNotification> pageItems = response.getPageItems();

integration-tests/src/test/java/org/apache/fineract/integrationtests/SearchResourcesTest.java

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,14 @@
2626
import io.restassured.http.ContentType;
2727
import io.restassured.specification.RequestSpecification;
2828
import io.restassured.specification.ResponseSpecification;
29-
import java.util.ArrayList;
30-
import java.util.Arrays;
3129
import java.util.List;
3230
import java.util.Map;
3331
import org.apache.fineract.client.models.GetClientsClientIdResponse;
3432
import org.apache.fineract.client.models.GetSearchResponse;
3533
import org.apache.fineract.client.models.PostClientsResponse;
34+
import org.apache.fineract.integrationtests.client.feign.helpers.FeignSearchHelper;
3635
import org.apache.fineract.integrationtests.common.ClientHelper;
37-
import org.apache.fineract.integrationtests.common.SearchHelper;
36+
import org.apache.fineract.integrationtests.common.FineractFeignClientHelper;
3837
import org.apache.fineract.integrationtests.common.Utils;
3938
import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
4039
import org.apache.fineract.integrationtests.common.shares.ShareAccountHelper;
@@ -48,69 +47,66 @@ public class SearchResourcesTest {
4847

4948
private ResponseSpecification responseSpec;
5049
private RequestSpecification requestSpec;
50+
private FeignSearchHelper searchHelper;
5151

5252
@BeforeEach
5353
public void setup() {
5454
Utils.initializeRESTAssured();
5555
this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
5656
this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
5757
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
58+
this.searchHelper = new FeignSearchHelper(FineractFeignClientHelper.getFineractFeignClient());
5859
}
5960

6061
@Test
6162
public void searchAnyValueOverAllResources() {
62-
final List<String> resources = Arrays.asList("clients", "clientIdentifiers", "groups", "savings", "shares", "loans");
63+
final String resources = "clients,clientIdentifiers,groups,savings,shares,loans";
6364

6465
final String query = Utils.randomStringGenerator("C", 12);
65-
final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.TRUE,
66-
resources.toString());
66+
final List<GetSearchResponse> searchResponse = searchHelper.search(query, resources, Boolean.TRUE);
6767
assertNotNull(searchResponse);
6868
assertEquals(0, searchResponse.size());
6969
}
7070

7171
@Test
7272
public void searchAnyValueOverClientResources() {
73-
final List<String> resources = Arrays.asList("clients");
73+
final String resources = "clients";
7474

7575
final String query = Utils.randomStringGenerator("C", 12);
76-
final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.TRUE,
77-
getResources(resources));
76+
final List<GetSearchResponse> searchResponse = searchHelper.search(query, resources, Boolean.TRUE);
7877
assertNotNull(searchResponse);
7978
assertEquals(0, searchResponse.size());
8079
}
8180

8281
@Test
8382
public void searchOverClientResources() {
84-
final List<String> resources = Arrays.asList("clients");
83+
final String resources = "clients";
8584

86-
// Client and Loan account creation
8785
final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID,
8886
ClientHelper.LEGALFORM_ID_PERSON, null);
8987
final Long clientId = clientResponse.getClientId();
9088
final GetClientsClientIdResponse getClientResponse = ClientHelper.getClient(requestSpec, responseSpec, clientId.intValue());
9189
final String query = getClientResponse.getAccountNo();
9290

93-
final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.FALSE,
94-
getResources(resources));
91+
final List<GetSearchResponse> searchResponse = searchHelper.search(query, resources, Boolean.FALSE);
9592
assertNotNull(searchResponse);
9693
assertEquals(1, searchResponse.size());
9794
assertEquals(getClientResponse.getDisplayName(), searchResponse.get(0).getEntityName(), "Client name comparation");
9895
}
9996

10097
@Test
10198
public void searchAnyValueOverLoanResources() {
102-
final List<String> resources = Arrays.asList("loans");
99+
final String resources = "loans";
103100

104101
final String query = Utils.randomStringGenerator("L", 12);
105-
final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.TRUE,
106-
getResources(resources));
102+
final List<GetSearchResponse> searchResponse = searchHelper.search(query, resources, Boolean.TRUE);
107103
assertNotNull(searchResponse);
108104
assertEquals(0, searchResponse.size());
109105
}
110106

111107
@Test
112108
public void searchOverSavingsResources() {
113-
final List<String> resources = Arrays.asList("savings");
109+
final String resources = "savings";
114110

115111
final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID,
116112
ClientHelper.LEGALFORM_ID_PERSON, null);
@@ -120,8 +116,7 @@ public void searchOverSavingsResources() {
120116
final SavingsAccountHelper savingsAccountHelper = new SavingsAccountHelper(requestSpec, responseSpec);
121117
final String query = (String) savingsAccountHelper.getSavingsAccountDetail(savingsId, "accountNo");
122118

123-
final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.FALSE,
124-
getResources(resources));
119+
final List<GetSearchResponse> searchResponse = searchHelper.search(query, resources, Boolean.FALSE);
125120

126121
assertNotNull(searchResponse);
127122
assertEquals(1, searchResponse.size());
@@ -137,7 +132,7 @@ public void searchOverSavingsResources() {
137132

138133
@Test
139134
public void searchOverSharesResources() {
140-
final List<String> resources = Arrays.asList("shares");
135+
final String resources = "shares";
141136

142137
final PostClientsResponse clientsResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID,
143138
ClientHelper.LEGALFORM_ID_PERSON, null);
@@ -170,8 +165,7 @@ public void searchOverSharesResources() {
170165
responseSpec);
171166
final String query = (String) shareAccountData.get("accountNo");
172167

173-
final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.FALSE,
174-
getResources(resources));
168+
final List<GetSearchResponse> searchResponse = searchHelper.search(query, resources, Boolean.FALSE);
175169

176170
assertNotNull(searchResponse);
177171
assertEquals(1, searchResponse.size());
@@ -184,9 +178,4 @@ public void searchOverSharesResources() {
184178
assertNotNull(result.getEntityStatus().getCode());
185179
assertNotNull(result.getEntityStatus().getValue());
186180
}
187-
188-
private String getResources(final List<String> resources) {
189-
return String.join(",", resources);
190-
}
191-
192181
}

integration-tests/src/test/java/org/apache/fineract/integrationtests/TaxesTest.java

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
package org.apache.fineract.integrationtests;
2020

2121
import static org.junit.jupiter.api.Assertions.assertEquals;
22-
import static org.junit.jupiter.api.Assertions.assertThrows;
2322
import static org.junit.jupiter.api.Assertions.assertTrue;
2423

2524
import java.util.HashSet;
2625
import java.util.List;
2726
import java.util.Set;
27+
import org.apache.fineract.client.feign.util.CallFailedRuntimeException;
2828
import org.apache.fineract.client.models.GetTaxesComponentsResponse;
2929
import org.apache.fineract.client.models.GetTaxesGroupResponse;
3030
import org.apache.fineract.client.models.GetTaxesGroupTaxAssociations;
@@ -33,37 +33,47 @@
3333
import org.apache.fineract.client.models.PostTaxesGroupRequest;
3434
import org.apache.fineract.client.models.PostTaxesGroupResponse;
3535
import org.apache.fineract.client.models.PostTaxesGroupTaxComponents;
36-
import org.apache.fineract.client.util.CallFailedRuntimeException;
37-
import org.apache.fineract.integrationtests.common.TaxComponentHelper;
38-
import org.apache.fineract.integrationtests.common.TaxGroupHelper;
36+
import org.apache.fineract.integrationtests.client.feign.helpers.FeignTaxComponentHelper;
37+
import org.apache.fineract.integrationtests.client.feign.helpers.FeignTaxGroupHelper;
38+
import org.apache.fineract.integrationtests.common.FineractFeignClientHelper;
3939
import org.apache.fineract.integrationtests.common.Utils;
4040
import org.apache.fineract.integrationtests.common.accounting.Account;
4141
import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
4242
import org.junit.jupiter.api.Assertions;
43+
import org.junit.jupiter.api.BeforeEach;
4344
import org.junit.jupiter.api.Test;
4445

4546
public class TaxesTest {
4647

48+
private FeignTaxComponentHelper taxComponentHelper;
49+
private FeignTaxGroupHelper taxGroupHelper;
50+
51+
@BeforeEach
52+
public void setup() {
53+
taxComponentHelper = new FeignTaxComponentHelper(FineractFeignClientHelper.getFineractFeignClient());
54+
taxGroupHelper = new FeignTaxGroupHelper(FineractFeignClientHelper.getFineractFeignClient());
55+
}
56+
4757
@Test
4858
public void createTaxComponentTest() {
4959
Long taxComponentId = createTaxComponentWithLiabilityToCredit("taxComponent");
5060

51-
GetTaxesComponentsResponse taxComponentDetails = TaxComponentHelper.retrieveTaxComponent(taxComponentId);
61+
GetTaxesComponentsResponse taxComponentDetails = taxComponentHelper.retrieveTaxComponent(taxComponentId);
5262
Assertions.assertNotNull(taxComponentDetails);
5363
Assertions.assertNotNull(taxComponentDetails.getId());
5464
Assertions.assertEquals(taxComponentId, taxComponentDetails.getId());
5565

5666
taxComponentId = createTaxComponentWithLiabilityToDebit("taxComponent");
5767

58-
taxComponentDetails = TaxComponentHelper.retrieveTaxComponent(taxComponentId);
68+
taxComponentDetails = taxComponentHelper.retrieveTaxComponent(taxComponentId);
5969
Assertions.assertNotNull(taxComponentDetails);
6070
Assertions.assertNotNull(taxComponentDetails.getId());
6171
Assertions.assertEquals(taxComponentId, taxComponentDetails.getId());
6272
}
6373

6474
@Test
6575
public void createTaxGroupTest() {
66-
List<GetTaxesGroupResponse> allTaxGroups = TaxGroupHelper.retrieveAllTaxGroups();
76+
List<GetTaxesGroupResponse> allTaxGroups = taxGroupHelper.retrieveAllTaxGroups();
6777
Assertions.assertNotNull(allTaxGroups);
6878

6979
final Long taxComponentId = createTaxComponentWithLiabilityToCredit("taxComponent");
@@ -72,19 +82,19 @@ public void createTaxGroupTest() {
7282
taxComponentsSet.add(new PostTaxesGroupTaxComponents().taxComponentId(taxComponentId).startDate("01 January 2023"));
7383
final PostTaxesGroupRequest taxGroupRequest = new PostTaxesGroupRequest().name(Utils.randomStringGenerator("TAX_GRP_", 4))
7484
.taxComponents(taxComponentsSet).dateFormat("dd MMMM yyyy").locale("en");
75-
final PostTaxesGroupResponse taxGroupResponse = TaxGroupHelper.createTaxGroup(taxGroupRequest);
85+
final PostTaxesGroupResponse taxGroupResponse = taxGroupHelper.createTaxGroup(taxGroupRequest);
7686
Assertions.assertNotNull(taxGroupResponse);
7787
Assertions.assertNotNull(taxGroupResponse.getResourceId());
7888

79-
final GetTaxesGroupResponse taxGroupDetails = TaxGroupHelper.retrieveTaxGroup(taxGroupResponse.getResourceId());
89+
final GetTaxesGroupResponse taxGroupDetails = taxGroupHelper.retrieveTaxGroup(taxGroupResponse.getResourceId());
8090
Assertions.assertNotNull(taxGroupDetails);
8191
Assertions.assertEquals(taxGroupResponse.getResourceId(), taxGroupDetails.getId());
8292
Assertions.assertFalse(taxGroupDetails.getTaxAssociations().isEmpty());
8393
GetTaxesGroupTaxAssociations taxAssociation = taxGroupDetails.getTaxAssociations().iterator().next();
8494
Assertions.assertNotNull(taxAssociation);
8595
Assertions.assertEquals(taxComponentId, taxAssociation.getTaxComponent().getId());
8696

87-
allTaxGroups = TaxGroupHelper.retrieveAllTaxGroups();
97+
allTaxGroups = taxGroupHelper.retrieveAllTaxGroups();
8898
Assertions.assertNotNull(allTaxGroups);
8999
Assertions.assertTrue(allTaxGroups.size() > 0);
90100
}
@@ -97,7 +107,7 @@ private Long createTaxComponentWithLiabilityToCredit(final String taxComponentPr
97107
.creditAccountType(Integer.valueOf(taxComponentGlAccount.getAccountType().toString()))
98108
.creditAccountId(taxComponentGlAccount.getAccountID().longValue()).dateFormat(Utils.DATE_FORMAT).locale(Utils.LOCALE);
99109

100-
final PostTaxesComponentsResponse taxComponentRespose = TaxComponentHelper.createTaxComponent(taxComponentRequest);
110+
final PostTaxesComponentsResponse taxComponentRespose = taxComponentHelper.createTaxComponent(taxComponentRequest);
101111
Assertions.assertNotNull(taxComponentRespose);
102112
Assertions.assertNotNull(taxComponentRespose.getResourceId());
103113

@@ -112,7 +122,7 @@ private Long createTaxComponentWithLiabilityToDebit(final String taxComponentPre
112122
.debitAccountType(Integer.valueOf(taxComponentGlAccount.getAccountType().toString()))
113123
.debitAccountId(taxComponentGlAccount.getAccountID().longValue()).dateFormat(Utils.DATE_FORMAT).locale(Utils.LOCALE);
114124

115-
final PostTaxesComponentsResponse taxComponentRespose = TaxComponentHelper.createTaxComponent(taxComponentRequest);
125+
final PostTaxesComponentsResponse taxComponentRespose = taxComponentHelper.createTaxComponent(taxComponentRequest);
116126
Assertions.assertNotNull(taxComponentRespose);
117127
Assertions.assertNotNull(taxComponentRespose.getResourceId());
118128

@@ -123,10 +133,9 @@ private Long createTaxComponentWithLiabilityToDebit(final String taxComponentPre
123133
void retrieveTaxGroupWithNonExistentId_shouldReturn404() {
124134
final Long nonExistentTaxGroupId = 99999L;
125135

126-
CallFailedRuntimeException exception = assertThrows(CallFailedRuntimeException.class,
127-
() -> TaxGroupHelper.retrieveTaxGroup(nonExistentTaxGroupId));
136+
CallFailedRuntimeException exception = taxGroupHelper.retrieveTaxGroupExpectingError(nonExistentTaxGroupId);
128137

129-
assertEquals(404, exception.getResponse().code());
138+
assertEquals(404, exception.getStatus());
130139
assertTrue(exception.getMessage().contains("error.msg.tax.group.id.invalid"),
131140
"Response should contain the error code for tax group not found");
132141
}
@@ -135,10 +144,9 @@ void retrieveTaxGroupWithNonExistentId_shouldReturn404() {
135144
void retrieveTaxComponentWithNonExistentId_shouldReturn404() {
136145
final Long nonExistentTaxComponentId = 99999L;
137146

138-
CallFailedRuntimeException exception = assertThrows(CallFailedRuntimeException.class,
139-
() -> TaxComponentHelper.retrieveTaxComponent(nonExistentTaxComponentId));
147+
CallFailedRuntimeException exception = taxComponentHelper.retrieveTaxComponentExpectingError(nonExistentTaxComponentId);
140148

141-
assertEquals(404, exception.getResponse().code());
149+
assertEquals(404, exception.getStatus());
142150
assertTrue(exception.getMessage().contains("error.msg.tax.component.id.invalid"),
143151
"Response should contain the error code for tax component not found");
144152
}

0 commit comments

Comments
 (0)