-
Notifications
You must be signed in to change notification settings - Fork 58
/
VacationRequestProcessTest.cs
72 lines (61 loc) · 2.86 KB
/
VacationRequestProcessTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using CamundaClient;
using NUnit.Framework;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using CamundaClient.Dto;
namespace Urlaubsantrag
{
[TestFixture]
class CalculationProcessTest
{
[Test]
public void TestHappyPath()
{
// Engine client should point to a dedicated Camunda instance for test, preferrably locally available
var camunda = new CamundaEngineClient(new System.Uri("http://localhost:8080/engine-rest/engine/default/"), null, null);
// Deploy the process under test
string deploymentId = camunda.RepositoryService.Deploy("testcase", new List<object> {
FileParameter.FromManifestResource(Assembly.GetExecutingAssembly(), "Urlaubsantrag.Models.Urlaubsantrag.bpmn") });
try
{
string processInstanceId = camunda.BpmnWorkflowService.StartProcessInstance("Urlaubsantrag", new Dictionary<string, object>()
{
{"name", "Bernd Rücker" },
{"vacationStartDate", 10 },
{"duration", 5 }
});
var tasks = camunda.HumanTaskService.LoadTasks(new Dictionary<string, string>() {
{ "processInstanceId", processInstanceId }
});
Assert.AreEqual(1, tasks.Count);
Assert.AreEqual("UserTask_UrlaubGenehmigen", tasks.First().TaskDefinitionKey);
camunda.HumanTaskService.Complete(tasks.First().Id, new Dictionary<string, object>()
{
{"approved", true }
});
var externalTasks = camunda.ExternalTaskService.FetchAndLockTasks(
"worker1",
100,
"leaveAccount",
1000,
new List<string>() { "name" });
// Do the real service logic / calls
camunda.ExternalTaskService.Complete("worker1", externalTasks.First().Id, new Dictionary<string, object>() {
{ "someResult", 42 }
});
// TODO: Simulate timer
//externalTasks = camunda.ExternalTaskService.FetchAndLockTasks("testcase", 100, "informColleagues", 1000, new List<string>());
//Assert.AreEqual(1, externalTasks.Count);
//Assert.AreEqual("ServiceTask_KollegenInformieren", externalTasks.First().ActivityId);
//camunda.ExternalTaskService.Complete("testcase", externalTasks.First().Id, new Dictionary<string, object>());
// not the process instance has ended, TODO: Check state with History
}
finally
{
// cleanup after test case
camunda.RepositoryService.DeleteDeployment(deploymentId);
}
}
}
}