import { parseApkFilename, detectEnvironment, getApkTabs } from '../apk-parser'; describe('parseApkFilename', () => { it('should parse product APK (no environment)', () => { const result = parseApkFilename('ft_0_44_bfeddf2d0.apk', '0_44'); expect(result.environment).toBe('product'); expect(result.commit).toBe('bfeddf2d0'); expect(result.isValid).toBe(true); }); it('should parse dev APK', () => { const result = parseApkFilename('ft_dev_0_44_bfeddf2d0.apk', '0_44'); expect(result.environment).toBe('dev'); expect(result.commit).toBe('bfeddf2d0'); expect(result.isValid).toBe(true); }); it('should parse sandbox APK', () => { const result = parseApkFilename('ft_sandbox_0_44_bfeddf2d0.apk', '0_44'); expect(result.environment).toBe('sandbox'); expect(result.commit).toBe('bfeddf2d0'); expect(result.isValid).toBe(true); }); it('should map unknown environment to other', () => { const result = parseApkFilename('ft_lan_0_44_bfeddf2d0.apk', '0_44'); expect(result.environment).toBe('other'); expect(result.commit).toBe('bfeddf2d0'); }); it('should map timeshift to other', () => { const result = parseApkFilename('ft_timeshift_0_42_57ef3a60d.apk', '0_42'); expect(result.environment).toBe('other'); }); it('should handle invalid format without commit', () => { const result = parseApkFilename('ft_dev_0_44.apk', '0_44'); expect(result.environment).toBe('dev'); expect(result.commit).toBeNull(); expect(result.isValid).toBe(false); }); it('should handle completely invalid filename', () => { const result = parseApkFilename('invalid_filename.apk', '0_44'); expect(result.environment).toBe('other'); expect(result.commit).toBeNull(); expect(result.isValid).toBe(false); }); }); describe('detectEnvironment', () => { it('should detect product when no underscore in prefix', () => { expect(detectEnvironment('ft', ['dev', 'sandbox'])).toBe('product'); }); it('should detect configured environment', () => { expect(detectEnvironment('ft_dev', ['dev', 'sandbox'])).toBe('dev'); expect(detectEnvironment('ft_sandbox', ['dev', 'sandbox'])).toBe('sandbox'); }); it('should return other for unconfigured environment', () => { expect(detectEnvironment('ft_lan', ['dev', 'sandbox'])).toBe('other'); expect(detectEnvironment('ft_timeshift', ['dev', 'sandbox'])).toBe('other'); }); it('should return other for empty prefix', () => { expect(detectEnvironment('', ['dev', 'sandbox'])).toBe('other'); }); });