iPhone Duo: limit from Apple's reference data instead of a cut to 10, --duo-only; shared asset library helpers in their own module

This commit is contained in:
CRTkafa 2026-11-09 06:35:00 +07:00
parent 5cc3da486d
commit 108b362cd9
7 changed files with 102 additions and 75 deletions

View file

@ -1,6 +1,6 @@
import { describe, expect, test } from 'bun:test';
import { displaySets, duoDirs } from '../cli/apple/screenshots';
import { duoGroups, duoUpToDate } from '../cli/apple/duo-library';
import { duoGroups, duoLimit, duoUpToDate } from '../cli/apple/duo-library';
import { appleRules } from '../cli/lib/validate-rules';
import { checkCreate, createExperimentReq, defaultName, experimentFromApi, pickExperiment, planTreatmentLocales, planTreatments, startStopReq } from '../cli/lib/ppo';
import { validateConfig } from '../cli/lib/config';
@ -105,6 +105,9 @@ describe('iPhone Duo (foldable) sizes', () => {
expect(duoGroups(ref)).toEqual(['g-duo']);
expect(duoGroups([])).toEqual([]);
expect(duoGroups([{ attributes: { placementProfileGroups: [{ placementProfileGroupId: 'IPHONE_DUO_PROFILE', platform: 'IPHONE_APP_STORE', displayClassId: 'IPHONE_DUO' }] } }])).toEqual(['IPHONE_DUO_PROFILE']);
const lim = [{ attributes: { features: [{ featureId: 'IN_APP_EVENTS', placementPolicies: [{ placementType: 'APP_SCREENSHOT', groupLimits: [{ groupIds: ['g'], maxCount: 1 }] }] }, { featureId: 'APP_STORE_VERSIONS', placementPolicies: [{ placementType: 'APP_SCREENSHOT', groupLimits: [{ groupIds: ['g'], maxCount: 20 }] }] }] } }];
expect(duoLimit(lim, 'g')).toBe(20);
expect(duoLimit(lim, 'other')).toBeNull();
expect(duoUpToDate(['a', 'b'], ['a', 'b'])).toBe(true);
expect(duoUpToDate(['b', 'a'], ['a', 'b'])).toBe(false);
expect(duoUpToDate(['a', undefined], ['a', 'b'])).toBe(false);