import { expect, test } from 'bun:test'; import { planVersion } from '../cli/lib/listing-plan'; const row = (id: string, versionString: string, state: string, releaseType: string) => ({ id, attributes: { versionString, appStoreState: state, appVersionState: state, platform: 'IOS', releaseType } }); test('a new version keeps the release type of the newest version before it unless apple.releaseType is set', () => { const rows = [row('v1', '2.0.0', 'READY_FOR_DISTRIBUTION', 'MANUAL'), row('v2', '2.0.1', 'READY_FOR_DISTRIBUTION', 'AFTER_APPROVAL')]; const p = planVersion(rows, '2.0.2', { copyright: 'c' }, 'IOS'); expect(p.action).toBe('create'); expect(p.attributes.releaseType).toBe('AFTER_APPROVAL'); expect(p.reason).toContain('as version 2.0.1'); const set = planVersion(rows, '2.0.2', { copyright: 'c', releaseType: 'MANUAL' }, 'IOS'); expect(set.attributes.releaseType).toBe('MANUAL'); expect(set.warning).toContain('differs from version 2.0.1 (AFTER_APPROVAL)'); expect(planVersion([], '1.0.0', { copyright: 'c' }, 'IOS').attributes.releaseType).toBe('MANUAL'); });