fineract-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From my...@apache.org
Subject [fineract-cn-customer] 17/46: renamed customer endpoit to customers fixed taks execution
Date Mon, 22 Jan 2018 15:47:18 GMT
This is an automated email from the ASF dual-hosted git repository.

myrle pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-customer.git

commit 5d94ca2d07324881eea0f6fc44f7c1339c6e15d7
Author: mgeiss <mgeiss@mifos.org>
AuthorDate: Fri Sep 8 09:34:34 2017 +0200

    renamed customer endpoit to customers
    fixed taks execution
---
 .../customer/api/v1/client/CustomerManager.java    |  6 +-
 .../java/io/mifos/customer/TestTaskInstance.java   | 73 +++++++++++++++++++++-
 .../internal/command/handler/TaskAggregate.java    |  5 +-
 .../rest/controller/CustomerRestController.java    |  6 +-
 4 files changed, 80 insertions(+), 10 deletions(-)

diff --git a/api/src/main/java/io/mifos/customer/api/v1/client/CustomerManager.java b/api/src/main/java/io/mifos/customer/api/v1/client/CustomerManager.java
index 67ef6c0..024dd2c 100644
--- a/api/src/main/java/io/mifos/customer/api/v1/client/CustomerManager.java
+++ b/api/src/main/java/io/mifos/customer/api/v1/client/CustomerManager.java
@@ -386,7 +386,7 @@ public interface CustomerManager {
   void updateTask(@PathVariable("identifier") final String identifier, @RequestBody final
TaskDefinition taskDefinition);
 
   @RequestMapping(
-      value = "/customer/{identifier}/actions",
+      value = "/customers/{identifier}/actions",
       method = RequestMethod.GET,
       produces = MediaType.ALL_VALUE,
       consumes = MediaType.APPLICATION_JSON_VALUE
@@ -395,7 +395,7 @@ public interface CustomerManager {
   List<ProcessStep> fetchProcessSteps(@PathVariable(value = "identifier") final String
customerIdentifier);
 
   @RequestMapping(
-      value = "/customer/{identifier}/payroll",
+      value = "/customers/{identifier}/payroll",
       method = RequestMethod.PUT,
       produces = MediaType.APPLICATION_JSON_VALUE,
       consumes = MediaType.APPLICATION_JSON_VALUE
@@ -408,7 +408,7 @@ public interface CustomerManager {
                               @RequestBody @Valid final PayrollDistribution payrollDistribution);
 
   @RequestMapping(
-      value = "/customer/{identifier}/payroll",
+      value = "/customers/{identifier}/payroll",
       method = RequestMethod.GET,
       produces = MediaType.ALL_VALUE,
       consumes = MediaType.APPLICATION_JSON_VALUE
diff --git a/component-test/src/main/java/io/mifos/customer/TestTaskInstance.java b/component-test/src/main/java/io/mifos/customer/TestTaskInstance.java
index a35fa97..7ff792c 100644
--- a/component-test/src/main/java/io/mifos/customer/TestTaskInstance.java
+++ b/component-test/src/main/java/io/mifos/customer/TestTaskInstance.java
@@ -19,6 +19,7 @@ import io.mifos.customer.api.v1.CustomerEventConstants;
 import io.mifos.customer.api.v1.client.TaskExecutionException;
 import io.mifos.customer.api.v1.domain.Command;
 import io.mifos.customer.api.v1.domain.Customer;
+import io.mifos.customer.api.v1.domain.IdentificationCard;
 import io.mifos.customer.api.v1.domain.TaskDefinition;
 import io.mifos.customer.util.CustomerGenerator;
 import io.mifos.customer.util.IdentificationCardGenerator;
@@ -72,8 +73,9 @@ public class TestTaskInstance extends AbstractCustomerTest {
     }
 
     // set the ID card for the customer
-    this.customerManager.createIdentificationCard(randomCustomer.getIdentifier(), IdentificationCardGenerator.createRandomIdentificationCard());
-    this.eventRecorder.wait(CustomerEventConstants.POST_IDENTIFICATION_CARD, randomCustomer.getIdentifier());
+    final IdentificationCard randomIdentificationCard = IdentificationCardGenerator.createRandomIdentificationCard();
+    this.customerManager.createIdentificationCard(randomCustomer.getIdentifier(), randomIdentificationCard);
+    this.eventRecorder.wait(CustomerEventConstants.POST_IDENTIFICATION_CARD, randomIdentificationCard.getNumber());
 
     // close the task
     this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), taskDefinition.getIdentifier());
@@ -120,4 +122,71 @@ public class TestTaskInstance extends AbstractCustomerTest {
     Assert.assertEquals(1, tasksForCustomer.size());
   }
 
+  @Test
+  public void shouldUnlockCustomerMultipleTasks() throws Exception{
+    final TaskDefinition customTask1 = new TaskDefinition();
+    customTask1.setIdentifier("custom-task-1");
+    customTask1.setType(TaskDefinition.Type.CUSTOM.name());
+    customTask1.setName("Do the barrel roll");
+    customTask1.setCommands(
+        TaskDefinition.Command.ACTIVATE.name(),
+        TaskDefinition.Command.UNLOCK.name()
+    );
+    customTask1.setPredefined(Boolean.TRUE);
+    customTask1.setMandatory(Boolean.TRUE);
+
+    this.customerManager.createTask(customTask1);
+    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, customTask1.getIdentifier());
+
+    final TaskDefinition customTask2 = new TaskDefinition();
+    customTask2.setIdentifier("custom-task-2");
+    customTask2.setType(TaskDefinition.Type.CUSTOM.name());
+    customTask2.setName("Do the barrel roll");
+    customTask2.setCommands(
+        TaskDefinition.Command.ACTIVATE.name(),
+        TaskDefinition.Command.UNLOCK.name()
+    );
+    customTask2.setPredefined(Boolean.TRUE);
+    customTask2.setMandatory(Boolean.TRUE);
+
+    this.customerManager.createTask(customTask2);
+    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, customTask2.getIdentifier());
+
+    // create a random customer
+    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
+    this.customerManager.createCustomer(randomCustomer);
+    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
+
+    // close the task
+    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask1.getIdentifier());
+    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
+
+    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask2.getIdentifier());
+    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
+
+    final Command activateCustomer = new Command();
+    activateCustomer.setAction(Command.Action.ACTIVATE.name());
+    this.customerManager.customerCommand(randomCustomer.getIdentifier(), activateCustomer);
+    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, randomCustomer.getIdentifier()));
+
+    final Command lockCustomer = new Command();
+    lockCustomer.setAction(Command.Action.LOCK.name());
+    this.customerManager.customerCommand(randomCustomer.getIdentifier(), lockCustomer);
+    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.LOCK_CUSTOMER, randomCustomer.getIdentifier()));
+
+    // close the task
+    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask1.getIdentifier());
+    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
+
+    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask2.getIdentifier());
+    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
+
+    final Command unlockCustomer = new Command();
+    unlockCustomer.setAction(Command.Action.UNLOCK.name());
+    this.customerManager.customerCommand(randomCustomer.getIdentifier(), unlockCustomer);
+    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.UNLOCK_CUSTOMER, randomCustomer.getIdentifier()));
+
+    final Customer customer = this.customerManager.findCustomer(randomCustomer.getIdentifier());
+    Assert.assertEquals(Customer.State.ACTIVE.name(), customer.getCurrentState());
+  }
 }
diff --git a/service/src/main/java/io/mifos/customer/service/internal/command/handler/TaskAggregate.java
b/service/src/main/java/io/mifos/customer/service/internal/command/handler/TaskAggregate.java
index 65a03d5..5e1bac6 100644
--- a/service/src/main/java/io/mifos/customer/service/internal/command/handler/TaskAggregate.java
+++ b/service/src/main/java/io/mifos/customer/service/internal/command/handler/TaskAggregate.java
@@ -114,8 +114,9 @@ public class TaskAggregate {
       final Optional<TaskInstanceEntity> taskInstanceEntityOptional = taskInstanceEntities
           .stream()
           .filter(
-              taskInstanceEntity -> taskInstanceEntity.getTaskDefinition().getIdentifier()
-                  .equals(executeTaskForCustomerCommand.taskIdentifier()))
+              taskInstanceEntity -> taskInstanceEntity.getTaskDefinition().getIdentifier().equals(executeTaskForCustomerCommand.taskIdentifier())
+                  && taskInstanceEntity.getExecutedBy() == null
+          )
           .findAny();
 
       if (taskInstanceEntityOptional.isPresent()) {
diff --git a/service/src/main/java/io/mifos/customer/service/rest/controller/CustomerRestController.java
b/service/src/main/java/io/mifos/customer/service/rest/controller/CustomerRestController.java
index 401f1d9..d7ad048 100644
--- a/service/src/main/java/io/mifos/customer/service/rest/controller/CustomerRestController.java
+++ b/service/src/main/java/io/mifos/customer/service/rest/controller/CustomerRestController.java
@@ -734,7 +734,7 @@ public class CustomerRestController {
 
   @Permittable(value = AcceptedTokenType.TENANT, groupId = PermittableGroupIds.CUSTOMER)
   @RequestMapping(
-      value = "/customer/{identifier}/actions",
+      value = "/customers/{identifier}/actions",
       method = RequestMethod.GET,
       produces = MediaType.APPLICATION_JSON_VALUE,
       consumes = MediaType.ALL_VALUE
@@ -748,7 +748,7 @@ public class CustomerRestController {
 
   @Permittable(value = AcceptedTokenType.TENANT, groupId = PermittableGroupIds.CUSTOMER)
   @RequestMapping(
-      value = "customer/{identifier}/payroll",
+      value = "/customers/{identifier}/payroll",
       method = RequestMethod.PUT,
       produces = MediaType.APPLICATION_JSON_VALUE,
       consumes = MediaType.APPLICATION_JSON_VALUE
@@ -764,7 +764,7 @@ public class CustomerRestController {
 
   @Permittable(value = AcceptedTokenType.TENANT, groupId = PermittableGroupIds.CUSTOMER)
   @RequestMapping(
-      value = "customer/{identifier}/payroll",
+      value = "/customers/{identifier}/payroll",
       method = RequestMethod.GET,
       produces = MediaType.APPLICATION_JSON_VALUE,
       consumes = MediaType.ALL_VALUE

-- 
To stop receiving notification emails like this one, please contact
myrle@apache.org.

Mime
View raw message