Acceptance test library commands
Command classes are responsible for running business operations. They let you use fluent application programming interfaces (APIs) to set the parameters of these operations.
Naming convention
AtlCommand<ModuleName><EntityName><ExecuteBusinessOperation>
In this naming convention:
<ModuleName>
is based on the names of the modules on the main menu. You should use a short version or an abbreviation to support brevity of test code.<EntityName>
is optional and is used when the command applies to different types of entities.<ExecuteBusinessOperation>
is a verb that represents the name of the business operation.
Examples
AtlCommandInventMark
AtlCommandSalesReturnOrderLineRegister
Implementation
Command objects that are returned should implement the AtlICommand
interface and should inherit from the AtlCommand
class.
Command objects should provide fluent setter methods that are used to set the parameters of the command.
Example
salesLine.pick().setInventDims([locationOut]).setQty(pickedQty).execute();
Fluent setter methods
Commands allow for two types of fluent setter methods, for
methods and set
methods:
for – These methods are used for command parameters that represent the entities that the command applies to.
For example, the invoice command can apply to sales orders. Therefore, a
for
method is used to set the sales order that the invoice command applies to.set – These methods are used for all other parameters of the command.
For example, when you reserve a sales line, you usually specify a quantity. The quantity isn't something that the command applies to but is instead a simple parameter of the command. Therefore, a
set
method is used to specify the quantity parameter of the reservation command.
Naming convention
for<CommandParameterName>
set<CommandParameterName>
In this naming convention, <CommandParameterName>
is the name of the parameter that is being set for the command by using the fluent method.
Examples
onHandAdjustment.forItem(item).setQuantity(10).execute();
picking.forSalesLine(salesLine).setInventDims([warehouse, batch1]).setQuantity(10).execute();