import { describe, expect, it } from 'vitest' import { conflictNamesFromListing, formatOverwriteMessage, transferDestinationPath, } from '../../../src/components/sftp/transferConflicts' describe('transferConflicts', () => { it('builds remote and local destination paths', () => { expect(transferDestinationPath('upload', '/', 'a.txt')).toBe('/a.txt') expect(transferDestinationPath('upload', '/root/', 'a.txt')).toBe('/root/a.txt') expect(transferDestinationPath('download', '/Users/test', 'a.txt')).toBe('/Users/test/a.txt') }) it('finds conflicts from a listing', () => { expect( conflictNamesFromListing(['a.txt', 'b.txt', 'c.txt'], [{ name: 'b.txt' }, { name: 'c.txt' }]) ).toEqual(['b.txt', 'c.txt']) }) it('formats overwrite copy for one and many', () => { const t = (key: string, opts?: Record) => `${key}:${opts ? JSON.stringify(opts) : ''}` expect(formatOverwriteMessage(['only.log'], 'upload', t)).toContain('overwriteOneRemote') expect(formatOverwriteMessage(['a', 'b', 'c'], 'download', t)).toContain('overwriteManyLocal') }) })