- Changed parseApkFilename to accept version parameter - New parsing logic splits filename by version string to extract prefix - detectEnvironment now takes prefix and configured tabs as arguments - Environments not in APK_TABS are mapped to 'other' instead of hardcoded mapping - Added getApkTabs helper function to expose configured tabs - Updated all tests to use new API with version parameter Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
2.5 KiB
TypeScript
70 lines
2.5 KiB
TypeScript
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');
|
|
});
|
|
});
|