📄 attributetest.cs
字号:
using System;
using System.Collections;
using NetBpm.Workflow.Definition;
using NetBpm.Workflow.Execution;
using NUnit.Framework;
namespace NetBpm.Test.Workflow.Example
{
/// <summary>
/// Test assigning attributes to NetBpm
/// </summary>
[TestFixture]
public class AttributeTest : AbstractExampleTest
{
protected override String GetParArchiv()
{
return "attributetest.par";
}
/* ==================== */
/* == in start-state == */
/* ==================== */
/// <summary> Test when extra attribute, not defined in process definition start state
/// as field, being submitted.
/// </summary>
[Test]
public void TestSubmitExtraAttributeInStartState()
{
try
{
IDictionary attributeValues = new Hashtable();
attributeValues["field not accessible"] = "field not accessible value";
attributeValues["field write only"] = "field write only value";
attributeValues["field write only required"] = "field write only required value";
attributeValues["field read write"] = "field read write value";
attributeValues["field read write required"] = "field read write required";
attributeValues["unavailable field A"] = "unavailable field A value";
attributeValues["unavailable field B"] = "unavailable field B value";
StartAttributeTestProcessInstance("ae", attributeValues);
}
catch (System.SystemException e)
{
Assert.Fail("start activity of attribute test with extra attributes not defined in process definition should not get RuntimeException, instead a warn should be logged."+e.Message);
}
}
/// <summary>
/// Test when read-only attribute, are supplied to process definition's start state.
/// </summary>
[Test]
public void TestSubmitReadOnlyAttributeInStartState()
{
try
{
IDictionary attributeValues = new Hashtable();
attributeValues["field not accessible"] = "field not accessible value";
attributeValues["field read only"] = "field read only value";
attributeValues["field write only"] = "field write only value";
attributeValues["field write only required"] = "field write only required value";
attributeValues["field read write"] = "field read write value";
attributeValues["field read write required"] = "field read write required";
StartAttributeTestProcessInstance("ae", attributeValues);
}
catch (System.ArgumentException e)
{
Assert.Fail("start activity of attribute test with read-only attributes passed in should not get IllegalArgumentException, instead a warn should be logged "+e.Message);
}
}
/// <summary> Test when a required attribute is not suppied to process definition's start
/// state. This should throws a RequiredFieldException, if we get that then we
/// are safe.
/// </summary>
[Test]
[Ignore("ignoring this test method for now. Castle rollback exception")]
public void TestSubmitMissingRequiredAttributeInStartState()
{
try
{
IDictionary attributeValues = new Hashtable();
attributeValues["field not accessible"] = "field not accessible value";
attributeValues["field write only"] = "field write only value";
attributeValues["field read write"] = "field read write value";
StartAttributeTestProcessInstance("ae", attributeValues);
Assert.Fail("RequiredFieldException should be thrown because a required attribute is missing from start state");
}
catch (RequiredFieldException e)
{
Assert.IsNull(e); // we are ok!
}
}
/// <summary> Test when a not-accessible attribute is supplied to process definition's
/// start state. This not-accessible attribute should not be avaialble in the
/// activity form obtained from start state.
/// </summary>
[Test]
public void TestNotAccessibleAttributeInStartState()
{
IProcessDefinition processDefinition = definitionComponent.GetProcessDefinition("attribute test");
IActivityForm startActivityForm = executionComponent.GetStartForm(processDefinition.Id);
IDictionary startActivityFormAttributeValues = startActivityForm.AttributeValues;
//attribute values from start state activity form should not contain not accessible field attribute
Assert.IsFalse(startActivityFormAttributeValues.Contains("field not accessible"));
Assert.IsTrue(startActivityFormAttributeValues.Contains("field read only"));
Assert.IsTrue(startActivityFormAttributeValues.Contains("field write only"));
Assert.IsTrue(startActivityFormAttributeValues.Contains("field write only required"));
Assert.IsTrue(startActivityFormAttributeValues.Contains("field read write"));
Assert.IsTrue(startActivityFormAttributeValues.Contains("field read write required"));
}
/// <summary> Test when extra attribute, not defined in process definition activity state
/// as field, being submitted.
/// </summary>
[Test]
public void TestSubmitExtraAttributeInActivityState()
{
try
{
IProcessInstance processInstance = StartAttributeTestProcessInstance("ae", CreateNormalAttributeValues());
IDictionary attributeValues = new Hashtable();
attributeValues["field not accessible"] = "field not accessible value";
attributeValues["field write only"] = "field write only value";
attributeValues["field write only required"] = "field write only required value";
attributeValues["field read write"] = "field read write value";
attributeValues["field read write required"] = "field read write required";
attributeValues["unavailable field A"] = "unavailable field A value";
attributeValues["unavailable field B"] = "unavailable field B value";
IList flows = testUtil.PerformActivity("ae", processInstance.RootFlow.Id, 0, attributeValues, executionComponent);
Assert.IsNotNull(flows);
}
catch (Exception e)
{
Assert.Fail("activity state of attribute test with extra attributes not defined in process definition should not get RuntimeException, instead a warn should be logged "+e.Message);
}
}
/// <summary>
/// Test when read-only attribute, are supplied to process definition's activity state.
/// </summary>
[Test]
public void TestSubmitReadOnlyAttributeInActivityState()
{
try
{
IProcessInstance processInstance = StartAttributeTestProcessInstance("ae", CreateNormalAttributeValues());
IDictionary attributeValues = new Hashtable();
attributeValues["field not accessible"] = "field not accessible value";
attributeValues["field read only"] = "field read only value";
attributeValues["field write only"] = "field write only value";
attributeValues["field write only required"] = "field write only required value";
attributeValues["field read write"] = "field read write value";
attributeValues["field read write required"] = "field read write required";
IList flows = testUtil.PerformActivity("ae", processInstance.RootFlow.Id, 0, attributeValues, executionComponent);
Assert.IsNotNull(flows);
}
catch (System.ArgumentException e)
{
Assert.Fail("activity state of attribute test with read-only attributes passed in should not get IllegalArgumentException, instead a warn should be logged"+e.Message);
}
}
/// <summary>
/// Test when a required attribute is not suppied to process definition's activity state.
/// </summary>
[Test]
[Ignore("ignoring this test method for now. Castle rollback exception")]
public void TestSubmitMissingRequiredAttributeInActivityState()
{
try
{
IProcessInstance processInstance = StartAttributeTestProcessInstance("ae", CreateNormalAttributeValues());
IDictionary attributeValues = new Hashtable();
attributeValues["field not accessible"] = "field not accessible value";
attributeValues["field write only"] = "field write only value";
attributeValues["field read write"] = "field read write value";
testUtil.PerformActivity("ae", processInstance.RootFlow.Id, 0, attributeValues, executionComponent);
Assert.Fail("RequiredFieldException should be thrown because a required attribute is missing from activity state");
}
catch (RequiredFieldException e)
{
Assert.IsNotNull(e); //good cause RequiredFieldException is thrown
}
}
/// <summary> Test when a not-accessible attribute is supplied to process definition's
/// activity state. This not-accessible attribute should be available in the activity
/// form obtained from activity state
/// </summary>
[Test]
public void TestNotAccessibleAttributeInActivityState()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -