Testing an event rule
When creating the event rule, a test class is automatically created. The following table shows the base class to use depending on the type of rule:
| Event rule | Base class |
|---|---|
| Entity Saving | SavingRuleTest<TSavingRule, TEntity> |
| Entity Saved | SavedRuleTest<TSavingRule, TEntity> |
| Entity view Retrieving | RetrievingRuleTest<TSavingRule, TEntityView> |
| Entity view Retrieved | RetrievedRuleTest<TSavingRule, TEntityView> |
| Entity view Saving | SavingRuleTest<TSavingRule, TEntityView> |
| Entity view Saved | SavedRuleTest<TSavingRule, TEntityView> |
Executing the event rule in a test
Entity saving rule
You must call the ExecuteSavingRuleAsync method and configure the arguments with the argsBuilder parameter. Code example:
// Arrange
Customer c1;
Customer c2;
Customer c3;
Customer c4;
...
// Act
ISavingRuleArguments args = await ExecuteSavingRuleAsync(b => b
.WithCreatedItems(c1)
.WithModifiedItems(c2, c3)
.WithDeletedItems(c4));
// Assert
args.Cancel.Should().BeFalse();
Entity saved rule
You must call the ExecuteSavedRuleAsync method and configure the arguments with the argsBuilder parameter. Code example:
// Arrange
Customer c1;
Customer c2;
Customer c3;
Customer c4;
...
// Act
ISavedRuleArguments args = await ExecuteSavedRuleAsync(b => b
.WithCreatedItems(c1)
.WithModifiedItems(c2, c3)
.WithDeletedItems(c4));
// Assert
...
Entity view retrieving rule
You must call the ExecuteRetrievingRuleAsync method and configure the arguments with the argsBuilder parameter. Code example:
// Act
IRetrievingRuleArguments args = await ExecuteRetrievingRuleAsync(b => b
.WithPagination(skip: 20, top:10));
// Assert
args.Cancel.Should().BeTrue();
args.Items.Should().BeEquivalentTo(...);
Testing AppendEntityFilter
Sample code to test the addition of a filter using the AppendEntityFilter method :
result.EntityWherePredicate.Should().NotBeNull();
Expression<Func<UserAccount, bool>> expression = (Expression<Func<UserAccount, bool>>)result.EntityWherePredicate!;
GetData<UserAccount>().Where(expression.Compile()).Should().BeEquivalentTo(new[] { myUser });
Entity view retrieved rule
You must call the ExecuteRetrievedRuleAsync method and configure the arguments with the argsBuilder parameter. Code example:
// Arrange
ICustomerView c1;
ICustomerView c2;
ICustomerView c3;
ICustomerView c4;
// Act
IRetrievedRuleArguments args = await ExecuteRetrievedRuleAsync(b => b
.WithItems(c1, c2, c3, c4));
// Assert
...
Entity view saving rule
You must call the ExecuteSavingRuleAsync method and configure the arguments with the argsBuilder parameter. Code example:
// Arrange
ICustomerView c1;
ICustomerView c2;
ICustomerView c3;
ICustomerView c4;
...
// Act
ISavingRuleArguments args = await ExecuteSavingRuleAsync(b => b
.WithCreatedItems(c1)
.WithModifiedItems(c2, c3)
.WithDeletedItems(c4));
// Assert
args.Cancel.Should().BeFalse();
Entity view saved rule
You must call the ExecuteSavedRuleAsync method and configure the arguments with the argsBuilder parameter. Code example:
// Arrange
ICustomerView c1;
ICustomerView c2;
ICustomerView c3;
ICustomerView c4;
...
// Act
ISavedRuleArguments args = await ExecuteSavedRuleAsync(b => b
.WithCreatedItems(c1)
.WithModifiedItems(c2, c3)
.WithDeletedItems(c4));
// Assert
...