public void CancelDelegationTest() { WfDelegation delegation = PrepareDelegation(); WfDelegationAdapter.Instance.Update(delegation); try { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); process.CancelProcess(false); //取消 WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(2, ProcessTestHelper.GetActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Yue).Count, "应该产生两条待阅"); } finally { WfDelegationAdapter.Instance.Delete(delegation); //清理委托 } }
public void PersistProcessWithTenantCode() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); TenantContext.Current.TenantCode = "1001"; ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单的带TenantCode的流程"); }
public void MovetoDelegationTest() { WfDelegation delegation = PrepareDelegation(); WfDelegationAdapter.Instance.Update(delegation); //添加委托 try { //创建流程 IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); process.MoveTo(tp); //流转 WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue((ProcessTestHelper.GetActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban).Count) >= 2, "至少有两个待办事项。或许其它人也会去为当前人指定相应的委托人"); } finally { WfDelegationAdapter.Instance.Delete(delegation); //清理委托 } }
public async Task Kvit_Push_ShouldCreate_Keys_and_Folders_on_Consul(bool runWithBaseDir) { // Arrange await ConsulTestHelper.DeleteAllKeys(); var baseDir = ProcessTestHelper.CreateRandomBaseDir(); FileTestHelper.WriteAllText(Path.Combine(baseDir, "file0"), "555"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "folder1", "file1"), "true"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "folder1", "file2"), @"{""myNameIsFile2"": ""yes""}"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "folder1", "folder1.1", "file3"), @"{""iaminasubfolder"": ""absolutely""}"); // Act var(stdout, stderr, exitCode) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "push"); // Assert stdout.ShouldContain("key(s) pushed"); stderr.ShouldBeEmpty(); exitCode.ShouldBe(0); // Assert keys var file0Content = await ConsulTestHelper.GetValueFromConsulAsync("file0"); var file1Content = await ConsulTestHelper.GetValueFromConsulAsync("folder1/file1"); var file2Content = await ConsulTestHelper.GetValueFromConsulAsync("folder1/file2"); var file3Content = await ConsulTestHelper.GetValueFromConsulAsync("folder1/folder1.1/file3"); file0Content.ShouldBe("555"); file1Content.ShouldBe("true"); file2Content.ShouldBe(@"{""myNameIsFile2"": ""yes""}"); file3Content.ShouldBe(@"{""iaminasubfolder"": ""absolutely""}"); }
public void SimpleProcessPersistTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); //process.DefaultTaskTitle = "测试保存的流程"; ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单流程"); try { IWfProcess loadedProcess = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(process.ID, loadedProcess.ID); Assert.AreEqual(process.Status, loadedProcess.Status); Assert.AreEqual(DataLoadingType.External, loadedProcess.LoadingType); WfTransferParams transferParams = new WfTransferParams(process.Descriptor.CompletedActivity); transferParams.Assignees.Add(new WfAssignee((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object)); transferParams.Assignees.Add(new WfAssignee((IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object)); loadedProcess.MoveTo(transferParams); WfRuntime.PersistWorkflows(); Assert.AreEqual(process.ID, loadedProcess.ID); Assert.AreEqual(WfProcessStatus.Completed, loadedProcess.Status); Assert.AreEqual(DataLoadingType.External, loadedProcess.LoadingType); } finally { //WfRuntime.DeleteProcessByProcessID(process.ID); } }
public void FetchPersistQueueTest() { WfPersistQueueAdapter.Instance.ClearQueue(); WfPersistQueueAdapter.Instance.ClearArchivedQueue(); IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单流程"); Assert.AreEqual(0, WfProcessCurrentAssigneeAdapter.Instance.Load(process.ID).Count); Assert.AreEqual(0, WfProcessRelativeParamsAdapter.Instance.Load(process.ID).Count); Assert.IsNull(WfProcessDimensionAdapter.Instance.Load(process.ID)); Console.WriteLine(process.ID); WfPersistQueue pq = WfPersistQueueAdapter.Instance.FetchQueueItemsAndDoOperation(1).FirstOrDefault(); Assert.IsTrue(WfProcessCurrentAssigneeAdapter.Instance.Load(pq.ProcessID).Count > 0); Assert.AreEqual(process.RelativeParams.Count, WfProcessRelativeParamsAdapter.Instance.Load(pq.ProcessID).Count); Assert.IsNull(WfPersistQueueAdapter.Instance.Load(pq.ProcessID)); WfPersistQueue pqArchieved = WfPersistQueueAdapter.Instance.LoadArchived(pq.ProcessID); Assert.IsNotNull(pqArchieved); Assert.AreEqual(pq.UpdateTag, pqArchieved.UpdateTag); WfProcessDimension pd = WfProcessDimensionAdapter.Instance.Load(pq.ProcessID); Assert.IsNotNull(pd); Console.WriteLine(pd.Data); }
public void NoticeOfLeaveActivity() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfUserResourceDescriptor userResDesp = GetUserResDespInstance(); nextActivityDesp.LeaveEventReceivers.Add(userResDesp); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver2); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); process.MoveTo(new WfTransferParams(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity)); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); string actKey = process.CurrentActivity.Descriptor.FromTransitions[0].FromActivity.Key; Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(userResDesp.User.ID, process.Activities[1].ID, TaskStatus.Yue)); }
public void PersistQueueBasicTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单流程"); WfPersistQueue pq = WfPersistQueue.FromProcess(process); Console.WriteLine(pq.ProcessID); Assert.AreEqual(0, WfProcessCurrentAssigneeAdapter.Instance.Load(pq.ProcessID).Count); Assert.AreEqual(0, WfProcessRelativeParamsAdapter.Instance.Load(pq.ProcessID).Count); Assert.IsNull(WfProcessDimensionAdapter.Instance.Load(pq.ProcessID)); WfPersistQueueAdapter.Instance.DoQueueOperation(pq); Assert.IsTrue(WfProcessCurrentAssigneeAdapter.Instance.Load(pq.ProcessID).Count > 0); Assert.AreEqual(process.RelativeParams.Count, WfProcessRelativeParamsAdapter.Instance.Load(pq.ProcessID).Count); WfProcessDimension pd = WfProcessDimensionAdapter.Instance.Load(pq.ProcessID); Assert.IsNotNull(pd); Console.WriteLine(pd.Data); }
public void BranchProcessPersistTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); process.MoveTo(tp); Assert.AreEqual(1, process.CurrentActivity.BranchProcessGroups.Count); IWfBranchProcessGroup group = process.CurrentActivity.BranchProcessGroups[0]; AssertBranchProcessesInfo(group, tp.BranchTransferParams[0].Template.BranchProcessKey); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); group = process.CurrentActivity.BranchProcessGroups[0]; AssertBranchProcessesInfo(group, tp.BranchTransferParams[0].Template.BranchProcessKey); string subProcessID = process.CurrentActivity.BranchProcessGroups[0].Branches[0].ID; WfRuntime.ClearCache(); //构造子流程,反向查找主流程信息 IWfProcess subProcess = WfRuntime.GetProcessByProcessID(subProcessID); AssertBranchProcessesInfo(subProcess.EntryInfo.OwnerActivity.BranchProcessGroups[0], tp.BranchTransferParams[0].Template.BranchProcessKey); }
private static void MoveToExecutor(IWfProcess process) { IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams pa = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); WfMoveToExecutor moveExec = new WfMoveToExecutor(process.CurrentActivity, process.CurrentActivity, pa); moveExec.Execute(); }
public void Kvit_Version_ShouldReturn_Semver_Result(bool runWithBaseDir) { // Arrange & Act var baseDir = ProcessTestHelper.CreateRandomBaseDir(); var(stdout, stderr, exitCode) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "--version"); // Assert stdout.ShouldMatch(@"\d+\.\d+\.\d+"); }
public void Kvit_WithoutArguments_ShouldShow_UsageInfo(bool runWithBaseDir) { // Arrange & Act var baseDir = ProcessTestHelper.CreateRandomBaseDir(); var(stdoutHelp, stderrHelp, exitCodeHelp) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "--help"); var(stdoutDefault, stderrDefault, exitCodeDefault) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, ""); // Assert stdoutHelp.ShouldBe(stdoutDefault); }
public async Task Kvit_Compare_ShouldShow_File_Contents_are_Equal_between_FileSystem_and_Consul(bool runWithBaseDir) { // Arrange await ConsulTestHelper.DeleteAllKeys(); var baseDir = ProcessTestHelper.CreateRandomBaseDir(); var testObj = new { key1 = "value1", key2 = new { key3 = "value3", key4 = new { key5 = "value5" } } }; // ReSharper disable once MethodHasAsyncOverload FileTestHelper.WriteAllText(Path.Combine(baseDir, "file1"), JsonConvert.SerializeObject(testObj, Formatting.Indented)); await ConsulTestHelper.AddDataToConsulAsync("file1", testObj); // Act var(stdout, stderr, exitCode) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "compare file1"); // Assert var stdoutLines = stdout .Split(Environment.NewLine) .Select(ProcessTestHelper.StripAnsiEscapeCodes) .ToArray(); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[2].ShouldContain("Consul"), () => stdoutLines[2].ShouldContain("Local") ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[5].ShouldContain(@"""key1"": ""value1"""), () => stdoutLines[5].ShouldContain(@"""key1"": ""value1""") ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[7].ShouldContain(@"""key3"": ""value3"""), () => stdoutLines[7].ShouldContain(@"""key3"": ""value3""") ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[9].ShouldContain(@"""key5"": ""value5"""), () => stdoutLines[9].ShouldContain(@"""key5"": ""value5""") ); exitCode.ShouldBe(0); stderr.ShouldBeEmpty(); }
public void Kvit_Help_ShouldReturn_UsageInfo(bool runWithBaseDir) { // Arrange & Act var baseDir = ProcessTestHelper.CreateRandomBaseDir(); var(stdout, stderr, exitCode) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "--help"); // Assert stdout.ShouldContain("Kvit:"); stdout.ShouldContain("Usage:"); stdout.ShouldContain("Options:"); stdout.ShouldContain("Commands:"); }
public void ProcessPersistExecutionTimeTest() { IWfProcessDescriptor processDesc = WfProcessTestCommon.CreateSimpleProcessDescriptor(); int totalProcesses = 40; //准备流程实例 List <IWfProcess> processes = ProcessTestHelper.StartupMultiProcesses(processDesc, totalProcesses); ProcessTestHelper.OutputExecutionTime(() => { WfRuntime.PersistWorkflows(); }, string.Format("保存{0}个流程", totalProcesses)); }
public void ActivityDelete() { //创建一个六个活动的流程 IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver1, process); IWfProcess proc = WfRuntime.GetProcessByProcessID(process.ID); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.requestor, proc); //移动到了第三个活动 //当前活动是NormalActivity1 proc = WfRuntime.GetProcessByProcessID(process.ID); int orginalActivityCount = proc.Activities.Count; proc.CurrentActivity.Delete(); Assert.AreEqual(orginalActivityCount - 1, proc.Descriptor.GetMainStreamActivities().Count); proc = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(proc.Activities.Count, proc.Descriptor.GetMainStreamActivities().Count, "删除一个主线活动NormalActivity1"); Assert.AreEqual(proc.ElapsedActivities[proc.ElapsedActivities.Count - 1].Descriptor.ToTransitions[0].ToActivity.Key, proc.CurrentActivity.Descriptor.Key);//NormalActivity1 proc = WfRuntime.GetProcessByProcessID(proc.ID); IWfActivityDescriptor actDesp = proc.CurrentActivity.Descriptor.Clone(); WfRuntime.ProcessContext.ActivityChangingContext.CreatorInstanceID = proc.CurrentActivity.ID; WfRuntime.ProcessContext.ActivityChangingContext.AssociatedActivityKey = proc.CurrentActivity.Descriptor.Key; proc.CurrentActivity.Append(actDesp); //添加一个活动 ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, proc); proc = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(actDesp.Key, proc.CurrentActivity.Descriptor.Key); Assert.AreEqual(proc.Activities.Count - 1, proc.Descriptor.GetMainStreamActivities().Count); proc.CurrentActivity.Delete(); proc = WfRuntime.GetProcessByProcessID(proc.ID); Assert.AreEqual(proc.Activities.Count, proc.Descriptor.GetMainStreamActivities().Count); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver1, proc); Assert.AreEqual(2, proc.ElapsedActivities.Count); }
public void NoticeOfCancelProcess() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); WfUserResourceDescriptor userResDesp = GetUserResDespInstance(); process.Descriptor.CancelEventReceivers.Add(userResDesp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); process.CancelProcess(false); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(userResDesp.User.ID, process.CurrentActivity.ID, TaskStatus.Yue)); }
public async Task Kvit_Fetch_ShouldCreate_Keys_and_Folders_on_FileSystem(bool runWithBaseDir) { // Arrange await ConsulTestHelper.DeleteAllKeys(); await ConsulTestHelper.AddDirectoryToConsulAsync("dir1"); await ConsulTestHelper.AddDataToConsulAsync("key1", "value1"); await ConsulTestHelper.AddDataToConsulAsync("dir1/key1_in_dir1", "value2"); await ConsulTestHelper.AddDataToConsulAsync("dir2/dir3/dir4/key_in_subfolder", "value3"); // Act var baseDir = ProcessTestHelper.CreateRandomBaseDir(); var(stdout, stderr, exitCode) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "fetch"); // Assert stdout.ShouldContain("All keys successfully fetched"); stderr.ShouldBeEmpty(); exitCode.ShouldBe(0); // Assert files var fetchedFiles = Directory.GetFiles(baseDir, "*.*", SearchOption.AllDirectories); var file1 = fetchedFiles.FirstOrDefault(f => f.EndsWith("key1")); var file2 = fetchedFiles.FirstOrDefault(f => f.EndsWith($"dir1{Path.DirectorySeparatorChar}key1_in_dir1")); var file3 = fetchedFiles.FirstOrDefault(f => f.EndsWith($"dir2{Path.DirectorySeparatorChar}dir3{Path.DirectorySeparatorChar}dir4{Path.DirectorySeparatorChar}key_in_subfolder")); file1.ShouldNotBeNull(); file2.ShouldNotBeNull(); file3.ShouldNotBeNull(); // Assert File Contents var file1Content = await File.ReadAllTextAsync(file1); var file2Content = await File.ReadAllTextAsync(file2); var file3Content = await File.ReadAllTextAsync(file3); file1Content.ShouldBe(@"""value1"""); file2Content.ShouldBe(@"""value2"""); file3Content.ShouldBe(@"""value3"""); }
public void ProcessAssigneesTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessDescriptorWithTransitionCondition(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams transferParams = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.requestor); process.MoveTo(transferParams); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(process.CurrentActivity.Assignees.Count > 0); //WfProcessCurrentInfoCollection coll = WfProcessCurrentInfoAdapter.Instance.Load(true, process.ID); //Assert.AreEqual(process.CurrentActivity.Assignees.Count, coll[0].Assignees.Count); //Assert.AreEqual(process.CurrentActivity.Assignees[0].User.Name, coll[0].Assignees[0].User.Name); }
public void EnterActivityTest() { WfServiceOperationDefinition enterSvcDef = new WfServiceInvokerFactory().SvcOpDef; WfServiceOperationDefinition leaveSvcDef = new WfServiceInvokerFactory().SvcOpDef; enterSvcDef.AddressDef.RequestMethod = WfServiceRequestMethod.Get; enterSvcDef.OperationName = "SayHelloWorld"; enterSvcDef.RtnXmlStoreParamName = "EnterServiceRtnXml"; leaveSvcDef.AddressDef.RequestMethod = WfServiceRequestMethod.Get; leaveSvcDef.OperationName = "Add"; leaveSvcDef.RtnXmlStoreParamName = "LeaveServiceRtnXml"; leaveSvcDef.Params.Add(new WfServiceOperationParameter() { Name = "a", Type = WfSvcOperationParameterType.Int, Value = 50 }); leaveSvcDef.Params.Add(new WfServiceOperationParameter() { Name = "b", Type = WfSvcOperationParameterType.Int, Value = 5 }); IWfProcess process = WfProcessTestCommon.StartupProcessWithServiceDefinition(enterSvcDef, leaveSvcDef); Console.WriteLine("进入起始活动点"); Console.WriteLine(process.ApplicationRuntimeParameters[enterSvcDef.RtnXmlStoreParamName]); Console.WriteLine(process.ApplicationRuntimeParameters[leaveSvcDef.RtnXmlStoreParamName]); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver2); process.MoveTo(tp); Console.WriteLine("离开起始活动点"); Console.WriteLine(process.ApplicationRuntimeParameters[enterSvcDef.RtnXmlStoreParamName]); Console.WriteLine(process.ApplicationRuntimeParameters[leaveSvcDef.RtnXmlStoreParamName]); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); }
public void SingleActivityDelete() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.requestor, process); IWfProcess proc = WfRuntime.GetProcessByProcessID(process.ID); proc.CurrentActivity.Delete(); Assert.AreEqual(0, proc.ElapsedActivities.Count); Assert.IsNotNull(proc.CurrentActivity.Descriptor.Key); IWfProcess p = WfRuntime.GetProcessByProcessID(proc.ID); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver1, p); IWfProcess wp = WfRuntime.GetProcessByProcessID(p.ID); Assert.AreEqual(wp.Activities.Count, wp.Descriptor.GetMainStreamActivities().Count); Assert.AreEqual(wp.ElapsedActivities[wp.ElapsedActivities.Count - 1].Descriptor.Key, wp.CurrentActivity.Descriptor.FromTransitions[0].FromActivity.Key); }
public void BranchProcessUserTasksTest() { //启支流程及其子流程 IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfBranchProcessGroup group = process.CurrentActivity.BranchProcessGroups[0]; AssertBranchProcessesInfo(group, tp.BranchTransferParams[0].Template.BranchProcessKey); UserTaskCollection currentActTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => { builder.LogicOperator = Data.Builder.LogicOperatorDefine.Or; foreach (IWfProcess subProcess in group.Branches) { builder.AppendItem("ACTIVITY_ID", subProcess.CurrentActivity.ID); } }); foreach (IWfProcess subProcess in group.Branches) { bool containsTask = false; group.Branches.ForEach(p => { containsTask = currentActTasks.Exists(u => u.ActivityID == p.CurrentActivity.ID); Assert.IsTrue(containsTask); }); } }
public async Task Kvit_Push_ShouldIgnore_OperatingSystemSpecific_Files(bool runWithBaseDir) { // Arrange await ConsulTestHelper.DeleteAllKeys(); var baseDir = ProcessTestHelper.CreateRandomBaseDir(); FileTestHelper.WriteAllText(Path.Combine(baseDir, "file0"), "555"); FileTestHelper.WriteAllText(Path.Combine(baseDir, ".DS_Store"), "bla bla for mac"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "desktop.ini"), "bla bla for windows"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "subfolder", ".DS_Store"), "bla bla for mac in sub folder"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "subfolder", "desktop.ini"), "bla bla for windows in sub folder"); // Act var(stdout, stderr, exitCode) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "push"); // Assert stdout.ShouldContain("key(s) pushed"); stderr.ShouldBeEmpty(); exitCode.ShouldBe(0); // Assert keys var file0Content = await ConsulTestHelper.GetValueFromConsulAsync("file0"); var dsStoreContent = await ConsulTestHelper.GetValueFromConsulAsync(".DS_Store"); var desktopIniContent = await ConsulTestHelper.GetValueFromConsulAsync("desktop.ini"); var dsStoreInSubFolderContent = await ConsulTestHelper.GetValueFromConsulAsync("subfolder/.DS_Store"); var desktopIniInSubFolderContent = await ConsulTestHelper.GetValueFromConsulAsync("subfolder/desktop.ini"); file0Content.ShouldBe("555"); dsStoreContent.ShouldBeNullOrEmpty(); desktopIniContent.ShouldBeNullOrEmpty(); dsStoreInSubFolderContent.ShouldBeNullOrEmpty(); desktopIniInSubFolderContent.ShouldBeNullOrEmpty(); }
public void ProcessTaskAccomplishedOfResourceTest() { IUser user = (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object; IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); ((WfProcess)process).ResourceID = UuidHelper.NewUuidString(); IWfActivityDescriptor actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = new WfTransferParams(actDesp); tp.Assignees.Add(user); process.MoveTo(tp); //设置 同一人 WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; tp = ProcessTestHelper.GetInstanceOfWfTransferParams(actDesp, OguObject.approver2); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; tp = new WfTransferParams(actDesp); tp.Assignees.Add(user); //设置 同一人 WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; tp = ProcessTestHelper.GetInstanceOfWfTransferParams(actDesp, OguObject.approver2); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(1, ProcessTestHelper.GetResourceUserTasksAccomplished(process.ResourceID, user.ID), "如果ResourceID相同,且流转过同一个人两次,他只会剩下一个已办"); }
public void NoticeOfAllBranchProcessCompleted() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfUserResourceDescriptor userResDesp = GetUserResDespInstance(); actDesp.EnterEventReceivers.Add(userResDesp); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); ProcessTestHelper.CompleteActivityBranchProcessesByBlockingType(process.CurrentActivity, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); ProcessTestHelper.ProcessPendingActivity(process.CurrentActivity.ID); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(userResDesp.User.ID, process.Activities[1].ID, TaskStatus.Yue), "节点状态由pending到running后,则被通知人会收到1个待阅"); }
public void ActivityDespClone() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver1, process); IWfProcess proc = WfRuntime.GetProcessByProcessID(process.ID); IWfActivityDescriptor actDesp = proc.CurrentActivity.Descriptor.Clone();//拷贝一个描述 WfRuntime.ProcessContext.ActivityChangingContext.CreatorInstanceID = proc.CurrentActivity.ID; WfRuntime.ProcessContext.ActivityChangingContext.AssociatedActivityKey = proc.CurrentActivity.Descriptor.Key; proc.CurrentActivity.Append(actDesp); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, proc); IWfProcess pro = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(pro.Descriptor.GetMainStreamActivities().Count + 1, pro.Activities.Count);//7 Assert.IsTrue(pro.CurrentActivity.CreatorInstanceID.IsNotEmpty(), "运行到动态添加的活动上"); Assert.AreEqual(pro.ElapsedActivities[1].Descriptor.ToTransitions[0].ToActivity.Key, pro.CurrentActivity.Descriptor.Key); Assert.IsNotNull(pro.CurrentActivity.Descriptor.ToTransitions[0].ToActivity.Key); }
public void AddProcess() { string processID = "182364d3-2e59-bc73-40e9-fb94672d21a1"; IWfProcess process = WfRuntime.GetProcessByProcessID(processID); string activityKey = process.Descriptor.FindNotUsedActivityKey(); WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity); process.CurrentActivity.Append(actDesp); WfRuntime.PersistWorkflows(); activityKey = process.Descriptor.FindNotUsedActivityKey(); actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity); process.CurrentActivity.Append(actDesp); process = WfRuntime.GetProcessByProcessID(processID); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAnyoneBranchProcessComplete); process.MoveTo(tp); WfRuntime.PersistWorkflows(); }
public void RepeatNoticeOfDelegation() { //sourceUser: "******"; destinationUser:"******" WfDelegation delegation = WfDelegationTest.PrepareDelegation(); WfDelegationAdapter.Instance.Update(delegation); try { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = new WfTransferParams(actDesp); IUser user1 = (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object; IUser user2 = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object; tp.Assignees.Add(user1); tp.Assignees.Add(user2); process.MoveTo(tp); WfRuntime.PersistWorkflows(); Assert.AreEqual(3, process.CurrentActivity.Assignees.Count); int count = Find(process.CurrentActivity.Assignees, user2.ID); Assert.AreEqual(2, count); //存在相同的人员,只是Assignees类型不同(委派与非委派) process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban)); Assert.AreEqual(2, ProcessTestHelper.GetActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban).Count); //两个人2条待办。如果委托后有重复没排除,会是3条 } finally { WfDelegationAdapter.Instance.Delete(delegation); //清理委托 } }
public async Task Kvit_Diff_ShouldShow_Missing_Files_between_FileSystem_and_Consul(bool runWithBaseDir) { // Arrange await ConsulTestHelper.DeleteAllKeys(); var baseDir = ProcessTestHelper.CreateRandomBaseDir(); // missingFilesOnConsul FileTestHelper.WriteAllText(Path.Combine(baseDir, "file"), @"""text"""); FileTestHelper.WriteAllText(Path.Combine(baseDir, "folder1", "file2"), @"{""myNameIsFile2"": ""yes""}"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "folder1", "folder1.1", "file3"), @"{""iaminasubfolder"": ""absolutely""}"); FileTestHelper.WriteAllText(Path.Combine(baseDir, "file0"), @"""555"""); FileTestHelper.WriteAllText(Path.Combine(baseDir, "key1"), @"""value"""); FileTestHelper.WriteAllText(Path.Combine(baseDir, "folder1", "file1"), "true"); // missingFilesOnFileSystem await ConsulTestHelper.AddDirectoryToConsulAsync("dir1"); await ConsulTestHelper.AddDataToConsulAsync("file0", "555"); await ConsulTestHelper.AddDataToConsulAsync("key1", "value1"); await ConsulTestHelper.AddDataToConsulAsync("folder1/file1", "true"); await ConsulTestHelper.AddDataToConsulAsync("key", "value"); await ConsulTestHelper.AddDataToConsulAsync("dir1/key1_in_dir1", "value2"); await ConsulTestHelper.AddDataToConsulAsync("dir2/dir3/dir4/key_in_subfolder", "value3"); // Act var(stdout, stderr, exitCode) = ProcessTestHelper.RunKvit(runWithBaseDir, baseDir, "diff --all"); // Assert var stdoutLines = stdout.Split(Environment.NewLine).ToArray(); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[2].ShouldContain("Files"), () => stdoutLines[2].ShouldContain("Consul - Local") ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[4].ShouldContain("file0"), () => stdoutLines[4].ShouldContain(DiffCommand.FileContentsAreEqualSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[5].ShouldContain("folder1/file1"), () => stdoutLines[5].ShouldContain(DiffCommand.FileContentsAreDifferentSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[6].ShouldContain("key1"), () => stdoutLines[6].ShouldContain(DiffCommand.FileContentsAreDifferentSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[7].ShouldContain("file"), () => stdoutLines[7].ShouldContain(DiffCommand.OnlyInConsulSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[8].ShouldContain("folder1/file2"), () => stdoutLines[8].ShouldContain(DiffCommand.OnlyInConsulSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[9].ShouldContain("folder1/folder1.1/file3"), () => stdoutLines[9].ShouldContain(DiffCommand.OnlyInConsulSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[10].ShouldContain("dir1/key1_in_dir1"), () => stdoutLines[10].ShouldContain(DiffCommand.OnlyInFileSystemSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[11].ShouldContain("dir2/dir3/dir4/key_in_subfolder"), () => stdoutLines[11].ShouldContain(DiffCommand.OnlyInFileSystemSign) ); stdoutLines.ShouldSatisfyAllConditions( () => stdoutLines[11].ShouldContain("key"), () => stdoutLines[11].ShouldContain(DiffCommand.OnlyInFileSystemSign) ); exitCode.ShouldBe(2); stderr.ShouldBeEmpty(); }