Skip to content

Commit 22a14a1

Browse files
committed
test(spec): the icontains parse-door absence pin reads the absent-value arm
The pin asserted that an icontains view rule with no value parses. That carve-out is gone: the value-shape check now refuses a missing value on every operator that takes one. The pin keeps its own half, that the text comparand door never judges absence: the refusal arrives once, in the absent-value arm's words, never in the conformance table's. Claude-Session: https://claude.ai/code/session_013RDBh5DqXd2xnLwvHLgLFr Co-authored-by: Claude <noreply@anthropic.com>
1 parent 325052f commit 22a14a1

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

‎packages/spec/src/data/filter-icontains-parse-door.test.ts‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,21 @@ describe('#19514 §2 — the view vocabulary refuses the same two comparands', (
201201
expect(rule(value).success).toBe(true);
202202
});
203203

204-
it('ABSENCE is left unjudged — this vocabulary HAS an absent, and no row is about it', () => {
204+
it('ABSENCE is not the table\'s to judge — no row is about it, and this door stays out of it', () => {
205205
// `isRefusedTextComparand(undefined)` answers TRUE, and its docblock hands
206206
// the carve-out to callers with an "absent". `value` is optional on every
207207
// view rule, so an omitted comparand is not a comparand the table judged.
208-
expect(rule().success).toBe(true);
208+
//
209+
// [#19751] It IS refused now — by the value-shape check's absent-value arm,
210+
// which refuses a missing value on every operator that takes one, because
211+
// the query path refuses the lowered `[field, operator]` node. What this pin
212+
// keeps is the half that is this door's: the refusal arrives ONCE and in the
213+
// absent-value arm's words, never in the table's.
214+
const issue = issueAt(rule(), 'value');
215+
expect(issue.message).toContain('Filter comparand for operator "icontains" on field "name" is undefined.');
216+
expect(issue.message).not.toContain('EMPTY STRING');
217+
expect(issue.message).not.toContain('not a string');
218+
expect(issue.message).not.toContain(`"${DOLLAR_SPELLING}"`);
209219
});
210220

211221
it('an ARRAY is the SHAPE arm defect, reported once and with the shape wording', () => {

0 commit comments

Comments
 (0)