Izakey closed pull request #11: Fixed undocumented parts of the payload and license API docs code URL: https://github.com/apache/fineract-cn-portfolio/pull/11
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/BalanceSegmentSetApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/BalanceSegmentSetApiDocumentation.java index 86eee87..892e1d4 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/BalanceSegmentSetApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/BalanceSegmentSetApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import com.google.gson.Gson; @@ -32,166 +50,166 @@ public class BalanceSegmentSetApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-balancesegmentsets"); - - @Autowired - private WebApplicationContext context; - - private MockMvc mockMvc; - - @Before - public void setUp ( ) { - - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } - - @Test - public void documentCreateBalanceSegmentSet ( ) throws Exception { - - final Product product = createProduct(); - - final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); - balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); - balanceSegmentSet.setSegments(Arrays.asList( - BigDecimal.ZERO.setScale(5, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.TEN.setScale(5, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.valueOf(10_000_0000, 5))); - balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("abc", "def", "ghi")); - - Gson gson = new Gson(); - this.mockMvc.perform(post("/products/" +product.getIdentifier()+ "/balancesegmentsets/") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(gson.toJson(balanceSegmentSet))) - .andExpect(status().isAccepted()) - .andDo(document("document-create-balance-segment-set", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Balance segment set's identifier"), - fieldWithPath("segments").description("Balance segment set's given name"), - fieldWithPath("segmentIdentifiers").description("Balance segment sets's segment identfiers")))); - - } - - @Test - public void documentGetAllBalanceSegmentSets () throws Exception { - final Product product = createProduct(); - - final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); - balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); - balanceSegmentSet.setSegments(Arrays.asList( - BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.valueOf(10_000_0000, 3))); - balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("how","are", "you")); - - portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); - - this.mockMvc.perform(get("/products/" +product.getIdentifier()+ "/balancesegmentsets/") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-all-balance-segment-sets", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("[]").description("An array of balance segment sets"), - fieldWithPath("[].identifier").description("Balance segment set's identifier "), - fieldWithPath("[].segments").description("Balance segment set's segments "), - fieldWithPath("[].segmentIdentifiers").description("Balance segment set's segment identifier")))); - - } - - @Test - public void documentGetBalanceSegmentSet () throws Exception { - final Product product = createProduct(); - - final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); - balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); - balanceSegmentSet.setSegments(Arrays.asList( - BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.valueOf(10_000_0000, 3))); - balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("how","are", "you")); - - portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); - this.eventRecorder.wait(EventConstants.POST_BALANCE_SEGMENT_SET, new BalanceSegmentSetEvent(product.getIdentifier(), balanceSegmentSet.getIdentifier())); - - - this.mockMvc.perform(get("/products/" +product.getIdentifier()+ "/balancesegmentsets/" +balanceSegmentSet.getIdentifier()) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-balance-segment-set", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("identifier").description("Balance segment set's identifier"), - fieldWithPath("segments").description("Balance segment set's given name"), - fieldWithPath("segmentIdentifiers").description("Balance segment sets's segment identfiers")))); - - } - - @Test - public void documentChangeBalanceSegmentSet () throws Exception { - final Product product = createProduct(); - - final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); - balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); - balanceSegmentSet.setSegments(Arrays.asList( - BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.valueOf(10_000_0000, 3))); - balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("how","are", "you")); - - portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); - this.eventRecorder.wait(EventConstants.POST_BALANCE_SEGMENT_SET, new BalanceSegmentSetEvent(product.getIdentifier(), balanceSegmentSet.getIdentifier())); - - - balanceSegmentSet.setSegments(Arrays.asList( - BigDecimal.ZERO.setScale(6, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.valueOf(100_0000, 6), - BigDecimal.valueOf(10_000_0000, 6))); - balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("abc", "def", "ghi")); - - Gson gson = new Gson(); - this.mockMvc.perform(put("/products/" + product.getIdentifier()+ "/balancesegmentsets/" +balanceSegmentSet.getIdentifier()) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) - .content(gson.toJson(balanceSegmentSet))) - .andExpect(status().isAccepted()) - .andDo(document( - "document-change-balance-segment-set", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Balance segment set's identifier"), - fieldWithPath("segments").description("Balance segment set's given name"), - fieldWithPath("segmentIdentifiers").description("Balance segment sets's segment identfiers")))); - - } - - @Test - public void documentDeleteBalanceSegmentSet() throws Exception { - final Product product = createProduct(); - - final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); - balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); - balanceSegmentSet.setSegments(Arrays.asList( - BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), - BigDecimal.valueOf(10_000_0000, 3))); - balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("am","fine", "thanks")); - - portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); - this.mockMvc.perform(delete("/products/" + product.getIdentifier()+ "/balancesegmentsets/" +balanceSegmentSet.getIdentifier()) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .accept(MediaType.ALL_VALUE)) - .andExpect(status().isAccepted()) - .andDo(document("document-delete-balance-segment-set", preprocessResponse(prettyPrint()))); - - } + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-balancesegmentsets"); + + @Autowired + private WebApplicationContext context; + + private MockMvc mockMvc; + + @Before + public void setUp() { + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void documentCreateBalanceSegmentSet() throws Exception { + + final Product product = createProduct(); + + final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); + balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); + balanceSegmentSet.setSegments(Arrays.asList( + BigDecimal.ZERO.setScale(5, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.TEN.setScale(5, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.valueOf(10_000_0000, 5))); + balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("abc", "def", "ghi")); + + Gson gson = new Gson(); + this.mockMvc.perform(post("/products/" + product.getIdentifier() + "/balancesegmentsets/") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(gson.toJson(balanceSegmentSet))) + .andExpect(status().isAccepted()) + .andDo(document("document-create-balance-segment-set", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Balance segment set's identifier"), + fieldWithPath("segments").description("Balance segment set's given name"), + fieldWithPath("segmentIdentifiers").description("Balance segment sets's segment identfiers")))); + + } + + @Test + public void documentGetAllBalanceSegmentSets() throws Exception { + final Product product = createProduct(); + + final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); + balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); + balanceSegmentSet.setSegments(Arrays.asList( + BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.valueOf(10_000_0000, 3))); + balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("how", "are", "you")); + + portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); + + this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/balancesegmentsets/") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-all-balance-segment-sets", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("[]").description("An array of balance segment sets"), + fieldWithPath("[].identifier").description("Balance segment set's identifier "), + fieldWithPath("[].segments").description("Balance segment set's segments "), + fieldWithPath("[].segmentIdentifiers").description("Balance segment set's segment identifier")))); + + } + + @Test + public void documentGetBalanceSegmentSet() throws Exception { + final Product product = createProduct(); + + final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); + balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); + balanceSegmentSet.setSegments(Arrays.asList( + BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.valueOf(10_000_0000, 3))); + balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("how", "are", "you")); + + portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); + this.eventRecorder.wait(EventConstants.POST_BALANCE_SEGMENT_SET, new BalanceSegmentSetEvent(product.getIdentifier(), balanceSegmentSet.getIdentifier())); + + + this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/balancesegmentsets/" + balanceSegmentSet.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-balance-segment-set", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("identifier").description("Balance segment set's identifier"), + fieldWithPath("segments").description("Balance segment set's given name"), + fieldWithPath("segmentIdentifiers").description("Balance segment sets's segment identfiers")))); + + } + + @Test + public void documentChangeBalanceSegmentSet() throws Exception { + final Product product = createProduct(); + + final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); + balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); + balanceSegmentSet.setSegments(Arrays.asList( + BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.valueOf(10_000_0000, 3))); + balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("how", "are", "you")); + + portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); + this.eventRecorder.wait(EventConstants.POST_BALANCE_SEGMENT_SET, new BalanceSegmentSetEvent(product.getIdentifier(), balanceSegmentSet.getIdentifier())); + + + balanceSegmentSet.setSegments(Arrays.asList( + BigDecimal.ZERO.setScale(6, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.valueOf(100_0000, 6), + BigDecimal.valueOf(10_000_0000, 6))); + balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("abc", "def", "ghi")); + + Gson gson = new Gson(); + this.mockMvc.perform(put("/products/" + product.getIdentifier() + "/balancesegmentsets/" + balanceSegmentSet.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) + .content(gson.toJson(balanceSegmentSet))) + .andExpect(status().isAccepted()) + .andDo(document( + "document-change-balance-segment-set", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Balance segment set's identifier"), + fieldWithPath("segments").description("Balance segment set's given name"), + fieldWithPath("segmentIdentifiers").description("Balance segment sets's segment identfiers")))); + + } + + @Test + public void documentDeleteBalanceSegmentSet() throws Exception { + final Product product = createProduct(); + + final BalanceSegmentSet balanceSegmentSet = new BalanceSegmentSet(); + balanceSegmentSet.setIdentifier(testEnvironment.generateUniqueIdentifer("bss")); + balanceSegmentSet.setSegments(Arrays.asList( + BigDecimal.ZERO.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.TEN.setScale(3, BigDecimal.ROUND_HALF_EVEN), + BigDecimal.valueOf(10_000_0000, 3))); + balanceSegmentSet.setSegmentIdentifiers(Arrays.asList("am", "fine", "thanks")); + + portfolioManager.createBalanceSegmentSet(product.getIdentifier(), balanceSegmentSet); + this.mockMvc.perform(delete("/products/" + product.getIdentifier() + "/balancesegmentsets/" + balanceSegmentSet.getIdentifier()) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.ALL_VALUE)) + .andExpect(status().isAccepted()) + .andDo(document("document-delete-balance-segment-set", preprocessResponse(prettyPrint()))); + + } } diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/CaseDocumentsApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/CaseDocumentsApiDocumentation.java index 2f01abc..856998a 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/CaseDocumentsApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/CaseDocumentsApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import com.google.gson.Gson; @@ -30,98 +48,98 @@ public class CaseDocumentsApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-casedocuments"); + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-casedocuments"); - @Autowired - private WebApplicationContext context; + @Autowired + private WebApplicationContext context; - private MockMvc mockMvc; + private MockMvc mockMvc; - @Before - public void setUp() { + @Before + public void setUp() { - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } - @Test - public void documentGetCaseDocuments() throws Exception { + @Test + public void documentGetCaseDocuments() throws Exception { - final Product product = createAndEnableProduct(); + final Product product = createAndEnableProduct(); - final Case customerCase = createCase(product.getIdentifier()); + final Case customerCase = createCase(product.getIdentifier()); - final CaseCustomerDocuments caseDocuments = caseDocumentsManager.getCaseDocuments( - product.getIdentifier(), customerCase.getIdentifier()); + final CaseCustomerDocuments caseDocuments = caseDocumentsManager.getCaseDocuments( + product.getIdentifier(), customerCase.getIdentifier()); - final CaseCustomerDocuments.Document studentLoanDocument - = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "student_loan_documents"); - final CaseCustomerDocuments.Document houseTitle - = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "house_title"); - final CaseCustomerDocuments.Document workContract - = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "work_contract"); + final CaseCustomerDocuments.Document studentLoanDocument + = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "student_loan_documents"); + final CaseCustomerDocuments.Document houseTitle + = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "house_title"); + final CaseCustomerDocuments.Document workContract + = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "work_contract"); - caseDocuments.setDocuments(Arrays.asList(studentLoanDocument, houseTitle, workContract)); + caseDocuments.setDocuments(Arrays.asList(studentLoanDocument, houseTitle, workContract)); - this.mockMvc.perform(get("/individuallending/products/" + product.getIdentifier() + "/cases/" + customerCase.getIdentifier() + "/documents") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .accept(MediaType.ALL_VALUE)) - .andExpect(status().isOk()) - .andDo(document("document-get-case-documents", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - responseFields( - fieldWithPath("documents").type("List<Document>").description("The case document +\n" + - " +\n" + - "_Document_ { +\n" + - " *enum* _Type_ { +\n" + - " customerId, +\n" + - " documentId, +\n" + - " } +")))); + this.mockMvc.perform(get("/individuallending/products/" + product.getIdentifier() + "/cases/" + customerCase.getIdentifier() + "/documents") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.ALL_VALUE)) + .andExpect(status().isOk()) + .andDo(document("document-get-case-documents", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + responseFields( + fieldWithPath("documents").type("List<Document>").description("The case document +\n" + + " +\n" + + "_Document_ { +\n" + + " *enum* _Type_ { +\n" + + " customerId, +\n" + + " documentId, +\n" + + " } +")))); - } + } - @Test - public void documentChangeCaseDocuments() throws Exception { + @Test + public void documentChangeCaseDocuments() throws Exception { - final Product product = createAndEnableProduct(); + final Product product = createAndEnableProduct(); - final Case customerCase = createCase(product.getIdentifier()); + final Case customerCase = createCase(product.getIdentifier()); - final CaseCustomerDocuments caseDocuments = caseDocumentsManager.getCaseDocuments( - product.getIdentifier(), customerCase.getIdentifier()); + final CaseCustomerDocuments caseDocuments = caseDocumentsManager.getCaseDocuments( + product.getIdentifier(), customerCase.getIdentifier()); - final CaseCustomerDocuments.Document houseLoanDocument - = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "house_loan_documents"); - final CaseCustomerDocuments.Document houseTitle - = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "house_title"); - final CaseCustomerDocuments.Document workContract - = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "work_contract"); + final CaseCustomerDocuments.Document houseLoanDocument + = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "house_loan_documents"); + final CaseCustomerDocuments.Document houseTitle + = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "house_title"); + final CaseCustomerDocuments.Document workContract + = new CaseCustomerDocuments.Document(Fixture.CUSTOMER_IDENTIFIER, "work_contract"); - caseDocuments.setDocuments(Arrays.asList(houseLoanDocument, houseTitle, workContract)); + caseDocuments.setDocuments(Arrays.asList(houseLoanDocument, houseTitle, workContract)); - caseDocumentsManager.changeCaseDocuments(product.getIdentifier(), customerCase.getIdentifier(), caseDocuments); + caseDocumentsManager.changeCaseDocuments(product.getIdentifier(), customerCase.getIdentifier(), caseDocuments); - Gson gson = new Gson(); - this.mockMvc.perform(put("/individuallending/products/" + product.getIdentifier() + "/cases/" + customerCase.getIdentifier() + "/documents") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) - .content(gson.toJson(caseDocuments))) - .andExpect(status().isAccepted()) - .andDo(document( - "document-change-case-documents", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("documents").type("List<Document>").description("The case document +\n" + - " +\n" + - "_Document_ { +\n" + - " *enum* _Type_ { +\n" + - " customerId, +\n" + - " documentId, +\n" + - " } +")))); - } + Gson gson = new Gson(); + this.mockMvc.perform(put("/individuallending/products/" + product.getIdentifier() + "/cases/" + customerCase.getIdentifier() + "/documents") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) + .content(gson.toJson(caseDocuments))) + .andExpect(status().isAccepted()) + .andDo(document( + "document-change-case-documents", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("documents").type("List<Document>").description("The case document +\n" + + " +\n" + + "_Document_ { +\n" + + " *enum* _Type_ { +\n" + + " customerId, +\n" + + " documentId, +\n" + + " } +")))); + } } \ No newline at end of file diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/CasesApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/CasesApiDocumentation.java index 00b1d6b..2470942 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/CasesApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/CasesApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import com.google.gson.Gson; @@ -15,8 +33,10 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; + import java.util.HashSet; import java.util.Set; + import static org.apache.fineract.cn.lang.config.TenantHeaderFilter.TENANT_HEADER; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; @@ -31,78 +51,79 @@ public class CasesApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-cases"); - - @Autowired - private WebApplicationContext context; - - private MockMvc mockMvc; - - @Before - public void setUp() { - - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } - - @Test - public void documentCreateCase () throws Exception { - - final Product product = createAndEnableProduct(); - - final Case caseInstance = createCase(product.getIdentifier()); - caseInstance.setIdentifier("case-v1"); - - Gson gson = new Gson(); - this.mockMvc.perform(post("/products/"+product.getIdentifier()+"/cases/") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(gson.toJson(caseInstance))) - .andExpect(status().isAccepted()) - .andDo(document("document-create-case", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Cases's identifier"), - fieldWithPath("productIdentifier").description("Products's identifier"), - fieldWithPath("interest").description("Cases's interest"), - fieldWithPath("parameters").description("cases's parameters"), - fieldWithPath("accountAssignments").description("Cases's account assignment"), - fieldWithPath("currentState").description("Cases's current state")))); - - } - - @Test - public void documentChangeCase () throws Exception { - - final Product product = createAndEnableProduct(); - - - final CaseParameters newCaseParameters = Fixture.createAdjustedCaseParameters(x -> {}); - final String originalParameters = new Gson().toJson(newCaseParameters); - final Case caseInstance = createAdjustedCase(product.getIdentifier(), x -> x.setParameters(originalParameters)); - - final Set<AccountAssignment> accountAssignments = new HashSet<>(); - accountAssignments.add(new AccountAssignment(AccountDesignators.CUSTOMER_LOAN_GROUP, "002-011")); - accountAssignments.add(new AccountAssignment(AccountDesignators.ENTRY, "002-012")); - caseInstance.setAccountAssignments(accountAssignments); - - Gson gson = new Gson(); - this.mockMvc.perform(put("/products/" + product.getIdentifier() + "/cases/" + caseInstance.getIdentifier()) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) - .content(gson.toJson(caseInstance))) - .andExpect(status().isAccepted()) - .andDo(document( - "document-change-case", preprocessRequest(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Cases's identifier"), - fieldWithPath("productIdentifier").description("Products's identifier"), - fieldWithPath("interest").description("Cases's interest"), - fieldWithPath("parameters").description("cases's parameters"), - fieldWithPath("accountAssignments").description("Cases's account assignment"), - fieldWithPath("currentState").description("Cases's current state")))); - - } + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-cases"); + + @Autowired + private WebApplicationContext context; + + private MockMvc mockMvc; + + @Before + public void setUp() { + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void documentCreateCase() throws Exception { + + final Product product = createAndEnableProduct(); + + final Case caseInstance = createCase(product.getIdentifier()); + caseInstance.setIdentifier("case-v1"); + + Gson gson = new Gson(); + this.mockMvc.perform(post("/products/" + product.getIdentifier() + "/cases/") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(gson.toJson(caseInstance))) + .andExpect(status().isAccepted()) + .andDo(document("document-create-case", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Cases's identifier"), + fieldWithPath("productIdentifier").description("Products's identifier"), + fieldWithPath("interest").description("Cases's interest"), + fieldWithPath("parameters").description("cases's parameters"), + fieldWithPath("accountAssignments").description("Cases's account assignment"), + fieldWithPath("currentState").description("Cases's current state")))); + + } + + @Test + public void documentChangeCase() throws Exception { + + final Product product = createAndEnableProduct(); + + + final CaseParameters newCaseParameters = Fixture.createAdjustedCaseParameters(x -> { + }); + final String originalParameters = new Gson().toJson(newCaseParameters); + final Case caseInstance = createAdjustedCase(product.getIdentifier(), x -> x.setParameters(originalParameters)); + + final Set<AccountAssignment> accountAssignments = new HashSet<>(); + accountAssignments.add(new AccountAssignment(AccountDesignators.CUSTOMER_LOAN_GROUP, "002-011")); + accountAssignments.add(new AccountAssignment(AccountDesignators.ENTRY, "002-012")); + caseInstance.setAccountAssignments(accountAssignments); + + Gson gson = new Gson(); + this.mockMvc.perform(put("/products/" + product.getIdentifier() + "/cases/" + caseInstance.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) + .content(gson.toJson(caseInstance))) + .andExpect(status().isAccepted()) + .andDo(document( + "document-change-case", preprocessRequest(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Cases's identifier"), + fieldWithPath("productIdentifier").description("Products's identifier"), + fieldWithPath("interest").description("Cases's interest"), + fieldWithPath("parameters").description("cases's parameters"), + fieldWithPath("accountAssignments").description("Cases's account assignment"), + fieldWithPath("currentState").description("Cases's current state")))); + + } } diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/ChargeDefinitionApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/ChargeDefinitionApiDocumentation.java index 63da9d8..281d25d 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/ChargeDefinitionApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/ChargeDefinitionApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import com.google.gson.Gson; @@ -33,207 +51,207 @@ public class ChargeDefinitionApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-chargedefinitions"); - - @Autowired - private WebApplicationContext context; - - private MockMvc mockMvc; - - @Before - public void setUp() { - - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } - - @Test - public void documentGetAllChargeDefinitions ( ) throws Exception { - final Product product = createProduct(); - - try { - this.mockMvc.perform(get("/products/" +product.getIdentifier()+"/charges/") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-all-charge-definitions", preprocessRequest(prettyPrint()), - responseFields( - - fieldWithPath("identifier").description("Charge definition's identifier"), - fieldWithPath("name").description("Charge definitions given name"), - fieldWithPath("description").description("Charge definitions description"), - fieldWithPath("accrueAction").description("Charge definitions accrue action"), - fieldWithPath("proportionalTo").description("Charge definitions proportional to"), - fieldWithPath("accrualAccountDesignator").description("Charge definitions accrual acion generatort"), - fieldWithPath("forCycleSizeUnit").description("Charge definitions cycle size unit"), - fieldWithPath("forSegmentSet").description("Charge definitions segment set"), - fieldWithPath("fromSegment").description("Charge definitions from segment"), - fieldWithPath("toSegment").description("Charge definitions to segment"), - fieldWithPath("chargeOnTop").description("Charge definitions charge on top"), - fieldWithPath("fromAccountDesignator").description("From account designator"), - fieldWithPath("toAccountDesignator").description("To account designator"), - fieldWithPath("amount").description("Charge definition's amount"), - fieldWithPath("chargeMethod").description("Charge definitions charge method"), - fieldWithPath("chargeAction").description("Charge definition's charge action"), - fieldWithPath("description").description("Employee's middle name"), - fieldWithPath("readOnly").description("Readability")))); + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-chargedefinitions"); + + @Autowired + private WebApplicationContext context; + + private MockMvc mockMvc; + + @Before + public void setUp() { + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void documentGetAllChargeDefinitions() throws Exception { + final Product product = createProduct(); + + try { + this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/charges/") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-all-charge-definitions", preprocessRequest(prettyPrint()), + responseFields( + + fieldWithPath("identifier").description("Charge definition's identifier"), + fieldWithPath("name").description("Charge definitions given name"), + fieldWithPath("description").description("Charge definitions description"), + fieldWithPath("accrueAction").description("Charge definitions accrue action"), + fieldWithPath("proportionalTo").description("Charge definitions proportional to"), + fieldWithPath("accrualAccountDesignator").description("Charge definitions accrual acion generatort"), + fieldWithPath("forCycleSizeUnit").description("Charge definitions cycle size unit"), + fieldWithPath("forSegmentSet").description("Charge definitions segment set"), + fieldWithPath("fromSegment").description("Charge definitions from segment"), + fieldWithPath("toSegment").description("Charge definitions to segment"), + fieldWithPath("chargeOnTop").description("Charge definitions charge on top"), + fieldWithPath("fromAccountDesignator").description("From account designator"), + fieldWithPath("toAccountDesignator").description("To account designator"), + fieldWithPath("amount").description("Charge definition's amount"), + fieldWithPath("chargeMethod").description("Charge definitions charge method"), + fieldWithPath("chargeAction").description("Charge definition's charge action"), + fieldWithPath("description").description("Employee's middle name"), + fieldWithPath("readOnly").description("Readability")))); } catch (Exception e) { - e.printStackTrace(); - } - - } - - - @Test - public void documentCreateChargeDefinition() throws Exception { - - final Product product = createProduct(); - - final ChargeDefinition chargeDefinition = new ChargeDefinition(); - chargeDefinition.setIdentifier("charge123"); - chargeDefinition.setName("core123"); - chargeDefinition.setFromAccountDesignator("Pembe"); - chargeDefinition.setToAccountDesignator("Miriam"); - chargeDefinition.setAmount(BigDecimal.ONE.setScale(3, BigDecimal.ROUND_UNNECESSARY)); - chargeDefinition.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); - chargeDefinition.setChargeAction(Action.OPEN.name()); - chargeDefinition.setDescription("describe charge"); - - - Gson gson = new Gson(); - this.mockMvc.perform(post("/products/"+product.getIdentifier()+"/charges/") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(gson.toJson(chargeDefinition))) - .andExpect(status().isAccepted()) - .andDo(document("document-create-charge-definition", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Charge definition's identifier"), - fieldWithPath("name").description("Charge definitions given name"), - fieldWithPath("fromAccountDesignator").description("From account designator"), - fieldWithPath("toAccountDesignator").description("To account designator"), - fieldWithPath("amount").description("Charge definition's amount"), - fieldWithPath("chargeMethod").description("Charge definitions charge method"), - fieldWithPath("chargeAction").description("Charge definition's charge action"), - fieldWithPath("description").description("Employee's middle name"), - fieldWithPath("readOnly").description("Readability")))); - - } - - @Test - public void documentChangeChargeDefinition() throws Exception { - - final Product product = createProduct(); - - final ChargeDefinition chargeDefinition = new ChargeDefinition(); - chargeDefinition.setIdentifier("charge124"); - chargeDefinition.setName("core123"); - chargeDefinition.setFromAccountDesignator("Pembe"); - chargeDefinition.setToAccountDesignator("Miriam"); - chargeDefinition.setAmount(BigDecimal.ONE.setScale(3, BigDecimal.ROUND_UNNECESSARY)); - chargeDefinition.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); - chargeDefinition.setChargeAction(Action.OPEN.name()); - chargeDefinition.setDescription("describe charge"); - - portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinition); - - chargeDefinition.setName("charge12345"); - chargeDefinition.setFromAccountDesignator("Paul"); - chargeDefinition.setToAccountDesignator("Motia"); - - Gson gson = new Gson(); - this.mockMvc.perform(put("/products/" + product.getIdentifier() + "/charges/" + chargeDefinition.getIdentifier()) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) - .content(gson.toJson(chargeDefinition))) - .andExpect(status().isAccepted()) - .andDo(document( - "document-change-charge-definition", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Charge definition's identifier"), - fieldWithPath("name").description("Charge definitions given name"), - fieldWithPath("fromAccountDesignator").description("From account designator"), - fieldWithPath("toAccountDesignator").description("To account designator"), - fieldWithPath("amount").description("Charge definition's amount"), - fieldWithPath("chargeMethod").description("Charge definitions charge method"), - fieldWithPath("chargeAction").description("Charge definition's charge action"), - fieldWithPath("description").description("Employee's middle name"), - fieldWithPath("readOnly").description("Readability")))); - } - - @Test - public void documentGetChargeDefinition() throws Exception { - - final Product product = createProduct(); - - final ChargeDefinition chargeDefinition = new ChargeDefinition(); - chargeDefinition.setIdentifier("charge10"); - chargeDefinition.setName("core123"); - chargeDefinition.setFromAccountDesignator("pembe"); - chargeDefinition.setToAccountDesignator("miriam"); - chargeDefinition.setAmount(BigDecimal.ONE.setScale(3, BigDecimal.ROUND_UNNECESSARY)); - chargeDefinition.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); - chargeDefinition.setChargeAction(Action.OPEN.name()); - chargeDefinition.setDescription("describe charge"); - - portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinition); - - - this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/charges/" + chargeDefinition.getIdentifier()) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .accept(MediaType.ALL_VALUE)) - .andExpect(status().isOk()) - .andDo(document("document-get-case-document", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - responseFields( - fieldWithPath("identifier").description("Charge definition's identifier"), - fieldWithPath("name").description("Charge definitions given name"), - fieldWithPath("description").description("Charge definitions description"), - fieldWithPath("accrueAction").description("Charge definitions accrue action"), - fieldWithPath("proportionalTo").description("Charge definitions proportional to"), - fieldWithPath("accrualAccountDesignator").description("Charge definitions accrual acion generatort"), - fieldWithPath("forCycleSizeUnit").description("Charge definitions cycle size unit"), - fieldWithPath("forSegmentSet").description("Charge definitions segment set"), - fieldWithPath("fromSegment").description("Charge definitions from segment"), - fieldWithPath("toSegment").description("Charge definitions to segment"), - fieldWithPath("chargeOnTop").description("Charge definitions charge on top"), - fieldWithPath("fromAccountDesignator").description("From account designator"), - fieldWithPath("toAccountDesignator").description("To account designator"), - fieldWithPath("amount").description("Charge definition's amount"), - fieldWithPath("chargeMethod").description("Charge definitions charge method"), - fieldWithPath("chargeAction").description("Charge definition's charge action"), - fieldWithPath("description").description("Employee's middle name"), - fieldWithPath("readOnly").description("Readability")))); + e.printStackTrace(); } - @Test - public void documentDeleteChargeDefinition () throws Exception{ - - final Product product = createProduct(); - - final ChargeDefinition chargeDefinitionToDelete = new ChargeDefinition(); - chargeDefinitionToDelete.setAmount(BigDecimal.TEN); - chargeDefinitionToDelete.setIdentifier("random123"); - chargeDefinitionToDelete.setName("account"); - chargeDefinitionToDelete.setDescription("account charge definition"); - chargeDefinitionToDelete.setChargeAction(Action.APPROVE.name()); - chargeDefinitionToDelete.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); - chargeDefinitionToDelete.setToAccountDesignator(AccountDesignators.GENERAL_LOSS_ALLOWANCE); - chargeDefinitionToDelete.setFromAccountDesignator(AccountDesignators.INTEREST_ACCRUAL); - portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinitionToDelete); - this.eventRecorder.wait(EventConstants.POST_CHARGE_DEFINITION, - new ChargeDefinitionEvent(product.getIdentifier(), chargeDefinitionToDelete.getIdentifier())); - - this.mockMvc.perform(delete("/products/"+product.getIdentifier()+"/charges/" + chargeDefinitionToDelete.getIdentifier()) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .accept(MediaType.ALL_VALUE)) - .andExpect(status().isAccepted()) - .andDo(document("document-delete-charge-definition", preprocessResponse(prettyPrint()))); - } + } + + + @Test + public void documentCreateChargeDefinition() throws Exception { + + final Product product = createProduct(); + + final ChargeDefinition chargeDefinition = new ChargeDefinition(); + chargeDefinition.setIdentifier("charge123"); + chargeDefinition.setName("core123"); + chargeDefinition.setFromAccountDesignator("Pembe"); + chargeDefinition.setToAccountDesignator("Miriam"); + chargeDefinition.setAmount(BigDecimal.ONE.setScale(3, BigDecimal.ROUND_UNNECESSARY)); + chargeDefinition.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); + chargeDefinition.setChargeAction(Action.OPEN.name()); + chargeDefinition.setDescription("describe charge"); + + + Gson gson = new Gson(); + this.mockMvc.perform(post("/products/" + product.getIdentifier() + "/charges/") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(gson.toJson(chargeDefinition))) + .andExpect(status().isAccepted()) + .andDo(document("document-create-charge-definition", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Charge definition's identifier"), + fieldWithPath("name").description("Charge definitions given name"), + fieldWithPath("fromAccountDesignator").description("From account designator"), + fieldWithPath("toAccountDesignator").description("To account designator"), + fieldWithPath("amount").description("Charge definition's amount"), + fieldWithPath("chargeMethod").description("Charge definitions charge method"), + fieldWithPath("chargeAction").description("Charge definition's charge action"), + fieldWithPath("description").description("Employee's middle name"), + fieldWithPath("readOnly").description("Readability")))); + + } + + @Test + public void documentChangeChargeDefinition() throws Exception { + + final Product product = createProduct(); + + final ChargeDefinition chargeDefinition = new ChargeDefinition(); + chargeDefinition.setIdentifier("charge124"); + chargeDefinition.setName("core123"); + chargeDefinition.setFromAccountDesignator("Pembe"); + chargeDefinition.setToAccountDesignator("Miriam"); + chargeDefinition.setAmount(BigDecimal.ONE.setScale(3, BigDecimal.ROUND_UNNECESSARY)); + chargeDefinition.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); + chargeDefinition.setChargeAction(Action.OPEN.name()); + chargeDefinition.setDescription("describe charge"); + + portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinition); + + chargeDefinition.setName("charge12345"); + chargeDefinition.setFromAccountDesignator("Paul"); + chargeDefinition.setToAccountDesignator("Motia"); + + Gson gson = new Gson(); + this.mockMvc.perform(put("/products/" + product.getIdentifier() + "/charges/" + chargeDefinition.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) + .content(gson.toJson(chargeDefinition))) + .andExpect(status().isAccepted()) + .andDo(document( + "document-change-charge-definition", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Charge definition's identifier"), + fieldWithPath("name").description("Charge definitions given name"), + fieldWithPath("fromAccountDesignator").description("From account designator"), + fieldWithPath("toAccountDesignator").description("To account designator"), + fieldWithPath("amount").description("Charge definition's amount"), + fieldWithPath("chargeMethod").description("Charge definitions charge method"), + fieldWithPath("chargeAction").description("Charge definition's charge action"), + fieldWithPath("description").description("Employee's middle name"), + fieldWithPath("readOnly").description("Readability")))); + } + + @Test + public void documentGetChargeDefinition() throws Exception { + + final Product product = createProduct(); + + final ChargeDefinition chargeDefinition = new ChargeDefinition(); + chargeDefinition.setIdentifier("charge10"); + chargeDefinition.setName("core123"); + chargeDefinition.setFromAccountDesignator("pembe"); + chargeDefinition.setToAccountDesignator("miriam"); + chargeDefinition.setAmount(BigDecimal.ONE.setScale(3, BigDecimal.ROUND_UNNECESSARY)); + chargeDefinition.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); + chargeDefinition.setChargeAction(Action.OPEN.name()); + chargeDefinition.setDescription("describe charge"); + + portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinition); + + + this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/charges/" + chargeDefinition.getIdentifier()) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.ALL_VALUE)) + .andExpect(status().isOk()) + .andDo(document("document-get-case-document", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + responseFields( + fieldWithPath("identifier").description("Charge definition's identifier"), + fieldWithPath("name").description("Charge definitions given name"), + fieldWithPath("description").description("Charge definitions description"), + fieldWithPath("accrueAction").description("Charge definitions accrue action"), + fieldWithPath("proportionalTo").description("Charge definitions proportional to"), + fieldWithPath("accrualAccountDesignator").description("Charge definitions accrual acion generatort"), + fieldWithPath("forCycleSizeUnit").description("Charge definitions cycle size unit"), + fieldWithPath("forSegmentSet").description("Charge definitions segment set"), + fieldWithPath("fromSegment").description("Charge definitions from segment"), + fieldWithPath("toSegment").description("Charge definitions to segment"), + fieldWithPath("chargeOnTop").description("Charge definitions charge on top"), + fieldWithPath("fromAccountDesignator").description("From account designator"), + fieldWithPath("toAccountDesignator").description("To account designator"), + fieldWithPath("amount").description("Charge definition's amount"), + fieldWithPath("chargeMethod").description("Charge definitions charge method"), + fieldWithPath("chargeAction").description("Charge definition's charge action"), + fieldWithPath("description").description("Employee's middle name"), + fieldWithPath("readOnly").description("Readability")))); + } + + @Test + public void documentDeleteChargeDefinition() throws Exception { + + final Product product = createProduct(); + + final ChargeDefinition chargeDefinitionToDelete = new ChargeDefinition(); + chargeDefinitionToDelete.setAmount(BigDecimal.TEN); + chargeDefinitionToDelete.setIdentifier("random123"); + chargeDefinitionToDelete.setName("account"); + chargeDefinitionToDelete.setDescription("account charge definition"); + chargeDefinitionToDelete.setChargeAction(Action.APPROVE.name()); + chargeDefinitionToDelete.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED); + chargeDefinitionToDelete.setToAccountDesignator(AccountDesignators.GENERAL_LOSS_ALLOWANCE); + chargeDefinitionToDelete.setFromAccountDesignator(AccountDesignators.INTEREST_ACCRUAL); + portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinitionToDelete); + this.eventRecorder.wait(EventConstants.POST_CHARGE_DEFINITION, + new ChargeDefinitionEvent(product.getIdentifier(), chargeDefinitionToDelete.getIdentifier())); + + this.mockMvc.perform(delete("/products/" + product.getIdentifier() + "/charges/" + chargeDefinitionToDelete.getIdentifier()) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.ALL_VALUE)) + .andExpect(status().isAccepted()) + .andDo(document("document-delete-charge-definition", preprocessResponse(prettyPrint()))); + } } diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/LossProvisionApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/LossProvisionApiDocumentation.java index c297245..4673268 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/LossProvisionApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/LossProvisionApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; @@ -35,93 +53,95 @@ public class LossProvisionApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-lossprovision"); - - @Autowired - private WebApplicationContext context; - - private MockMvc mockMvc; - - @Before - public void setUp ( ) { - - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-lossprovision"); + + @Autowired + private WebApplicationContext context; + + private MockMvc mockMvc; + + @Before + public void setUp() { + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void documentChangeLossProvisionConfiguration() throws Exception { + final Product product = createAdjustedProduct(x -> { + }); + + + final List<LossProvisionStep> lossProvisionSteps = new ArrayList<>(); + lossProvisionSteps.add(new LossProvisionStep(1, BigDecimal.valueOf(5_00, 2))); + final LossProvisionConfiguration lossProvisionConfiguration = new LossProvisionConfiguration(lossProvisionSteps); + + individualLending.changeLossProvisionConfiguration(product.getIdentifier(), lossProvisionConfiguration); + + + Gson gson = new Gson(); + this.mockMvc.perform(put("/individuallending/products/" + product.getIdentifier() + "/lossprovisionconfiguration") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) + .content(gson.toJson(lossProvisionConfiguration))) + .andExpect(status().isAccepted()) + .andDo(document( + "document-change-loss-provision-configuration", preprocessRequest(prettyPrint()), + requestFields( + fieldWithPath("lossProvisionSteps").type("List<LossProvisionSteps>").description("The loss provision configurations +\n" + + " +\n" + + "_LossProvisionSteps_ { +\n" + + " *enum* _Type_ { +\n" + + " daysLate, +\n" + + " percentProvision, +\n" + + " } +") + ) + )); + } + + @Test + public void documentGetLossProvisionConfiguration() throws Exception { + + final Product product = createAdjustedProduct(x -> { + }); + + final List<LossProvisionStep> lossProvisionSteps1 = new ArrayList<>(); + lossProvisionSteps1.add(new LossProvisionStep(0, BigDecimal.valueOf(1_00, 2))); + lossProvisionSteps1.add(new LossProvisionStep(1, BigDecimal.valueOf(9_00, 2))); + lossProvisionSteps1.add(new LossProvisionStep(30, BigDecimal.valueOf(35_00, 2))); + lossProvisionSteps1.add(new LossProvisionStep(60, BigDecimal.valueOf(55_00, 2))); + final LossProvisionConfiguration lossProvisionConfiguration = new LossProvisionConfiguration(lossProvisionSteps1); + + individualLending.changeLossProvisionConfiguration(product.getIdentifier(), lossProvisionConfiguration); + + try { + this.mockMvc.perform(get("/individuallending/products/" + product.getIdentifier() + "/lossprovisionconfiguration") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-loss-provision-configuration", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("lossProvisionSteps").type("List<LossProvisionSteps>").description("The loss provision configurations +\n" + + " +\n" + + "_LossProvisionSteps_ { +\n" + + " *enum* _Type_ { +\n" + + " daysLate, +\n" + + " percentProvision, +\n" + + " } +") + ) + )); + } catch (Exception e) { + e.printStackTrace(); } - @Test - public void documentChangeLossProvisionConfiguration ( ) throws Exception { - final Product product = createAdjustedProduct(x -> {}); - - - final List<LossProvisionStep> lossProvisionSteps = new ArrayList<>(); - lossProvisionSteps.add(new LossProvisionStep(1, BigDecimal.valueOf(5_00, 2))); - final LossProvisionConfiguration lossProvisionConfiguration = new LossProvisionConfiguration(lossProvisionSteps); - - individualLending.changeLossProvisionConfiguration(product.getIdentifier(), lossProvisionConfiguration); - - - Gson gson = new Gson(); - this.mockMvc.perform(put("/individuallending/products/" + product.getIdentifier() + "/lossprovisionconfiguration") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) - .content(gson.toJson(lossProvisionConfiguration))) - .andExpect(status().isAccepted()) - .andDo(document( - "document-change-loss-provision-configuration", preprocessRequest(prettyPrint()), - requestFields( - fieldWithPath("lossProvisionSteps").type("List<LossProvisionSteps>").description("The loss provision configurations +\n" + - " +\n" + - "_LossProvisionSteps_ { +\n" + - " *enum* _Type_ { +\n" + - " daysLate, +\n" + - " percentProvision, +\n" + - " } +") - ) - )); - } - - @Test - public void documentGetLossProvisionConfiguration ( ) throws Exception{ - - final Product product = createAdjustedProduct(x -> {}); - - final List<LossProvisionStep> lossProvisionSteps1 = new ArrayList<>(); - lossProvisionSteps1.add(new LossProvisionStep(0, BigDecimal.valueOf(1_00, 2))); - lossProvisionSteps1.add(new LossProvisionStep(1, BigDecimal.valueOf(9_00, 2))); - lossProvisionSteps1.add(new LossProvisionStep(30, BigDecimal.valueOf(35_00, 2))); - lossProvisionSteps1.add(new LossProvisionStep(60, BigDecimal.valueOf(55_00, 2))); - final LossProvisionConfiguration lossProvisionConfiguration = new LossProvisionConfiguration(lossProvisionSteps1); - - individualLending.changeLossProvisionConfiguration(product.getIdentifier(), lossProvisionConfiguration); - - try { - this.mockMvc.perform(get("/individuallending/products/" + product.getIdentifier() + "/lossprovisionconfiguration") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-loss-provision-configuration", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("lossProvisionSteps").type("List<LossProvisionSteps>").description("The loss provision configurations +\n" + - " +\n" + - "_LossProvisionSteps_ { +\n" + - " *enum* _Type_ { +\n" + - " daysLate, +\n" + - " percentProvision, +\n" + - " } +") - ) - )); - } catch (Exception e) { - e.printStackTrace(); - } - - } + } - } \ No newline at end of file +} \ No newline at end of file diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/PatternApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/PatternApiDocumentation.java index da82448..2d9c6a9 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/PatternApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/PatternApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import org.junit.Before; @@ -22,44 +40,44 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; public class PatternApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-pattern"); + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-pattern"); - @Autowired - private WebApplicationContext context; + @Autowired + private WebApplicationContext context; - private MockMvc mockMvc; + private MockMvc mockMvc; - @Before - public void setUp ( ) { + @Before + public void setUp() { - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } - @Test - public void documentGetPatterns ( ) throws Exception { + @Test + public void documentGetPatterns() throws Exception { - try { - this.mockMvc.perform(get("/patterns/") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-patterns", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("parameterPackage").description("Pattern's parameter package"), - fieldWithPath("accountAssignmentGroups").description("Pattern's groups"), - fieldWithPath("accountAssignmentsRequired").description("Pattern's account assignment status") - ) + try { + this.mockMvc.perform(get("/patterns/") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-patterns", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("[].parameterPackage").description("Pattern's parameter package"), + fieldWithPath("[].accountAssignmentGroups").description("Pattern's groups"), + fieldWithPath("[].accountAssignmentsRequired").description("List of Pattern's account assignments") + ) - )); - } catch (Exception e) { - e.printStackTrace(); - } + )); + } catch (Exception e) { + e.printStackTrace(); } + } } diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/PlannedPaymentsApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/PlannedPaymentsApiDocumentation.java index a3c3102..dee2c3a 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/PlannedPaymentsApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/PlannedPaymentsApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import com.google.gson.Gson; @@ -28,62 +46,62 @@ public class PlannedPaymentsApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-plannedpayments"); + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-plannedpayments"); - @Autowired - private WebApplicationContext context; + @Autowired + private WebApplicationContext context; - private MockMvc mockMvc; + private MockMvc mockMvc; - @Before - public void setUp() { + @Before + public void setUp() { - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } - @Test - public void documentGetPaymentScheduledForCase() throws Exception { - final Product product = createAndEnableProduct(); - final Case caseInstance = createCase(product.getIdentifier()); + @Test + public void documentGetPaymentScheduledForCase() throws Exception { + final Product product = createAndEnableProduct(); + final Case caseInstance = createCase(product.getIdentifier()); - this.mockMvc.perform(get("/individuallending/products/" + product.getIdentifier() + "/cases/" + caseInstance.getIdentifier() + "/plannedpayments") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-payment-scheduled-for-case", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("chargeNames").description("Charge names"), - fieldWithPath("elements").description("Payments"), - fieldWithPath("totalPages").description("Total number of pages "), - fieldWithPath("totalElements").description("Total elements found")))); + this.mockMvc.perform(get("/individuallending/products/" + product.getIdentifier() + "/cases/" + caseInstance.getIdentifier() + "/plannedpayments") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-payment-scheduled-for-case", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("chargeNames").description("Charge names"), + fieldWithPath("elements").description("Payments"), + fieldWithPath("totalPages").description("Total number of pages "), + fieldWithPath("totalElements").description("Total elements found")))); - } + } - @Test - public void documentGetPaymentScheduledForParameters() throws Exception { - final Product product = createAndEnableProduct(); - final Case caseInstance = createCase(product.getIdentifier()); + @Test + public void documentGetPaymentScheduledForParameters() throws Exception { + final Product product = createAndEnableProduct(); + final Case caseInstance = createCase(product.getIdentifier()); - Gson gson = new Gson(); - this.mockMvc.perform(post("/individuallending/products/" + product.getIdentifier() + "/plannedpayments") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(gson.toJson(caseInstance))) - .andExpect(status().isOk()) - .andDo(document("document-get-payment-scheduled-for-parameters", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Cases's identifier"), - fieldWithPath("productIdentifier").description("Products's identifier"), - fieldWithPath("interest").description("Cases's interest"), - fieldWithPath("parameters").description("cases's parameters"), - fieldWithPath("accountAssignments").description("Cases's account assignment"), - fieldWithPath("currentState").description("Cases's current state")))); + Gson gson = new Gson(); + this.mockMvc.perform(post("/individuallending/products/" + product.getIdentifier() + "/plannedpayments") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(gson.toJson(caseInstance))) + .andExpect(status().isOk()) + .andDo(document("document-get-payment-scheduled-for-parameters", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Cases's identifier"), + fieldWithPath("productIdentifier").description("Products's identifier"), + fieldWithPath("interest").description("Cases's interest"), + fieldWithPath("parameters").description("cases's parameters"), + fieldWithPath("accountAssignments").description("Cases's account assignment"), + fieldWithPath("currentState").description("Cases's current state")))); - } + } } diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/ProductsApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/ProductsApiDocumentation.java index 4675a03..e37237e 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/ProductsApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/ProductsApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import com.google.gson.Gson; @@ -27,210 +45,211 @@ public class ProductsApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-product"); - - @Autowired - private WebApplicationContext context; - - private MockMvc mockMvc; - - @Before - public void setUp() { - - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } - - @Test - public void documentCreateProduct() throws Exception { - final Product product = createAdjustedProduct(x -> {}); - product.setIdentifier("agro11"); - - Gson gson = new Gson(); - this.mockMvc.perform(post("/products/") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(gson.toJson(product))) - .andExpect(status().isAccepted()) - .andDo(document("document-create-product", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Product's identifier"), - fieldWithPath("name").description("Product's given name"), - fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + - " +\n" + - "_TermRange_ { +\n" + - " *enum* _Type_ { +\n" + - " temporalUnit, +\n" + - " maximum, +\n" + - " } +"), - fieldWithPath("balanceRange").description("Product's balance range"), - fieldWithPath("interestRange").description("Products interest Range"), - fieldWithPath("interestBasis").description("Products's interest basis"), - fieldWithPath("patternPackage").description("Product's pattern package"), - fieldWithPath("description").description("product description"), - fieldWithPath("currencyCode").description("Country currency code"), - fieldWithPath("minorCurrencyUnitDigits").description("Country minor currency unit"), - fieldWithPath("accountAssignments").description("Account Assignments"), - fieldWithPath("parameters").description("Product's parameters"), - fieldWithPath("enabled").description("Readability")))); - - } - - - @Test - public void documentGetProducts() throws Exception { - final Product product = createAdjustedProduct(x -> {}); - - this.eventRecorder.wait(EventConstants.POST_PRODUCT, product.getIdentifier()); - - try { - this.mockMvc.perform(get("/products?pageIndex=0&size=200") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-products", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("identifier").description("Product's identifier"), - fieldWithPath("name").description("Product's given name"), - fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + - " +\n" + - "_TermRange_ { +\n" + - " *enum* _Type_ { +\n" + - " temporalUnit, +\n" + - " maximum, +\n" + - " } +"), - fieldWithPath("balanceRange").description("Product's balance range"), - fieldWithPath("interestRange").description("Products interest Range"), - fieldWithPath("interestBasis").description("Products's interest basis"), - fieldWithPath("patternPackage").description("Product's pattern package"), - fieldWithPath("description").description("product description"), - fieldWithPath("currencyCode").description("Country currency code"), - fieldWithPath("minorCurrencyUnitDigits").description("Country minor currency unit"), - fieldWithPath("accountAssignments").description("Account Assignments"), - fieldWithPath("parameters").description("Product's parameters"), - fieldWithPath("enabled").description("Readability")))); + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-product"); + + @Autowired + private WebApplicationContext context; + + private MockMvc mockMvc; + + @Before + public void setUp() { + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void documentCreateProduct() throws Exception { + final Product product = createAdjustedProduct(x -> { + }); + product.setIdentifier("agro11"); + + Gson gson = new Gson(); + this.mockMvc.perform(post("/products/") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(gson.toJson(product))) + .andExpect(status().isAccepted()) + .andDo(document("document-create-product", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Product's identifier"), + fieldWithPath("name").description("Product's given name"), + fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + + " +\n" + + "_TermRange_ { +\n" + + " *enum* _Type_ { +\n" + + " temporalUnit, +\n" + + " maximum, +\n" + + " } +"), + fieldWithPath("balanceRange").description("Product's balance range"), + fieldWithPath("interestRange").description("Products interest Range"), + fieldWithPath("interestBasis").description("Products's interest basis"), + fieldWithPath("patternPackage").description("Product's pattern package"), + fieldWithPath("description").description("product description"), + fieldWithPath("currencyCode").description("Country currency code"), + fieldWithPath("minorCurrencyUnitDigits").description("Country minor currency unit"), + fieldWithPath("accountAssignments").description("Account Assignments"), + fieldWithPath("parameters").description("Product's parameters"), + fieldWithPath("enabled").description("Readability")))); + + } + + + @Test + public void documentGetProducts() throws Exception { + final Product product = createAdjustedProduct(x -> { + }); + + this.eventRecorder.wait(EventConstants.POST_PRODUCT, product.getIdentifier()); + + try { + this.mockMvc.perform(get("/products?pageIndex=0&size=200") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-products", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("identifier").description("Product's identifier"), + fieldWithPath("name").description("Product's given name"), + fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + + " +\n" + + "_TermRange_ { +\n" + + " *enum* _Type_ { +\n" + + " temporalUnit, +\n" + + " maximum, +\n" + + " } +"), + fieldWithPath("balanceRange").description("Product's balance range"), + fieldWithPath("interestRange").description("Products interest Range"), + fieldWithPath("interestBasis").description("Products's interest basis"), + fieldWithPath("patternPackage").description("Product's pattern package"), + fieldWithPath("description").description("product description"), + fieldWithPath("currencyCode").description("Country currency code"), + fieldWithPath("minorCurrencyUnitDigits").description("Country minor currency unit"), + fieldWithPath("accountAssignments").description("Account Assignments"), + fieldWithPath("parameters").description("Product's parameters"), + fieldWithPath("enabled").description("Readability")))); } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); } -} - - @Test - public void documentDeleteProducts() throws Exception { - - final Product product = createAdjustedProduct(x -> { - }); - - - this.mockMvc.perform(delete("/products/" + product.getIdentifier()) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .accept(MediaType.ALL_VALUE)) - .andExpect(status().isAccepted()) - .andDo(document("document-delete-products", preprocessResponse(prettyPrint()))); - - } - - @Test - public void documentGetProduct() throws Exception { - - final Product product = createAdjustedProduct(x -> { - }); - - this.mockMvc.perform(get("/products/" + product.getIdentifier()) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-product", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("identifier").description("Charge definition's identifier"), - fieldWithPath("name").description("Charge definitions given name"), - fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + - " +\n" + - "_TermRange_ { +\n" + - " *enum* _Type_ { +\n" + - " temporalUnit, +\n" + - " maximum, +\n" + - " } +"), - fieldWithPath("balanceRange").description("From account designator"), - fieldWithPath("interestRange").description("To account designator"), - fieldWithPath("interestBasis").description("Charge definition's amount"), - fieldWithPath("patternPackage").description("Charge definitions charge method"), - fieldWithPath("description").description("Charge definitions charge method"), - fieldWithPath("currencyCode").description("Charge definition's charge action"), - fieldWithPath("minorCurrencyUnitDigits").description("Employee's middle name"), - fieldWithPath("accountAssignments").description("Readability"), - fieldWithPath("parameters").description("Readability"), - fieldWithPath("enabled").description("Readability"), - fieldWithPath("createdOn").description("Readability"), - fieldWithPath("createdBy").description("Readability"), - fieldWithPath("lastModifiedOn").description("Readability"), - fieldWithPath("lastModifiedBy").description("Readability")))); - -} - - @Test - public void documentChangeProduct() throws Exception { - - final Product product = createAdjustedProduct(x -> {}); - product.setName("akawo"); - - Gson gson = new Gson(); - this.mockMvc.perform(put("/products/" + product.getIdentifier()) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) - .content(gson.toJson(product))) - .andExpect(status().isAccepted()) - .andDo(document( - "document-change-product", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").description("Charge definition's identifier"), - fieldWithPath("name").description("Charge definitions given name"), - fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + - " +\n" + - "_TermRange_ { +\n" + - " *enum* _Type_ { +\n" + - " temporalUnit, +\n" + - " maximum, +\n" + - " } +"), - fieldWithPath("balanceRange").description("From account designator"), - fieldWithPath("interestRange").description("To account designator"), - fieldWithPath("interestBasis").description("Charge definition's amount"), - fieldWithPath("patternPackage").description("Charge definitions charge method"), - fieldWithPath("description").description("Charge definitions charge method"), - fieldWithPath("currencyCode").description("Charge definition's charge action"), - fieldWithPath("minorCurrencyUnitDigits").description("Employee's middle name"), - fieldWithPath("accountAssignments").description("Readability"), - fieldWithPath("parameters").description("Readability"), - fieldWithPath("enabled").description("Readability")))); - - } - - @Test - public void documentGetIncompleteAccountAssignments () throws Exception { - - final Product product = createAdjustedProduct(x -> {}); - - this.mockMvc.perform(get("/products/" + product.getIdentifier()+"/incompleteaccountassignments") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-incomplete-account-assignments", preprocessRequest(prettyPrint()), - responseFields( - ))); - - } - - - + } + + @Test + public void documentDeleteProducts() throws Exception { + + final Product product = createAdjustedProduct(x -> { + }); + + + this.mockMvc.perform(delete("/products/" + product.getIdentifier()) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.ALL_VALUE)) + .andExpect(status().isAccepted()) + .andDo(document("document-delete-products", preprocessResponse(prettyPrint()))); + + } + + @Test + public void documentGetProduct() throws Exception { + + final Product product = createAdjustedProduct(x -> { + }); + + this.mockMvc.perform(get("/products/" + product.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-product", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("identifier").description("Charge definition's identifier"), + fieldWithPath("name").description("Charge definitions given name"), + fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + + " +\n" + + "_TermRange_ { +\n" + + " *enum* _Type_ { +\n" + + " temporalUnit, +\n" + + " maximum, +\n" + + " } +"), + fieldWithPath("balanceRange").description("From account designator"), + fieldWithPath("interestRange").description("To account designator"), + fieldWithPath("interestBasis").description("Charge definition's amount"), + fieldWithPath("patternPackage").description("Charge definitions charge method"), + fieldWithPath("description").description("Charge definitions charge method"), + fieldWithPath("currencyCode").description("Charge definition's charge action"), + fieldWithPath("minorCurrencyUnitDigits").description("Employee's middle name"), + fieldWithPath("accountAssignments").description("Readability"), + fieldWithPath("parameters").description("Readability"), + fieldWithPath("enabled").description("Readability"), + fieldWithPath("createdOn").description("Readability"), + fieldWithPath("createdBy").description("Readability"), + fieldWithPath("lastModifiedOn").description("Readability"), + fieldWithPath("lastModifiedBy").description("Readability")))); + + } + + @Test + public void documentChangeProduct() throws Exception { + + final Product product = createAdjustedProduct(x -> { + }); + product.setName("akawo"); + + Gson gson = new Gson(); + this.mockMvc.perform(put("/products/" + product.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) + .content(gson.toJson(product))) + .andExpect(status().isAccepted()) + .andDo(document( + "document-change-product", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").description("Charge definition's identifier"), + fieldWithPath("name").description("Charge definitions given name"), + fieldWithPath("termRange").type("List<TermRange>").description("The term range +\n" + + " +\n" + + "_TermRange_ { +\n" + + " *enum* _Type_ { +\n" + + " temporalUnit, +\n" + + " maximum, +\n" + + " } +"), + fieldWithPath("balanceRange").description("From account designator"), + fieldWithPath("interestRange").description("To account designator"), + fieldWithPath("interestBasis").description("Charge definition's amount"), + fieldWithPath("patternPackage").description("Charge definitions charge method"), + fieldWithPath("description").description("Charge definitions charge method"), + fieldWithPath("currencyCode").description("Charge definition's charge action"), + fieldWithPath("minorCurrencyUnitDigits").description("Employee's middle name"), + fieldWithPath("accountAssignments").description("Readability"), + fieldWithPath("parameters").description("Readability"), + fieldWithPath("enabled").description("Readability")))); + + } + + @Test + public void documentGetIncompleteAccountAssignments() throws Exception { + + final Product product = createAdjustedProduct(x -> { + }); + + this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/incompleteaccountassignments") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-incomplete-account-assignments", preprocessRequest(prettyPrint()), + responseFields( + ))); + + } } diff --git a/component-test/src/main/java/org/apache/fineract/cn/portfolio/TaskDefinitionApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/portfolio/TaskDefinitionApiDocumentation.java index ee2f358..a3d62ed 100644 --- a/component-test/src/main/java/org/apache/fineract/cn/portfolio/TaskDefinitionApiDocumentation.java +++ b/component-test/src/main/java/org/apache/fineract/cn/portfolio/TaskDefinitionApiDocumentation.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.fineract.cn.portfolio; import com.google.gson.Gson; @@ -27,140 +45,140 @@ public class TaskDefinitionApiDocumentation extends AbstractPortfolioTest { - @Rule - public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-taskdefinition"); - - @Autowired - private WebApplicationContext context; - - private MockMvc mockMvc; - - @Before - public void setUp ( ) { - - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) - .apply(documentationConfiguration(this.restDocumentation)) - .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) - .build(); - } - - @Test - public void documentListTaskDefinitions ( ) throws Exception { - final Product product = createProduct(); - - try { - this.mockMvc.perform(get("/products/" +product.getIdentifier()+"/tasks/") - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-list-task-definitions", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("identifier").type("String").description("task identifier's identifier"), - fieldWithPath("name").type("String").description("task identifier's name"), - fieldWithPath("description").type("String").description("task identifier's description"), - fieldWithPath("actions").description("The task definition action"), - fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), - fieldWithPath("mandatory").type("String").description("task identifier's identifier") - ) - )); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - - @Test - public void documentGetTaskDefinition ( ) throws Exception { - final Product product = createProduct(); - final TaskDefinition taskDefinition = createTaskDefinition(product); - - try { - this.mockMvc.perform(get("/products/" +product.getIdentifier()+"/tasks/" +taskDefinition.getIdentifier()) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) - .andExpect(status().isOk()) - .andDo(document( - "document-get-task-definition", preprocessRequest(prettyPrint()), - responseFields( - fieldWithPath("identifier").type("String").description("task identifier's identifier"), - fieldWithPath("name").type("String").description("task identifier's name"), - fieldWithPath("description").type("String").description("task identifier's description"), - fieldWithPath("actions").description("The task definition action"), - fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), - fieldWithPath("mandatory").type("String").description("task identifier's identifier") - ) - )); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - @Test - public void documentChangeTaskDefinition () throws Exception { - - final Product product = createProduct(); - final TaskDefinition taskDefinition = createTaskDefinition(product); - taskDefinition.setDescription("Describe task definition"); - taskDefinition.setFourEyes(false); - - Gson gson = new Gson(); - this.mockMvc.perform(put("/products/" + product.getIdentifier() + "/tasks/" +taskDefinition.getIdentifier() ) - .accept(MediaType.APPLICATION_JSON_VALUE) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) - .content(gson.toJson(taskDefinition))) - .andExpect(status().isAccepted()) - .andDo(document( - "document-change-task-definition", preprocessRequest(prettyPrint()), - requestFields( - fieldWithPath("identifier").type("String").description("task identifier's identifier"), - fieldWithPath("name").type("String").description("task identifier's name"), - fieldWithPath("description").type("String").description("task identifier's description"), - fieldWithPath("actions").description("The task definition action"), - fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), - fieldWithPath("mandatory").type("String").description("task identifier's identifier") - ) - - )); - + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-taskdefinition"); + + @Autowired + private WebApplicationContext context; + + private MockMvc mockMvc; + + @Before + public void setUp() { + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void documentListTaskDefinitions() throws Exception { + final Product product = createProduct(); + + try { + this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/tasks/") + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-list-task-definitions", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("identifier").type("String").description("task identifier's identifier"), + fieldWithPath("name").type("String").description("task identifier's name"), + fieldWithPath("description").type("String").description("task identifier's description"), + fieldWithPath("actions").description("The task definition action"), + fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), + fieldWithPath("mandatory").type("String").description("task identifier's identifier") + ) + )); + } catch (Exception e) { + e.printStackTrace(); } - @Test - public void documentAddTaskDefinition () throws Exception { - - final Product product = createProduct(); - final TaskDefinition taskDefinition = createTaskDefinition(product); - taskDefinition.setIdentifier("ask"); - - Gson gson = new Gson(); - this.mockMvc.perform(post("/products/"+product.getIdentifier()+"/tasks/") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(gson.toJson(taskDefinition))) - .andExpect(status().isAccepted()) - .andDo(document("document-add-task-definition", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), - requestFields( - fieldWithPath("identifier").type("String").description("task identifier's identifier"), - fieldWithPath("name").type("String").description("task identifier's name"), - fieldWithPath("description").type("String").description("task identifier's description"), - fieldWithPath("actions").description("The task definition action"), - fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), - fieldWithPath("mandatory").type("String").description("task identifier's identifier")))); + } + + + @Test + public void documentGetTaskDefinition() throws Exception { + final Product product = createProduct(); + final TaskDefinition taskDefinition = createTaskDefinition(product); + + try { + this.mockMvc.perform(get("/products/" + product.getIdentifier() + "/tasks/" + taskDefinition.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName())) + .andExpect(status().isOk()) + .andDo(document( + "document-get-task-definition", preprocessRequest(prettyPrint()), + responseFields( + fieldWithPath("identifier").type("String").description("task identifier's identifier"), + fieldWithPath("name").type("String").description("task identifier's name"), + fieldWithPath("description").type("String").description("task identifier's description"), + fieldWithPath("actions").description("The task definition action"), + fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), + fieldWithPath("mandatory").type("String").description("task identifier's identifier") + ) + )); + } catch (Exception e) { + e.printStackTrace(); } - @Test - public void documentDeleteTaskDefinition () throws Exception { - final Product product = createProduct(); - final TaskDefinition taskDefinition = createTaskDefinition(product); - - this.mockMvc.perform(delete("/products/"+product.getIdentifier()+"/tasks/" + taskDefinition.getIdentifier()) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .accept(MediaType.ALL_VALUE)) - .andExpect(status().isAccepted()) - .andDo(document("document-delete-task-definition", preprocessResponse(prettyPrint()))); - } + } + + @Test + public void documentChangeTaskDefinition() throws Exception { + + final Product product = createProduct(); + final TaskDefinition taskDefinition = createTaskDefinition(product); + taskDefinition.setDescription("Describe task definition"); + taskDefinition.setFourEyes(false); + + Gson gson = new Gson(); + this.mockMvc.perform(put("/products/" + product.getIdentifier() + "/tasks/" + taskDefinition.getIdentifier()) + .accept(MediaType.APPLICATION_JSON_VALUE) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header(TENANT_HEADER, tenantDataStoreContext.getTenantName()) + .content(gson.toJson(taskDefinition))) + .andExpect(status().isAccepted()) + .andDo(document( + "document-change-task-definition", preprocessRequest(prettyPrint()), + requestFields( + fieldWithPath("identifier").type("String").description("task identifier's identifier"), + fieldWithPath("name").type("String").description("task identifier's name"), + fieldWithPath("description").type("String").description("task identifier's description"), + fieldWithPath("actions").description("The task definition action"), + fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), + fieldWithPath("mandatory").type("String").description("task identifier's identifier") + ) + + )); + + } + + @Test + public void documentAddTaskDefinition() throws Exception { + + final Product product = createProduct(); + final TaskDefinition taskDefinition = createTaskDefinition(product); + taskDefinition.setIdentifier("ask"); + + Gson gson = new Gson(); + this.mockMvc.perform(post("/products/" + product.getIdentifier() + "/tasks/") + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(gson.toJson(taskDefinition))) + .andExpect(status().isAccepted()) + .andDo(document("document-add-task-definition", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("identifier").type("String").description("task identifier's identifier"), + fieldWithPath("name").type("String").description("task identifier's name"), + fieldWithPath("description").type("String").description("task identifier's description"), + fieldWithPath("actions").description("The task definition action"), + fieldWithPath("fourEyes").type("String").description("task identifier's identifier"), + fieldWithPath("mandatory").type("String").description("task identifier's identifier")))); + } + + @Test + public void documentDeleteTaskDefinition() throws Exception { + final Product product = createProduct(); + final TaskDefinition taskDefinition = createTaskDefinition(product); + + this.mockMvc.perform(delete("/products/" + product.getIdentifier() + "/tasks/" + taskDefinition.getIdentifier()) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.ALL_VALUE)) + .andExpect(status().isAccepted()) + .andDo(document("document-delete-task-definition", preprocessResponse(prettyPrint()))); + } } ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services