• test-expressions.js
  • const test = require("node:test");
    const assert = require("node:assert");
    const { ConditionExpressionGroup, ConditionExpression } = require("../../../server/monitor-conditions/expression.js");
    
    test("Test ConditionExpressionGroup.fromMonitor", async (t) => {
        const monitor = {
            conditions: JSON.stringify([
                {
                    "type": "expression",
                    "andOr": "and",
                    "operator": "contains",
                    "value": "foo",
                    "variable": "record"
                },
                {
                    "type": "group",
                    "andOr": "and",
                    "children": [
                        {
                            "type": "expression",
                            "andOr": "and",
                            "operator": "contains",
                            "value": "bar",
                            "variable": "record"
                        },
                        {
                            "type": "group",
                            "andOr": "and",
                            "children": [
                                {
                                    "type": "expression",
                                    "andOr": "and",
                                    "operator": "contains",
                                    "value": "car",
                                    "variable": "record"
                                }
                            ]
                        },
                    ]
                },
            ]),
        };
        const root = ConditionExpressionGroup.fromMonitor(monitor);
        assert.strictEqual(true, root.children.length === 2);
        assert.strictEqual(true, root.children[0] instanceof ConditionExpression);
        assert.strictEqual(true, root.children[0].value === "foo");
        assert.strictEqual(true, root.children[1] instanceof ConditionExpressionGroup);
        assert.strictEqual(true, root.children[1].children.length === 2);
        assert.strictEqual(true, root.children[1].children[0] instanceof ConditionExpression);
        assert.strictEqual(true, root.children[1].children[0].value === "bar");
        assert.strictEqual(true, root.children[1].children[1] instanceof ConditionExpressionGroup);
        assert.strictEqual(true, root.children[1].children[1].children.length === 1);
        assert.strictEqual(true, root.children[1].children[1].children[0] instanceof ConditionExpression);
        assert.strictEqual(true, root.children[1].children[1].children[0].value === "car");
    });