Test Order Amount

You’ll need another couple of test cases to verify the new model. Below you can find the tests and the expected results you can use.

Request 3.1: Evaluate decision `order_amount`; T1, Inventory < 100, High Demand: true (irrelevant), Ordered: false, Expected outcome: 250
curl \
  --request POST \
  --header "Content-Type: application/json" \
  http://localhost:8080/engine-rest/decision-definition/key/order-amount/evaluate \
  --data '{"variables" : { "Warehouse stock level" : { "value" : 116, "type": "Integer"}, "Orders" : {"value" : 14, "type" : "Integer"}, "Spare parts reserve" : {"value" : 10, "type" : "Integer"}, "Storage Tier" : {"value": "T1", "type" : "String"}, "Order Placed" : {"value": false, "type" : "Boolean"}, "Available Online" : {"value" : true, "type" : "Boolean"}, "Inventory Trend" : {"value" : 0, "type" : "Integer"}}}'
Request 3.2: Evaluate decision `order_amount`; T1, {test-threshold}, Expected outcome: 0
curl \
  --request POST \
  --header "Content-Type: application/json" \
  http://localhost:8080/engine-rest/decision-definition/key/order-amount/evaluate \
  --data '{"variables" : { "Warehouse stock level" : { "value" : 116, "type": "Integer"}, "Orders" : {"value" : 6, "type" : "Integer"}, "Spare parts reserve" : {"value" : 10, "type" : "Integer"}, "Storage Tier" : {"value": "T1", "type" : "String"}, "Order Placed" : {"value": false, "type" : "Boolean"}, "Available Online" : {"value" : true, "type" : "Boolean"}, "Inventory Trend" : {"value" : 1, "type" : "Integer"}}}'
Request 3.3: Evaluate decision `order_amount`; T1, {test-threshold}, Expected outcome: 250
curl \
  --request POST \
  --header "Content-Type: application/json" \
  http://localhost:8080/engine-rest/decision-definition/key/order-amount/evaluate \
  --data '{"variables" : { "Warehouse stock level" : { "value" : 116, "type": "Integer"}, "Orders" : {"value" : 6, "type" : "Integer"}, "Spare parts reserve" : {"value" : 10, "type" : "Integer"}, "Storage Tier" : {"value": "T1", "type" : "String"}, "Order Placed" : {"value": false, "type" : "Boolean"}, "Available Online" : {"value" : true, "type" : "Boolean"}, "Inventory Trend" : {"value" : 0, "type" : "Integer"}}}'
Request 3.4: Evaluate decision `order_amount`; T1, {test-threshold}, Expected outcome: 0
curl \
  --request POST \
  --header "Content-Type: application/json" \
  http://localhost:8080/engine-rest/decision-definition/key/order-amount/evaluate \
  --data '{"variables" : { "Warehouse stock level" : { "value" : 116, "type": "Integer"}, "Orders" : {"value" : 6, "type" : "Integer"}, "Spare parts reserve" : {"value" : 10, "type" : "Integer"}, "Storage Tier" : {"value": "T1", "type" : "String"}, "Order Placed" : {"value": false, "type" : "Boolean"}, "Available Online" : {"value" : false, "type" : "Boolean"}, "Inventory Trend" : {"value" : 0, "type" : "Integer"}}}'
Request 3.5: Evaluate decision `order_amount`; T1, {test-threshold}, Expected outcome: 250
curl \
  --request POST \
  --header "Content-Type: application/json" \
  http://localhost:8080/engine-rest/decision-definition/key/order-amount/evaluate \
  --data '{"variables" : { "Warehouse stock level" : { "value" : 165, "type": "Integer"}, "Orders" : {"value" : 6, "type" : "Integer"}, "Spare parts reserve" : {"value" : 10, "type" : "Integer"}, "Storage Tier" : {"value": "T1", "type" : "String"}, "Order Placed" : {"value": false, "type" : "Boolean"}, "Available Online" : {"value" : false, "type" : "Boolean"}, "Inventory Trend" : {"value" : -2, "type" : "Integer"}}}'
Request 3.6: Evaluate decision `order_amount`; T1, {test-threshold}, Expected outcome: 0
curl \
  --request POST \
  --header "Content-Type: application/json" \
  http://localhost:8080/engine-rest/decision-definition/key/order-amount/evaluate \
  --data '{"variables" : { "Warehouse stock level" : { "value" : 165, "type": "Integer"}, "Orders" : {"value" : 5, "type" : "Integer"}, "Spare parts reserve" : {"value" : 10, "type" : "Integer"}, "Storage Tier" : {"value": "T1", "type" : "String"}, "Order Placed" : {"value": false, "type" : "Boolean"}, "Available Online" : {"value" : true, "type" : "Boolean"}, "Inventory Trend" : {"value" : -1, "type" : "Integer"}}}'

Did you get the expected results? Good job!

As you’ve seen, testing the various scenarios for a decision requires a bit of work, but it can easily be done in an automated fashion and allows you to specify complex logic in a very efficient way, ready to be invoked whenever needed. Thanks for helping Bolt Bike take another step on their automation journey!