27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { describe, expect, test } from 'vitest';
|
|
import {
|
|
getModelAliasDraftSignature,
|
|
getStringSetSignature,
|
|
isOAuthEditorDirty,
|
|
} from '../src/features/authFiles/oauthEditorState';
|
|
|
|
describe('OAuth editor dirty state', () => {
|
|
test('compares model selections independent of order', () => {
|
|
expect(getStringSetSignature(['b', 'a'])).toBe(getStringSetSignature(['a', 'b']));
|
|
});
|
|
|
|
test('ignores generated row ids but preserves partial alias edits', () => {
|
|
expect(getModelAliasDraftSignature([{ id: 'one', name: '', alias: '', fork: true }])).toBe(
|
|
getModelAliasDraftSignature([])
|
|
);
|
|
expect(
|
|
getModelAliasDraftSignature([{ id: 'one', name: 'partial', alias: '', fork: true }])
|
|
).not.toBe(getModelAliasDraftSignature([]));
|
|
});
|
|
|
|
test('marks provider or content changes as dirty', () => {
|
|
expect(isOAuthEditorDirty('codex', 'codex', 'same', 'same')).toBe(false);
|
|
expect(isOAuthEditorDirty('codex', 'claude', 'same', 'same')).toBe(true);
|
|
expect(isOAuthEditorDirty('codex', 'codex', 'before', 'after')).toBe(true);
|
|
});
|
|
});
|