import { describe, expect, test } from 'vitest'; import { PUBLISH_STEP_SPINE, PublishStepId } from './index.js'; describe('PublishStepId', () => { test('exposes the stable wire id for every publish step', () => { expect(PublishStepId).toEqual({ build: 'build', databaseMigration: 'database_migration', databaseProvisioning: 'database_provisioning', policyGatesBeforeBuild: 'policy_gates:before_build', policyGatesBeforeDeploy: 'policy_gates:before_deploy', publish: 'publish' }); }); test('the spine is made up only of known step ids, in fixed order', () => { expect(PUBLISH_STEP_SPINE).toEqual([ PublishStepId.policyGatesBeforeBuild, PublishStepId.build, PublishStepId.policyGatesBeforeDeploy, PublishStepId.databaseProvisioning, PublishStepId.databaseMigration, PublishStepId.publish ]); }); test('every known step id appears in the spine exactly once', () => { const ids = Object.values(PublishStepId); for (const id of ids) { expect(PUBLISH_STEP_SPINE.filter((spineId) => spineId === id)).toHaveLength(1); } expect(PUBLISH_STEP_SPINE).toHaveLength(ids.length); }); });