Response Query
The res
object that is available inside the vars, assertions, scripting and testing contexts can be queried for data by invoking it like below.
Think of it as lodash.get()
on steroids
res('order.total')
Examples
const data = {
customer: {
address: {
city: "bangalore"
},
orders: [
{
id: "order-1",
items: [
{ id: 1, amount: 10 },
{ id: 2, amount: 20 }
]
},
{
id: "order-2",
items: [
{ id: 3, amount: 30 },
{ id: 4, amount: 40 }
]
}
]
},
};
Query | Output |
---|---|
res("customer.address.city") | bangalore |
res("customer.orders.items.amount") | [10, 20, 30, 40] |
res(""customer.orders.items.amount[0]") | 10 |
res("..items.amount") | [10, 20, 30, 40] |
res("..amount") | [10, 20, 30, 40] |
res("..items.amount[0]") | 10 |
res("..items[0].amount") | 10 |
res("..items[5].amount") | undefined |
res("..id") | ["order-1", 1, 2, "order-2", 3, 4] |
res("customer.orders.foo") | undefined |
res("..customer.foo") | undefined |
res("..address") | [{ city: "bangalore" }] |
res("..address[0]") | { city: "bangalore" } |
API
Standard dot notation
Example:
res('customer.orders.items.amount')
Deep navigation .. double dots
Example:
res('..items.amount')
Array indexing
Example:
res('..items[0].amount')
Array filtering [?] with corresponding filter function
Example:
res('..items[?].amount', i => i.amount > 20)
Array mapping [?] with corresponding mapper function
Example:
res('..items[?].amount', i => i.amount + 10)