[ { "name": "in operator matches description", "rule": { "in": ["grocery", { "var": "description" }] }, "transaction": { "description": "Grocery Store Purchase", "amount": -50, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": true }, { "name": "in operator does not match unrelated description", "rule": { "in": ["grocery", { "var": "description" }] }, "transaction": { "description": "Coffee Shop Downtown", "amount": -50, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": false }, { "name": "in operator matches creditor_name", "rule": { "in": ["amazon", { "var": "creditor_name" }] }, "transaction": { "description": "Card payment", "amount": -50, "creditor_name": "Amazon EU", "debtor_name": null, "notes": null }, "expected": true }, { "name": "in operator does not match unrelated creditor_name", "rule": { "in": ["ikea", { "var": "creditor_name" }] }, "transaction": { "description": "Card payment", "amount": -50, "creditor_name": "Amazon EU", "debtor_name": null, "notes": null }, "expected": false }, { "name": "in operator matches debtor_name", "rule": { "in": ["payroll", { "var": "debtor_name" }] }, "transaction": { "description": "Incoming transfer", "amount": 5000, "creditor_name": null, "debtor_name": "Payroll GmbH", "notes": null }, "expected": true }, { "name": "equals operator matches exact lowercased description", "rule": { "==": [{ "var": "description" }, "salary payment"] }, "transaction": { "description": "Salary Payment", "amount": 1000, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": true }, { "name": "rule value is matched case-insensitively", "rule": { "in": ["GROCERY", { "var": "description" }] }, "transaction": { "description": "grocery store", "amount": -30, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": true }, { "name": "description whitespace is normalized before matching", "rule": { "in": ["grocery store", { "var": "description" }] }, "transaction": { "description": " Grocery Store Purchase ", "amount": -30, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": true }, { "name": "in operator matches notes", "rule": { "in": ["reimburse", { "var": "notes" }] }, "transaction": { "description": "Bank transfer", "amount": 200, "creditor_name": null, "debtor_name": null, "notes": "Please Reimburse Me" }, "expected": true }, { "name": "greater than amount comparison uses dollars", "rule": { ">": [{ "var": "amount" }, 50] }, "transaction": { "description": "Salary", "amount": 100, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": true }, { "name": "greater than amount comparison fails below threshold", "rule": { ">": [{ "var": "amount" }, 200] }, "transaction": { "description": "Small purchase", "amount": 50, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": false }, { "name": "compound and rule matches when both conditions hold", "rule": { "and": [{ "in": ["grocery", { "var": "description" }] }, { "<": [{ "var": "amount" }, 0] }] }, "transaction": { "description": "Grocery Store", "amount": -50, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": true }, { "name": "compound and rule fails when one condition fails", "rule": { "and": [{ "in": ["grocery", { "var": "description" }] }, { ">": [{ "var": "amount" }, 0] }] }, "transaction": { "description": "Grocery Store", "amount": -50, "creditor_name": null, "debtor_name": null, "notes": null }, "expected": false } ]