| /* |
| * 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.customer; |
| |
| import org.apache.commons.lang3.RandomStringUtils; |
| import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants; |
| import org.apache.fineract.cn.customer.api.v1.client.TaskAlreadyExistsException; |
| import org.apache.fineract.cn.customer.api.v1.client.TaskNotFoundException; |
| import org.apache.fineract.cn.customer.api.v1.domain.TaskDefinition; |
| import org.apache.fineract.cn.customer.util.TaskGenerator; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| |
| public class TestTaskDefinition extends AbstractCustomerTest { |
| |
| @Test |
| public void shouldCreateTask() throws Exception { |
| final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE); |
| this.customerManager.createTask(taskDefinition); |
| |
| this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier()); |
| |
| final TaskDefinition savedTaskDefinition = this.customerManager.findTask(taskDefinition.getIdentifier()); |
| Assert.assertNotNull(savedTaskDefinition); |
| Assert.assertEquals(taskDefinition.getIdentifier(), savedTaskDefinition.getIdentifier()); |
| Assert.assertEquals(taskDefinition.getType(), savedTaskDefinition.getType()); |
| Assert.assertEquals(taskDefinition.getName(), savedTaskDefinition.getName()); |
| Assert.assertEquals(taskDefinition.getDescription(), savedTaskDefinition.getDescription()); |
| Assert.assertEquals(taskDefinition.getMandatory(), savedTaskDefinition.getMandatory()); |
| Assert.assertEquals(taskDefinition.getPredefined(), savedTaskDefinition.getPredefined()); |
| Assert.assertArrayEquals(taskDefinition.getCommands(), savedTaskDefinition.getCommands()); |
| } |
| |
| @Test |
| public void shouldNotCreateTaskAlreadyExists() throws Exception { |
| final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE); |
| this.customerManager.createTask(taskDefinition); |
| |
| this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier()); |
| |
| try { |
| this.customerManager.createTask(taskDefinition); |
| Assert.fail(); |
| } catch (final TaskAlreadyExistsException ex) { |
| // do nothing, expected |
| } |
| } |
| |
| @Test |
| public void shouldFindTask() throws Exception { |
| final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE); |
| this.customerManager.createTask(taskDefinition); |
| |
| this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier()); |
| |
| final TaskDefinition savedTaskDefinition = this.customerManager.findTask(taskDefinition.getIdentifier()); |
| Assert.assertNotNull(savedTaskDefinition); |
| } |
| |
| @Test |
| public void shouldNotFindTaskNotFound() throws Exception { |
| try { |
| this.customerManager.findTask(RandomStringUtils.randomAlphanumeric(8)); |
| Assert.fail(); |
| } catch (TaskNotFoundException ex) { |
| // do nothing, expected |
| } |
| } |
| |
| @Test |
| public void shouldFetchAllTasks() throws Exception { |
| Arrays.asList( |
| TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE), |
| TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE), |
| TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE) |
| ).forEach(taskDefinition -> { |
| this.customerManager.createTask(taskDefinition); |
| try { |
| this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier()); |
| } catch (final InterruptedException ex) { |
| Assert.fail(); |
| } |
| }); |
| |
| final List<TaskDefinition> taskDefinitions = this.customerManager.fetchAllTasks(); |
| Assert.assertTrue(taskDefinitions.size() >= 3); |
| } |
| |
| @Test |
| public void shouldUpdateTask() throws Exception { |
| final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE); |
| this.customerManager.createTask(taskDefinition); |
| |
| this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier()); |
| |
| final TaskDefinition updatedTaskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.TRUE, Boolean.TRUE); |
| updatedTaskDefinition.setIdentifier(taskDefinition.getIdentifier()); |
| updatedTaskDefinition.setCommands(TaskDefinition.Command.REOPEN.name()); |
| |
| this.customerManager.updateTask(updatedTaskDefinition.getIdentifier(), updatedTaskDefinition); |
| |
| this.eventRecorder.wait(CustomerEventConstants.PUT_TASK, taskDefinition.getIdentifier()); |
| |
| final TaskDefinition fetchedTaskDefinition = this.customerManager.findTask(updatedTaskDefinition.getIdentifier()); |
| Assert.assertNotNull(fetchedTaskDefinition); |
| Assert.assertEquals(updatedTaskDefinition.getIdentifier(), fetchedTaskDefinition.getIdentifier()); |
| Assert.assertEquals(updatedTaskDefinition.getType(), fetchedTaskDefinition.getType()); |
| Assert.assertEquals(updatedTaskDefinition.getName(), fetchedTaskDefinition.getName()); |
| Assert.assertEquals(updatedTaskDefinition.getDescription(), fetchedTaskDefinition.getDescription()); |
| Assert.assertEquals(updatedTaskDefinition.getMandatory(), fetchedTaskDefinition.getMandatory()); |
| Assert.assertEquals(updatedTaskDefinition.getPredefined(), fetchedTaskDefinition.getPredefined()); |
| Assert.assertArrayEquals(updatedTaskDefinition.getCommands(), fetchedTaskDefinition.getCommands()); |
| } |
| } |