Compliance Testing

Before starting the first live beta site with a new provider PowerEPOS will run through the following compliance testing routine. The tests will normally be run against a full (but demo) PowerEPOS installation with a fixed configuration.

The testing isn't designed to be exhaustive of all possible features but is designed to cover the majority of functionality used by the majority of sites.

The purpose is twofold:

  1. Ensure that basic implementation details are functioning correctly.
  2. Identify what optional parts of the API have been omitted.

Test Setup

When a compliance test has been scheduled you'll be connected to the following POS instance:

Organisation Code: rosdevcompliance
Outlet ID: 1c050f37-d2ed-43ae-8077-e113dc1ab81c

The site will serve up a menu that's similar to this historical menu.json

Reference Test Order #1

This order should be created as seen below during and sent to the POS. As part of "ordering" the individual products there will tests to ensure that the app behavior matches what the Menu is specifying (eg: ensuring that attribute quantity limits arent exceeded).

Order Price To look for
1x Homebrewed Ale
* PINT
$9 There should be 3x Modifier options with PINT being default. Selection must be mandatory.

PINT - $9
Stein - $11.70
Middy - $6.30
Check item is sent with PINT sale modifier

Check isAlcoholic
1x Homebrewed Ale
* STEIN
$11.70 Check price is varied from base of $9.

Check that item is sent with the STEIN sale modifier.
2x Steak
* Medium Rare
* Fries
$56.00

$10.40
Cook instructions require selection of only a SINGLE Rare/Medium/WellDone

Steak sides should be 0-1 max

The fries should be sent with the SIDE modifier and a price reduction from $6.50 to $5.20 due to the single modifier option
1x Cheese Burger
* Default (1) Cheese
* Default (1) Bacon
* NO (0) Pickles
* Default (1) Onions
* Default (1) Ketchup
* Extra (2) Mustard
$12.00
$1.00
$2.00
$0.00
$0.50
$0.10
$0.20
Check quantity restrictions for children sit in range 0-2

Check pickles/mustard come with NO/EXTRA sale modifiers. Check the rest come with no sale modifiers.
1x Apple Pie
* 2 x Icecream
$10.00
$2.00
Check icecream is default selected at 1, others at 0
Check sides should only charge if exceeding 1 child
Check sides should refund $1 if dropping to 0 children
Check total number of sides limited to quantity of 4
1x Garden Salad $12.00 Check nutritional info is listed as Vegan/Vegetarian.
TOTAL
(INC TAXES)
$126.90
$11.54

Test Cases

Only the test cases marked Mandatory are required to pass compliance testing. If these cases are all successful then the app will be cleared to proceed to beta on a live site.

Non mandatory test cases can either be N/A for non implemented functionality or Failed for incorrectly implemented functionality. Failed non mandatory cases will NOT block proceeding to beta but should be either fixed/disabled as soon as possible.

Test Mandatory? Details Extra Info
1 App Ordering Behaviour
1.1 Mandatory Modifier options are a mandatory selection Ref Order #1
1.2 Mandatory Modifier options vary price of product Ref Order #1
1.3 ServiceRestrictions - IsAlcoholic Restrictions Ref Order #1
1.4 Modifier Options items send with SaleModifierID Ref Order #1
1.5.1 Mandatory ChildAttributeGroupQuantityConstraint - Min/Max Quantity Ref Order #1
1.5.2 ChildAttributeGroupQuantityConstraint - ChargeAbove/RefundBelow Ref Order #1
1.6.1 MenuItemQuantityConstraint - Min/Max Quantity Ref Order #1
1.6.2 MenuItemQuantityConstraint - DefaultQuantity Ref Order #1
1.6.3 MenuItemQuantityConstraint - Above/BelowDefaultQuantityProductModifierID Ref Order #1
1.6.4 MenuItemQuantityConstraint - IgnoreIfDefaultQuantity
1.7.1 Mandatory Price is honoured for MenuItems
1.8 Allergen/Nutritional Info Displayed
2 App RemoteOrder API Usage
2.1 Mandatory Payments being sent if app handles payment. NO payments being sent if the Outlet is expected to collect payment
2.2 Mandatory At least one (ideally both) of ProductID/Name is transmitted for each RemoteOrderProduct / RemoteOrderProductAttribute
2.3 Consumer/Courier contact metadata transmitted
2.4 Delivery Fees populated
2.5 Support for adjustments
2.6 Cancelling Orders
2.7 Support for RemoteOrder.TestOrder
2.8 Support for ServiceModeEntityID / ServiceModeID on EatIn orders
2.9 Support for ConsumerRequestsCutlery
2.10 Taxes are transmitted correctly at the item/order level (or omitted for POS to calculate) Ref Order #1
2.11 Support for DateTimePrepareForUTC
3 App Menu Display
3.1 Menu item images are displayed/ignored if null Milkshake
3.2 Menu item descriptions are displayed/ignored if null Chicken Burger
3.3 Group Images are displayed/ignored if null Sweet Treats
3.4 Groups put into hierarchy based on Classification/Category tags
3.5 Group descriptions are displayed/ignored if null Grill
3.6 Multiple Menus are handled / filtered according to RemoteOrderType Grill
3.7 MenuAvailabilityRestrictions are honoured
4 Notifications Webhook
4.1 Mandatory Sending order when POS offline will notify user when order expires
4.2 OrderPreparedNotification (with / without collection points)
4.3 Mandatory
For Apps supporting Menu
Editing menu updates app after short delay
4.4 Mandatory
For Apps supporting Menu
Unlinking a menu updates app after short delay
4.5 Mandatory Disabling outlet configuration updates app after short delay