Navigation concepts for test data
To simplify the discoverability of generation methods for test data, a set of navigation objects is introduced. For more information about the generation methods, see Test data methods.
Navigation should start from the root object, the module must be specified, and then the entity must be specified together with the test data methods.
data.module().entity().testDataMethod();
Examples
modelGroup = data.invent().modelGroups().fifo();
itemBuilder = data.products().items().whsBuilder();
data.sales().salesOrders().ensureCanCreate();
data.invent().parameters().enableQualityManagement();
Advantages
- Discoverability of data creation application programming interfaces (APIs). IntelliSense helps you get to the helper methods that are relevant for the entity.
- Local references to frequently used nodes (for example,
items.whsBuilder()
). Therefore, long names aren't required.
Root navigation object
The root navigation object is the starting point for finding the test data methods that are required. The root navigation object exposes modules where test data methods are defined.
Variable naming
The suggested name for variables that reference the navigation root is data
.
Class naming
The root class is named AtlDataRootNode
.
Module navigation object
The module navigation objects let you group test data methods by relevant modules. Module navigation objects can expose entity navigation objects.
Navigation node naming
Module names should be based on the names of the modules on the main menu. However, a short version or an abbreviation should be used to support brevity of test code.
Examples
- Sales and marketing module:
data.sales()
- Inventory management module:
data.invent()
Class naming
AtlData<ModuleName>
Examples
- Sales and marketing module:
AtlDataSales
- Procurement and sourcing module:
AtlDataPurch
- Inventory management module:
AtlDataInvent
- Accounts receivable module:
AtlDataCust
- Accounts payable module:
AtlDataVend
Entity navigation objects
Entity navigation objects let you group test data methods by relevant entities.
Navigation node naming
The plural of the entity name should be used as the name of the entity navigation node.
Examples
data.products().items();
data.whs().warehouses();
Class naming
AtlData<ModuleName><EntityNamePlural>
Examples
AtlDataProductsItems
AtlDataInventChargeGroups
Notes
The same entity navigation object can be exposed from multiple modules when this approach makes sense. For example, AtlDataProductsItems
is exposed from both data.product()
and data.invent()
.
Helper navigation objects
Sometimes, a test data method isn't specific to any entity. In this case, a helpers node can be exposed at the module level.
Navigation node naming
The helpers navigation node should be named helpers
.
Examples
data.helpers();
data.whs().helpers();
Class naming
AtlData<ModuleName>Helpers
Examples
AtlDataHelpers
AtlDataWHSHelpers