apple testflight groups: bare lists the groups and what the config would create (read-only); groups sync (or --yes) creates; flows: bare = read, sync = write; MCP tool runs groups sync

This commit is contained in:
CRTkafa 2026-10-12 10:48:59 +08:00
parent 1724296e59
commit 41d2ffcc24
12 changed files with 44 additions and 13 deletions

View file

@ -87,6 +87,17 @@ async function twice(run: () => Promise<void>): Promise<{ first: string[]; secon
const count = (type: string): number => s.asc.all(type).length;
describe('apple testflight groups: bare lists, sync creates', () => {
test('bare `groups` writes nothing and names what sync would create', async () => {
const p = project(CONFIG);
const before = s.calls.length;
const r = await capture(() => appleTestflight(p.ctx(['groups'])));
expect(writes(s.calls.slice(before))).toEqual([]);
expect(r.out).toContain('would create "Friends", "Public"');
expect(r.out).toContain('storebound apple testflight groups sync');
});
});
describe('App Store Connect: a second run writes nothing', () => {
test('apple iap: product, localizations, price schedule, availability once', async () => {
const p = project(CONFIG);
@ -119,7 +130,7 @@ describe('App Store Connect: a second run writes nothing', () => {
for (const [name, run] of [
['cpp', () => appleCpp(p.ctx(['create']))],
['events', () => appleEvents(p.ctx(['create']))],
['testflight', () => appleTestflight(p.ctx(['groups']))],
['testflight', () => appleTestflight(p.ctx(['groups', 'sync']))],
['review-details', () => appleReviewDetails(p.ctx([]))],
['bundle', () => appleBundle(p.ctx([]))],
['offer-codes', () => appleOfferCodes(p.ctx([]))],