apple submit/resubmit --platform macos: apple.macos.noIap leaves IAPs out, no Game Center switch without apple.macos.gameCenter; pitfalls #128

This commit is contained in:
CRTkafa 2026-11-06 21:07:22 +07:00
parent 36ef9c2c5c
commit d05294ebcd
6 changed files with 875 additions and 2 deletions

View file

@ -215,6 +215,26 @@ describe('apple submit --build <n> (a first submission, the desktop owner action
expect(shown(a)).toEqual([]);
});
test('macOS with apple.macos.noIap and no Mac Game Center: version and build only, the skips named', async () => {
fresh();
s.asc.put({ type: 'appStoreVersions', id: 'ver-m', attributes: { versionString: '2.0.0', appVersionState: 'PREPARE_FOR_SUBMISSION', platform: 'MAC_OS' }, rels: { app: APP } });
s.asc.put({ type: 'builds', id: 'b-13', attributes: { version: '13', processingState: 'VALID', usesNonExemptEncryption: false }, rels: { app: APP } });
const p = project({ ...ONE, apple: { ...ONE.apple!, macos: { noIap: true } } });
const a = s.calls.length;
const r = await capture(() => appleSubmit(p.ctx(['--build', '13', '--platform', 'macos'])));
expect(r.out).toContain('1 in-app purchase(s) left out: apple.macos.noIap');
expect(r.out).not.toContain('com.example.notes.gems');
expect(r.out).toMatch(/app version 2\.0\.0/);
expect(shown(a)).toEqual([]);
expect(s.calls.slice(a).some(c => /gameCenter/.test(c.path))).toBe(false);
});
test('macosSubmitSkips: only MAC_OS, gameCenter true keeps the switch', async () => {
const { macosSubmitSkips } = await import('../cli/lib/config');
expect(macosSubmitSkips({ apple: { ...ONE.apple!, macos: { noIap: true } } }, 'IOS')).toEqual({ iaps: null, gameCenter: null });
expect(macosSubmitSkips({ apple: { ...ONE.apple!, macos: { gameCenter: true } } }, 'MAC_OS')).toEqual({ iaps: null, gameCenter: null });
expect(macosSubmitSkips({ apple: ONE.apple! }, 'MAC_OS').gameCenter).toContain('no Game Center');
});
test('--yes: build attached, one draft with the version and the IAP, submitted; a re-run sends nothing', async () => {
fresh();
const p = project(ONE);