Flows › DomEngine ea8420722

Story:order 6 expects pass

· 13 ms · specs: Spec:alerts, Spec:drill-results, Spec:hello, Spec:mining-domain, Spec:order, Spec:rebalance, Spec:ledger-spec

Open in fiddleStory topicJSON
Expects
✓10payload.status is "confirmed"
✓11payload.total is 40.5
✓16payload.discount is 6.0
✓17payload.total is 114.0
✓22payload.status is "rejected"
✓23payload.reason is "out of stock: tee"
Resulting value (payload)
{
  "status": "rejected",
  "reason": "out of stock: tee"
}
Flow values (ctx)
{
  "stock": {
    "mug": 10,
    "tee": 3,
    "lamp": 5
  }
}
Trace
valstock = {mug: 10, tee: 3, lamp: 5}line 5
msgorder.submit(items=[{sku: "mug", qty: 2, price: 12.5}, {sku: "tee", qty: 1, price: 20.0}], member=true, stock={mug: 10, tee: 3, lamp: 5})line 9
rulerule order.submit (line 50)line 50
msgorder.place(items=[{sku: "mug", qty: 2, price: 12.5}, {sku: "tee", qty: 1, price: 20.0}], member=true, stock={mug: 10, tee: 3, lamp: 5})line 52
rulerule order.place (line 41)line 41
msgorder.checkStock(items=[{sku: "mug", qty: 2, price: 12.5}, {sku: "tee", qty: 1, price: 20.0}], stock={mug: 10, tee: 3, lamp: 5})line 42
rulerule order.checkStock (line 7)line 7
valshort = []line 8
msgorder.price(items=[{sku: "mug", qty: 2, price: 12.5}, {sku: "tee", qty: 1, price: 20.0}])line 43
rulerule order.price (line 17)line 17
valpayload = 45.0line 18
valsubtotal = 45.0line 43
msgorder.discount(subtotal=45.0, member=true)line 44
rulerule order.discount (line 25)line 25
valpayload = 4.5line 26
valdiscount = 4.5line 44
valpayload = {status: "confirmed", subtotal: 45.0, discount: 4.5, total: 40.5}line 45
expectpayload.status is "confirmed" ✓line 10
expectpayload.total is 40.5 ✓line 11
msgorder.submit(items=[{sku: "lamp", qty: 2, price: 60.0}], member=false, stock={mug: 10, tee: 3, lamp: 5})line 15
rulerule order.submit (line 50)line 50
msgorder.place(items=[{sku: "lamp", qty: 2, price: 60.0}], member=false, stock={mug: 10, tee: 3, lamp: 5})line 52
rulerule order.place (line 41)line 41
msgorder.checkStock(items=[{sku: "lamp", qty: 2, price: 60.0}], stock={mug: 10, tee: 3, lamp: 5})line 42
rulerule order.checkStock (line 7)line 7
valshort = []line 8
msgorder.price(items=[{sku: "lamp", qty: 2, price: 60.0}])line 43
rulerule order.price (line 17)line 17
valpayload = 120.0line 18
valsubtotal = 120.0line 43
msgorder.discount(subtotal=120.0, member=false)line 44
rulerule order.discount (line 29)line 29
valpayload = 6.0line 30
valdiscount = 6.0line 44
valpayload = {status: "confirmed", subtotal: 120.0, discount: 6.0, total: 114.0}line 45
expectpayload.discount is 6.0 ✓line 16
expectpayload.total is 114.0 ✓line 17
msgorder.submit(items=[{sku: "tee", qty: 4, price: 20.0}], member=false, stock={mug: 10, tee: 3, lamp: 5})line 21
rulerule order.submit (line 50)line 50
msgorder.place(items=[{sku: "tee", qty: 4, price: 20.0}], member=false, stock={mug: 10, tee: 3, lamp: 5})line 52
rulerule order.place (line 41)line 41
msgorder.checkStock(items=[{sku: "tee", qty: 4, price: 20.0}], stock={mug: 10, tee: 3, lamp: 5})line 42
rulerule order.checkStock (line 7)line 7
valshort = ["tee"]line 8
vallist = "tee"line 10
msgdiesel.throw(code="E_STOCK", msg="out of stock: tee")line 11
errorcaught E_STOCK: out of stock: teeline 11
valpayload = {status: "rejected", reason: "out of stock: tee"}line 54
expectpayload.status is "rejected" ✓line 22
expectpayload.reason is "out of stock: tee" ✓line 23
Story syntax tree
$val stock = {mug: 10, tee: 3, lamp: 5}
{
  "src": "$val stock = {mug: 10, tee: 3, lamp: 5}",
  "k": "step",
  "stmt": {
    "k": "assign",
    "sets": [
      {
        "name": "stock",
        "e": {
          "k": "obj",
          "fields": [
            {
              "key": "mug",
              "e": {
                "k": "lit",
                "v": 10
              }
            },
            {
              "key": "tee",
              "e": {
                "k": "lit",
                "v": 3
              }
            },
            {
              "key": "lamp",
              "e": {
                "k": "lit",
                "v": 5
              }
            }
          ]
        }
      }
    ]
  }
}
$send order.submit (items = [{sku: "mug", qty: 2, price: 12.5}, {sku: "tee", qty: 1, price: 20.0}], member = true, stock = stock)
{
  "src": "$send order.submit (items = [{sku: \"mug\", qty: 2, price: 12.5}, {sku: \"tee\", qty: 1, price: 20.0}], member = true, stock = stock)",
  "k": "step",
  "stmt": {
    "k": "send",
    "msg": "order.submit",
    "args": [
      {
        "name": "items",
        "e": {
          "k": "arr",
          "items": [
            {
              "k": "obj",
              "fields": [
                {
                  "key": "sku",
                  "e": {
                    "k": "str",
                    "parts": [
                      "mug"
                    ]
                  }
                },
                {
                  "key": "qty",
                  "e": {
                    "k": "lit",
                    "v": 2
                  }
                },
                {
                  "key": "price",
                  "e": {
                    "k": "lit",
                    "v": 12.5
                  }
                }
              ]
            },
            {
              "k": "obj",
              "fields": [
                {
                  "key": "sku",
                  "e": {
                    "k": "str",
                    "parts": [
                      "tee"
                    ]
                  }
                },
                {
                  "key": "qty",
                  "e": {
                    "k": "lit",
                    "v": 1
                  }
                },
                {
                  "key": "price",
                  "e": {
                    "k": "lit",
                    "v": 20
                  }
                }
              ]
            }
          ]
        }
      },
      {
        "name": "member",
        "e": {
          "k": "lit",
          "v": true
        }
      },
      {
        "name": "stock",
        "e": {
          "k": "ref",
          "name": "stock"
        }
      }
    ]
  }
}
payload.status is "confirmed"
{
  "src": "payload.status is \"confirmed\"",
  "k": "expect",
  "cond": {
    "k": "bin",
    "op": "==",
    "l": {
      "k": "member",
      "obj": {
        "k": "ref",
        "name": "payload"
      },
      "name": "status",
      "safe": false
    },
    "r": {
      "k": "str",
      "parts": [
        "confirmed"
      ]
    }
  }
}
payload.total is 40.5
{
  "src": "payload.total is 40.5",
  "k": "expect",
  "cond": {
    "k": "bin",
    "op": "==",
    "l": {
      "k": "member",
      "obj": {
        "k": "ref",
        "name": "payload"
      },
      "name": "total",
      "safe": false
    },
    "r": {
      "k": "lit",
      "v": 40.5
    }
  }
}
$send order.submit (items = [{sku: "lamp", qty: 2, price: 60.0}], member = false, stock = stock)
{
  "src": "$send order.submit (items = [{sku: \"lamp\", qty: 2, price: 60.0}], member = false, stock = stock)",
  "k": "step",
  "stmt": {
    "k": "send",
    "msg": "order.submit",
    "args": [
      {
        "name": "items",
        "e": {
          "k": "arr",
          "items": [
            {
              "k": "obj",
              "fields": [
                {
                  "key": "sku",
                  "e": {
                    "k": "str",
                    "parts": [
                      "lamp"
                    ]
                  }
                },
                {
                  "key": "qty",
                  "e": {
                    "k": "lit",
                    "v": 2
                  }
                },
                {
                  "key": "price",
                  "e": {
                    "k": "lit",
                    "v": 60
                  }
                }
              ]
            }
          ]
        }
      },
      {
        "name": "member",
        "e": {
          "k": "lit",
          "v": false
        }
      },
      {
        "name": "stock",
        "e": {
          "k": "ref",
          "name": "stock"
        }
      }
    ]
  }
}
payload.discount is 6.0
{
  "src": "payload.discount is 6.0",
  "k": "expect",
  "cond": {
    "k": "bin",
    "op": "==",
    "l": {
      "k": "member",
      "obj": {
        "k": "ref",
        "name": "payload"
      },
      "name": "discount",
      "safe": false
    },
    "r": {
      "k": "lit",
      "v": 6
    }
  }
}
payload.total is 114.0
{
  "src": "payload.total is 114.0",
  "k": "expect",
  "cond": {
    "k": "bin",
    "op": "==",
    "l": {
      "k": "member",
      "obj": {
        "k": "ref",
        "name": "payload"
      },
      "name": "total",
      "safe": false
    },
    "r": {
      "k": "lit",
      "v": 114
    }
  }
}
$send order.submit (items = [{sku: "tee", qty: 4, price: 20.0}], member = false, stock = stock)
{
  "src": "$send order.submit (items = [{sku: \"tee\", qty: 4, price: 20.0}], member = false, stock = stock)",
  "k": "step",
  "stmt": {
    "k": "send",
    "msg": "order.submit",
    "args": [
      {
        "name": "items",
        "e": {
          "k": "arr",
          "items": [
            {
              "k": "obj",
              "fields": [
                {
                  "key": "sku",
                  "e": {
                    "k": "str",
                    "parts": [
                      "tee"
                    ]
                  }
                },
                {
                  "key": "qty",
                  "e": {
                    "k": "lit",
                    "v": 4
                  }
                },
                {
                  "key": "price",
                  "e": {
                    "k": "lit",
                    "v": 20
                  }
                }
              ]
            }
          ]
        }
      },
      {
        "name": "member",
        "e": {
          "k": "lit",
          "v": false
        }
      },
      {
        "name": "stock",
        "e": {
          "k": "ref",
          "name": "stock"
        }
      }
    ]
  }
}
payload.status is "rejected"
{
  "src": "payload.status is \"rejected\"",
  "k": "expect",
  "cond": {
    "k": "bin",
    "op": "==",
    "l": {
      "k": "member",
      "obj": {
        "k": "ref",
        "name": "payload"
      },
      "name": "status",
      "safe": false
    },
    "r": {
      "k": "str",
      "parts": [
        "rejected"
      ]
    }
  }
}
payload.reason is "out of stock: tee"
{
  "src": "payload.reason is \"out of stock: tee\"",
  "k": "expect",
  "cond": {
    "k": "bin",
    "op": "==",
    "l": {
      "k": "member",
      "obj": {
        "k": "ref",
        "name": "payload"
      },
      "name": "reason",
      "safe": false
    },
    "r": {
      "k": "str",
      "parts": [
        "out of stock: tee"
      ]
    }
  }
}