fix: serialize profile reset operations
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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' });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user