From 38a2f32eb76aae7b18f799b8337a338d724a9ee0 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 01:28:20 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20Testing=20Improvement:=20Add=20e?= =?UTF-8?q?dge=20case=20test=20for=20unknown=20routing=20operator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds a new test case to `field-logic/src/lib/engine.test.ts` to verify that the `SurveyEngine` correctly handles unknown routing operators by defaulting to `false` and falling back to the default route. This ensures the engine is resilient to typos or unsupported operators in survey definitions. Co-authored-by: alfieprojectsdev <11991855+alfieprojectsdev@users.noreply.github.com> --- field-logic/src/lib/engine.test.ts | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/field-logic/src/lib/engine.test.ts b/field-logic/src/lib/engine.test.ts index dcf3bb6..b44a9b8 100644 --- a/field-logic/src/lib/engine.test.ts +++ b/field-logic/src/lib/engine.test.ts @@ -95,4 +95,36 @@ describe('SurveyEngine', () => { expect(session.visitedNodes).toContain('q1'); expect(session.visitedNodes).toContain('q2_yes'); }); + + it('should fallback to default route for unknown operators', () => { + const surveyWithUnknownOperator: SurveyDefinition = { + ...mockSurvey, + nodes: [ + { + id: "start", + type: "info", + content: { text: "Welcome" }, + routing: { default: "q_unknown" } + }, + { + id: "q_unknown", + type: "text", + content: { question: "Unknown?" }, + routing: { + rules: [ + { operator: "non_existent_op", value: "some_value", target: "q2_yes" } + ], + default: "end" + } + }, + ...mockSurvey.nodes.filter(n => n.id !== "start" && n.id !== "q1") + ] + }; + const engineWithUnknown = new SurveyEngine(surveyWithUnknownOperator, 'test_session'); + engineWithUnknown.start(); + engineWithUnknown.submitAnswer(null); // move to q_unknown + + const node = engineWithUnknown.submitAnswer("any answer"); + expect(node?.id).toBe('end'); + }); });