Upravit

Sdílet prostřednictvím


Queries in the Acceptance test library

A query class provides fluent application programming interfaces (APIs) that are used to find an instance of the corresponding entity, based on various criteria. Query classes are often used in validation scenarios. They are usually used together with specifications.

Naming convention

AtlQuery<ModuleName><EntityNamePlural>

In this naming convention:

  • <ModuleName> is optional and is 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.
  • <EntityNamePlural> is the plural version of the entity name.

Examples

AtlQueryWHSLoadLines

AtlQueryInventTransferOrderLines

Implementation

Query classes inherit from the AtlQuery class that is common to all queries.

Fluent setters

Query classes should provide fluent setter methods to specify ranges for the query.

Example

loadLine = data.whs().loadLines().query().forSalesOrder(salesOrder).single();

Queries allow for two types of fluent setter methods, for methods and with methods:

  • for – These methods are used for filters of the query that act as parents of composition or aggregation relationships. For example, the sales lines query exposes a for method to filter sales lines for a specific sales order.
  • with – These methods are used for all other ranges of the query.

Naming convention

for<QueryRangeName>

with<QueryRangeName>

In this naming convention, <QueryRangeName> is the name of the field that the range is applied on.

Examples

loadLine = data.whs().loadLines().query().forLoad(load).withInventQty(10).single();

transferLine = data.invent().transferOrderLines().query().forTransferOrder(transferOrder).withInventDims([batch1]).single();