From c82aa58fe15f10225c8d7adc7d0bde32c3cd5248 Mon Sep 17 00:00:00 2001 From: Gergo Magyar Date: Tue, 17 Mar 2026 07:04:04 +0000 Subject: [PATCH] fix: update extractElementTypeFromString tests for last-arg default TypeArgPosition change (default 'last') broke 5 existing tests expecting first arg from multi-arg generics. Updated expectations and added explicit pos='first' tests for key type extraction. --- .../extract-element-type-from-string.test.ts | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/gitnexus/test/unit/extract-element-type-from-string.test.ts b/gitnexus/test/unit/extract-element-type-from-string.test.ts index 29dc31e75..4d642428e 100644 --- a/gitnexus/test/unit/extract-element-type-from-string.test.ts +++ b/gitnexus/test/unit/extract-element-type-from-string.test.ts @@ -72,17 +72,29 @@ describe('extractElementTypeFromString', () => { }); }); - describe('multi-argument generics — returns first arg only', () => { - it('Map → String', () => { - expect(extractElementTypeFromString('Map')).toBe('String'); + describe('multi-argument generics — default returns last (value) arg', () => { + it('Map → User (default: last/value arg)', () => { + expect(extractElementTypeFromString('Map')).toBe('User'); }); - it('Map> → String (nested second arg ignored)', () => { - expect(extractElementTypeFromString('Map>')).toBe('String'); + it('Map → String (pos=first: key arg)', () => { + expect(extractElementTypeFromString('Map', 'first')).toBe('String'); }); - it('Dict[str, User] → str (Python)', () => { - expect(extractElementTypeFromString('Dict[str, User]')).toBe('str'); + it('Map> → undefined (last arg is nested generic)', () => { + expect(extractElementTypeFromString('Map>')).toBeUndefined(); + }); + + it('Map> → String (pos=first: key arg)', () => { + expect(extractElementTypeFromString('Map>', 'first')).toBe('String'); + }); + + it('Dict[str, User] → User (default: last/value arg, Python)', () => { + expect(extractElementTypeFromString('Dict[str, User]')).toBe('User'); + }); + + it('Dict[str, User] → str (pos=first: key arg, Python)', () => { + expect(extractElementTypeFromString('Dict[str, User]', 'first')).toBe('str'); }); }); @@ -98,12 +110,20 @@ describe('extractElementTypeFromString', () => { }); describe('cross-bracket nesting (bracket depth fix)', () => { - it('Dict[str, List[int]] → str (square-bracket outer, nested inner)', () => { - expect(extractElementTypeFromString('Dict[str, List[int]]')).toBe('str'); + it('Dict[str, List[int]] → undefined (default: last arg is nested generic)', () => { + expect(extractElementTypeFromString('Dict[str, List[int]]')).toBeUndefined(); }); - it('Map> → String (nested angle brackets)', () => { - expect(extractElementTypeFromString('Map>')).toBe('String'); + it('Dict[str, List[int]] → str (pos=first: key arg)', () => { + expect(extractElementTypeFromString('Dict[str, List[int]]', 'first')).toBe('str'); + }); + + it('Map> → undefined (default: last arg is nested generic)', () => { + expect(extractElementTypeFromString('Map>')).toBeUndefined(); + }); + + it('Map> → String (pos=first: key arg)', () => { + expect(extractElementTypeFromString('Map>', 'first')).toBe('String'); }); it('mismatched close bracket at depth 0 → undefined', () => {