Table of Contents

Class TestApi

Namespace: Casewhere.Runtime.DSL.Api
Assembly: Casewhere.Runtime.dll

public class TestApi : ITestApi, IDslApi, IDslContextualApi

Inheritance

objectTestApi

Implements

ITestApi, IDslApi, IDslContextualApi

Inherited Members

object.ToString(), object.Equals(object), object.Equals(object, object), object.ReferenceEquals(object, object), object.GetHashCode(), object.GetType(), object.MemberwiseClone()

Extension Methods

ObjectExtension.ConvertToBsonValue(object), EnumExtensions.DeepClone<TestApi>(TestApi)

Constructors

TestApi(IWorkflowSimulator, IEnumerable<ITypeRandom>, IRegisterNameCache, IDataObjectApiService, IDataClassRepository, IDomainRepository, IPluginTestScenarioManager)

public TestApi(IWorkflowSimulator workflowSimulator, IEnumerable<ITypeRandom> typeRandoms, IRegisterNameCache registerNameCache, IDataObjectApiService dataObjectApiService, IDataClassRepository dataClassRepository, IDomainRepository domainRepository, IPluginTestScenarioManager pluginTestScenarioManager)

Parameters

workflowSimulator IWorkflowSimulator

typeRandoms IEnumerable<ITypeRandom>

registerNameCache IRegisterNameCache

dataObjectApiService IDataObjectApiService

dataClassRepository IDataClassRepository

domainRepository IDomainRepository

pluginTestScenarioManager IPluginTestScenarioManager

Methods

CleanAll()

Clear all dummy data created while running the workflow unit test.

var testApi = ctx.Use<ITestApi>();
testApi.CleanAll();

public void CleanAll()

Create(string, string)

Create a Dummy Data Object and persist it to the database. The system will automatically clean up the data object after the test is finished

public string Create(string dataClassName, string registerName = null)

Parameters

dataClassName string

The Data Class name.

registerName string

Optional name of sharing data stored in memory.

Returns

string

The Id data object just created.

Examples

var testApi = ctx.Use<ITestApi>();
var doId = testApi.Create("TestSampleData");

Create(string, object, string)

Persist a Data Object in the database. The system will automatically clean up the data object after the test is finished.

public string Create(string dataClassName, object data, string registerName = null)

Parameters

dataClassName string

Data Class name

data object

Data Object to be added.

registerName string

Optional name of sharing data stored in memory. If null, the data object will be added to the case of the workflow.

Returns

string

Id of the added Data Object.

Examples

var testApi = ctx.Use<ITestApi>();
var doId = testApi.Create("TestSampleData", new 
{
    Name = "Tester",
    IsActive = true,
    Level = 1
});

CreateDocumentUploadSession(Guid, string, string, string, int, string)

Create new document upload session with corresponding workflow, activity and document upload component name. This API is recommended to be called inside OnExecuting method.

public Guid CreateDocumentUploadSession(Guid documentId, string workflowName, string activityName, string componentName, int fileSize = 0, string fileName = "")

Parameters

documentId Guid

Use IDocumentApi to create a DocumentInfo object.

workflowName string

The workflow name.

activityName string

The activity name.

componentName string

The document upload component name.

fileSize int

File size of document.

fileName string

File name of document.

Returns

Guid

Return the document upload session ID if it excutes successfully.

False(bool, string)

Verifies that an expression is false.

var testApi = ctx.Use<ITestApi>();
var dataObject = new JObject() { { "Role", "Admin" }};
testApi.False(dataObject["Role"].ToObject<string>() == "Admin", "Role must contain admin");

public void False(bool condition, string reason)

Parameters

condition bool

Logical condition expression.

reason string

Error message.

Get<T>(string)

Get a dummy data object from the cache. This is useful for mocking data while writing a workflow unit test.

public T Get<T>(string registerName)

Parameters

registerName string

Name used to register value will be cached

Returns

T

Return the data object.

Type Parameters

T

Type of the cached object.

Examples

var testApi = ctx.Use<ITestApi>();
int value = testApi.Get<int>("TestSampleData");

Get(string)

Get a dummy data object from the cache. This is useful for mocking data while writing a workflow unit test.

public DynamicDataObject Get(string registerName)

Parameters

registerName string

Name used to register value will be cached

Returns

DynamicDataObject

Return the data object.

Examples

var testApi = ctx.Use<ITestApi>();
int value = testApi.Get("TestSampleData");

Get<T>(string, string)

Get value by name in a workflow.

public T Get<T>(string workflowName, string key)

Parameters

workflowName string

The name of workflow.

key string

The key.

Returns

T

Value in running workflow by type.

Type Parameters

T

The variable type.

Examples

var testApi = ctx.Use<ITestApi>();
testApi.Get< int >("SampleWorkflow", "IntValue")

Get(string, string)

Get value object by name in a workflow.

public DynamicDataObject Get(string workflowName, string key)

Parameters

workflowName string

The workflow name.

key string

The key.

Returns

DynamicDataObject

Value object by key in running workflow.

IsActivityCompleted(string, string)

Evaluate whether the activity is completed or not

var testApi = ctx.Use<ITestApi>();
testApi.IsActivityCompleted("workflowName", "activityName")

public bool IsActivityCompleted(string workflowName, string activityName)

Parameters

workflowName string

Workflow Name

activityName string

Activity Name

Returns

bool

Return true if the Activity is completed, otherwise, return false

IsActivityEditable(string, string)

Evaluate whether the activity is editable or not

var testApi = ctx.Use<ITestApi>();
testApi.IsActivityEditable("workflowName", "activityName")

public bool IsActivityEditable(string workflowName, string activityName)

Parameters

workflowName string

Workflow Name

activityName string

Activity Name

Returns

bool

Return true if the Activity is editable, otherwise, return false

IsActivityIncluded(string, string)

Evaluate whether the activity is included or not

var testApi = ctx.Use<ITestApi>();
testApi.IsActivityIncluded("workflowName", "activityName")

public bool IsActivityIncluded(string workflowName, string activityName)

Parameters

workflowName string

Workflow Name

activityName string

Activity Name

Returns

bool

Return true if the Activity is included, otherwise, return false

IsFormFieldEnabled(string, string, string)

Evaluate whether the form field is enable or not

var testApi = ctx.Use<ITestApi>();
testApi.IsFormFieldEnabled("workflowName", "activityName", "componentName")

public bool IsFormFieldEnabled(string workflowName, string activityName, string componentName)

Parameters

workflowName string

Workflow Name

activityName string

Activity Name

componentName string

Form Component Name

Returns

bool

Return true if the form component is enabled, otherwise, return false

IsFormFieldReadonly(string, string, string)

Evaluate whether the form field is readonly or not

var testApi = ctx.Use<ITestApi>();
testApi.IsFormFieldReadonly("workflowName", "activityName", "componentName")

public bool IsFormFieldReadonly(string workflowName, string activityName, string componentName)

Parameters

workflowName string

Workflow Name

activityName string

Activity Name

componentName string

Form Component Name

Returns

bool

Return true if the form component is readonly, otherwise, return false

IsFormFieldRequired(string, string, string)

Evaluate whether the form field is required or not

var testApi = ctx.Use<ITestApi>();
testApi.IsFormFieldRequired("workflowName", "activityName", "componentName")

public bool IsFormFieldRequired(string workflowName, string activityName, string componentName)

Parameters

workflowName string

Workflow Name

activityName string

Activity Name

componentName string

Form Component Name

Returns

bool

Return true if the form component is required, otherwise, return false

IsFormFieldVisible(string, string, string)

Evaluate whether the form field is visible or not

var testApi = ctx.Use<ITestApi>();
testApi.IsFormFieldVisible("workflowName", "activityName", "componentName")

public bool IsFormFieldVisible(string workflowName, string activityName, string componentName)

Parameters

workflowName string

Workflow Name

activityName string

Activity Name

componentName string

Form Component Name

Returns

bool

Return true if the form component is visible, otherwise, return false

IsWorkflowCompleted(string)

Evaluate whether the workflow is completed or not

public bool IsWorkflowCompleted(string workflowName)

Parameters

workflowName string

Workflow Name

Returns

bool

Return true if the Workflow is completed, otherwise, return false

Examples

var testApi = ctx.Use<ITestApi>();
testApi.IsWorkflowCompleted("workflowName")

New<T>(string)

Generate value primitive data types and can be set to the cache

var testApi = ctx.Use<ITestApi>();
testApi.New<int>("TestSampleData");

public T New<T>(string registerName = null)

Parameters

registerName string

Name used to register value will be cached.

Returns

T

Return a generic data object.

Type Parameters

T

Type of the cached object.

New(string, string)

Generate data class object and can be set to the cache

var testApi = ctx.Use<ITestApi>();
var data = testApi.New("TestSampleData");

public DynamicDataObject New(string dataClassName, string registerName = null)

Parameters

dataClassName string

The Data Class name.

registerName string

Optional name used to register value will be cached.

Returns

DynamicDataObject

Return a dynamic data object.

OnExecuted(string, string, Action)

Register an action to be invoked when the specific workflow executed.

public void OnExecuted(string workflowName, string activityName, Action action)

Parameters

workflowName string

The workflow name.

activityName string

The activity name.

action Action

Invoke action.

OnExecuting(string, string, Action)

Register an action to be invoked when the specific workflow activity starts executing.

public void OnExecuting(string workflowName, string activityName, Action action)

Parameters

workflowName string

The workflow name.

activityName string

The activity name.

action Action

Invoke action.

Ref(string, string)

Get the data object is being referenced in a workflow.

public DynamicDataObject Ref(string workflowName, string key)

Parameters

workflowName string

The workflow name.

key string

The reference key.

Returns

DynamicDataObject

Data object is being referenced in running workflow.

Replace(string, object)

Replace the value in the cache. This is useful for mocking data while writing a workflow unit test.

public void Replace(string registerName, object value)

Parameters

registerName string

Name used to register value will be cached

value object

An object value of replacing current value in cache

Examples

var testApi = ctx.Use<ITestApi>();
testApi.Replace("TestSampleData",1);

Set(string, object)

Set a dummy data object into the cache. This is useful for mocking data while writing a workflow unit test.

public void Set(string registerName, object value)

Parameters

registerName string

Name used to register value will be cached

value object

An object value stored in cache

Examples

var testApi = ctx.Use<ITestApi>();
testApi.Set("TestSampleData",1);

SetContext(WorkflowContext)

public void SetContext(WorkflowContext context)

Parameters

context WorkflowContext

SimulatePluginInvocation(string, string)

Invoke a plugin method. This method cannot work with legacy plugins.

public PluginTestScenario SimulatePluginInvocation(string pluginName, string methodName)

Parameters

pluginName string

Name of the plugin.

methodName string

Invoked method name.

Returns

PluginTestScenario

Return the PluginTestScenario object with predefined plugin result

Examples

var pluginResult = new PluginResult { Data = new Dictionary<string, object>() };
pluginResult.Data.Add("subject", "Test plugin on Dev env");
pluginResult.Data.Add("body", "Test plugin on Dev env");
var testApi = ctx.Use<ITestApi>();
testApi.SimulatePluginInvocation("CwMail", "SendEmail").Parameters(parms => parms["subject"].ToString() == "Test plugin on Dev env").Returns(pluginResult);

Submit(string, string, params FormSubmittedDataObject[])

Simulating form submission

public void Submit(string workflowName, string activityName, params FormSubmittedDataObject[] formSubmittedDataObjects)

Parameters

workflowName string

Name of the simulated workflow

activityName string

Name of the simulated activity

formSubmittedDataObjects FormSubmittedDataObject[]

Submitted data

True(bool, string)

Verifies that an expression is true.

var testApi = ctx.Use<ITestApi>();
var dataObject = new JObject() { { "Role", "Admin" }};
testApi.True(dataObject["Role"].ToObject<string>() == "Admin", "Role must contain admin");

public void True(bool condition, string reason)

Parameters

condition bool

Logical condition expression.

reason string

Error message.