apple creative-assets: a live app without an editable version uses the live version (only approved assets are selected there; new ones upload and wait for a review of their own via --add-for-review); pitfall 76: placements read back ACTIVE live, a state the 4.5.1 spec does not list

This commit is contained in:
CRTkafa 2026-10-19 05:45:47 +07:00
parent 183579449c
commit c03291e7f7
6 changed files with 49 additions and 12 deletions

View file

@ -175,6 +175,20 @@ describe('apple creative-assets against the fake App Store Connect', () => {
expect(ok.out).toContain('every slot shows the local file');
});
test('live version only (no editable one): upload, add for review alone, select once approved', async () => {
const p = setup(files());
s.asc.all('appStoreVersions')[0]!.attributes.appVersionState = 'READY_FOR_DISTRIBUTION';
const up = await go(p, ['--add-for-review']);
expect(up.out).toContain('using the live version 1.0.0');
expect(up.w).toEqual(['POST /v1/appAssetLibraryImages', 'PATCH /v1/appAssetLibraryImages/{id}', 'POST /v1/appAssetLibraryImages', 'PATCH /v1/appAssetLibraryImages/{id}',
'POST /v1/reviewSubmissions', 'POST /v1/reviewSubmissionItems', 'POST /v1/reviewSubmissionItems']);
expect(up.out).toContain('2 waiting for App Review (live version)');
expect(s.asc.all('appAssetLibraryPlacements')).toHaveLength(0);
for (const x of lib()) x.attributes.state = 'APPROVED';
expect((await go(p)).w).toEqual(['POST /v1/appAssetLibraryPlacements', 'POST /v1/appAssetLibraryPlacements']);
expect((await go(p, ['--verify'])).out).toContain('every slot shows the local file');
});
test('a bad file stops the run before any call', async () => {
const p = setup({ 'store/renders/en/creative/header.png': png(3840, 1600, true) });
const a = s.calls.length;