Advertisement
Guest User

ScenarioTests

a guest
Jan 22nd, 2020
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.44 KB | None | 0 0
  1. package com.camunda.training;
  2.  
  3. import static org.assertj.core.api.Assertions.*;
  4. import static org.assertj.core.api.Assertions.assertThat;
  5. import static org.camunda.bpm.engine.test.assertions.bpmn.AbstractAssertions.*;
  6. import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.*;
  7. import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.assertThat;
  8. import static org.mockito.ArgumentMatchers.*;
  9. import static org.mockito.Mockito.*;
  10.  
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. import org.camunda.bpm.dmn.engine.DmnDecisionTableResult;
  16. import org.camunda.bpm.engine.ProcessEngine;
  17. import org.camunda.bpm.engine.runtime.Job;
  18. import org.camunda.bpm.engine.runtime.ProcessInstance;
  19. import org.camunda.bpm.engine.task.Task;
  20. import org.camunda.bpm.engine.test.Deployment;
  21. import org.camunda.bpm.engine.test.ProcessEngineRule;
  22. import org.camunda.bpm.engine.test.mock.Mocks;
  23. import org.camunda.bpm.engine.variable.Variables;
  24. import org.camunda.bpm.extension.process_test_coverage.junit.rules.TestCoverageProcessEngineRuleBuilder;
  25. import org.camunda.bpm.scenario.ProcessScenario;
  26. import org.camunda.bpm.scenario.Scenario;
  27. import org.junit.Before;
  28. import org.junit.ClassRule;
  29. import org.junit.Rule;
  30. import org.junit.Test;
  31. import org.mockito.Mock;
  32. import org.mockito.Mockito;
  33. import org.mockito.MockitoAnnotations;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35.  
  36. import twitter4j.TwitterException;
  37.  
  38. public class ProcessJUnitTest {
  39.    
  40.     @Autowired
  41.     ProcessEngine processEngine;
  42.    
  43.     @Mock
  44.     ProcessScenario twitterScenario;
  45.    
  46.     @Mock
  47.     TweetService tweetService;
  48.    
  49.     @Rule @ClassRule
  50.     public static ProcessEngineRule rule = TestCoverageProcessEngineRuleBuilder.create().build();
  51.    
  52.     @Before
  53.     public void setup() {
  54.         init(rule.getProcessEngine());
  55.         MockitoAnnotations.initMocks(this);
  56.         Mocks.register("createTweetDelegate", new CreateTweetDelegate(tweetService));
  57.     }
  58.  
  59.   @Test
  60.   @Deployment(resources = {"tweetApproval.dmn", "exercise_1.bpmn"})
  61.   public void testHappyPath() throws TwitterException {
  62.        
  63.         Mockito.when(tweetService.tweet(anyString())).thenReturn(101l);
  64.         ProcessInstance processInstance = runtimeService().startProcessInstanceByKey("TwitterQAProcess", withVariables("content", "this is a test", "email","norman.luering@camunda.com"));
  65.         assertThat(processInstance).isActive();
  66. //      List<HistoricTaskInstance> histTasks = historyService().createHistoricTaskInstanceQuery().taskDefinitionKey("ReviewTweetTask").list();
  67. //      HistoricTaskInstance histInstance = histTasks.get(0);
  68. //      assertEquals(processInstance.getId(), histInstance.getProcessInstanceId());
  69.         execute(job());
  70.         assertThat(processInstance).isEnded();
  71.   }
  72.  
  73.   @Test
  74.   @Deployment(resources = "exercise_1.bpmn")
  75.   public void testRejectedPath() {
  76.      
  77.       Map<String, Object> variables = new HashMap<String, Object>();
  78.       variables.put("approved", false);
  79.       ProcessInstance processInstance = runtimeService().
  80.               createProcessInstanceByKey("TwitterQAProcess")
  81.               .setVariablesLocal(variables)
  82.               .startAfterActivity("ReviewTweetTask")
  83.               .execute();
  84.      
  85.       assertThat(processInstance)
  86.          .isWaitingAt("DeleteTweetTask")
  87.          .externalTask()
  88.          .hasTopicName("deleted");
  89.       complete(externalTask());
  90.       assertThat(processInstance).isEnded().hasPassed("TweetRejectedEndEvent");
  91.      
  92.   }
  93.  
  94.   @Test
  95.   @Deployment(resources = {"tweetApproval.dmn", "exercise_1.bpmn"})
  96.   public void testSuperUserTweet() {
  97.         try {
  98.             Mockito.when(tweetService.tweet(anyString())).thenReturn(101l);
  99.         } catch (TwitterException e) {
  100.             // TODO Auto-generated catch block
  101.             e.printStackTrace();
  102.         }
  103.         ProcessInstance processInstance = runtimeService()
  104.                 .createMessageCorrelation("superuserTweet")
  105.                 .setVariable("content", "Secret Guys' Exercise 11 Tweet - " + System.currentTimeMillis())
  106.                 .correlateWithResult()
  107.                 .getProcessInstance();
  108.        
  109.         assertThat(processInstance).isStarted();
  110.        
  111.         List<Job> jobList = jobQuery().processInstanceId(processInstance.getId()).list();
  112.         assertThat(jobList).hasSize(1);
  113.         Job job = jobList.get(0);
  114.        
  115.         execute(job);
  116.         assertThat(processInstance).isEnded();
  117.   }
  118.  
  119.  // @Test
  120.   @Deployment(resources = "exercise_1.bpmn")
  121.   public void testTweetWithdrawn() {
  122.     Map<String, Object> varMap = new HashMap<>();
  123.     varMap.put("content", "Test tweetWithdrawn message");
  124.    
  125.     ProcessInstance processInstance = runtimeService()
  126.         .startProcessInstanceByKey("TwitterQAProcess", varMap);
  127.    
  128.     assertThat(processInstance).isStarted().isWaitingAt("ReviewTweetTask");
  129.    
  130.     runtimeService()
  131.        .createMessageCorrelation("tweetWithdrawn")
  132.        .processInstanceVariableEquals("content", "Test tweetWithdrawn message")
  133.        .correlateWithResult();
  134.    
  135.     assertThat(processInstance).isEnded();
  136.   }
  137.  
  138.   @Test
  139.   @Deployment(resources = {"tweetApproval.dmn", "exercise_1.bpmn"})
  140.   public void testTweetsFromNorman() {
  141.      
  142.       Map<String, Object> variables = withVariables("email", "norman.luering@camunda.com", "content", "publish");
  143.       DmnDecisionTableResult decisionResult = decisionService().evaluateDecisionTableByKey("tweetApproval", variables);
  144.       assertThat(decisionResult.getFirstResult()).contains(entry("approved", true));
  145.   }
  146.  
  147.   //Modelling of Happy Path here. Overwrite Scenarios
  148.   @Before
  149.   public void setupDefaultScenario() {
  150.       init(processEngine);
  151.   }
  152.  
  153.   @Test
  154.   @Deployment(resources = {"tweetApproval.dmn", "exercise_1.bpmn"})
  155.   public void testHappyPathWithScenario() {
  156.      
  157.       when(twitterScenario.waitsAtServiceTask("PublishTweetTask"))
  158.         .thenReturn(task -> task.complete());
  159.      
  160.       Scenario.run(twitterScenario).startByKey("TwitterQAProcess", withVariables("email","norman.luering@camunda.com","content","test")).execute();
  161.       verify(twitterScenario).hasFinished("TweetPublishedEndEvent");
  162.   }
  163.  
  164.   @Test
  165.   @Deployment(resources = {"tweetApproval.dmn", "exercise_1.bpmn"})
  166.   public void testRejectedPathWithScenario() {
  167.      
  168.      
  169.       when(twitterScenario.waitsAtServiceTask("DeleteTweetTask")).thenReturn((externalTask) -> {
  170.             assertThat(externalTask().getTopicName()).isEqualTo("deleted");
  171.             externalTask.complete();
  172.         });
  173.      
  174.       Scenario.run(twitterScenario).startByKey("TwitterQAProcess", withVariables("email","cannot.tweet@camunda.com","content","test")).execute();
  175.       verify(twitterScenario).hasFinished("TweetRejectedEndEvent");
  176.   }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement