55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { buildRetryOperationPayload, buildRetryOperationSource } from '../src/orchestrator/profileRepository.js';
|
|
|
|
describe('buildRetryOperationPayload', () => {
|
|
it('pins the first failed operation as the install generation', () => {
|
|
expect(
|
|
buildRetryOperationPayload({ install: { scenarioId: 1010 } }, '11111111-1111-4111-8111-111111111111')
|
|
).toEqual({
|
|
install: { scenarioId: 1010 },
|
|
installOperationId: '11111111-1111-4111-8111-111111111111',
|
|
});
|
|
});
|
|
|
|
it('preserves the original install generation across chained retries', () => {
|
|
expect(
|
|
buildRetryOperationPayload(
|
|
{
|
|
install: { scenarioId: 903 },
|
|
installOperationId: 'original-install-generation',
|
|
},
|
|
'newer-failed-operation'
|
|
)
|
|
).toEqual({
|
|
install: { scenarioId: 903 },
|
|
installOperationId: 'original-install-generation',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('buildRetryOperationSource', () => {
|
|
it('pins a resolved branch operation to the original commit', () => {
|
|
expect(
|
|
buildRetryOperationSource({
|
|
sourceMode: 'BRANCH',
|
|
sourceRef: 'main',
|
|
resolvedCommitSha: 'abcdef0123456789abcdef0123456789abcdef01',
|
|
})
|
|
).toEqual({
|
|
sourceMode: 'COMMIT',
|
|
sourceRef: 'abcdef0123456789abcdef0123456789abcdef01',
|
|
});
|
|
});
|
|
|
|
it('keeps the requested source when resolution never completed', () => {
|
|
expect(
|
|
buildRetryOperationSource({
|
|
sourceMode: 'BRANCH',
|
|
sourceRef: 'main',
|
|
resolvedCommitSha: null,
|
|
})
|
|
).toEqual({ sourceMode: 'BRANCH', sourceRef: 'main' });
|
|
});
|
|
});
|