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', () => {