import { describe, expect, it } from 'vitest';
import { commonAncestorDir, resolveGroupCwd } from '../src/core/group-session.js';

describe('commonAncestorDir', () => {
  it('renvoie le chemin lui-même pour un seul répertoire', () => {
    expect(commonAncestorDir(['/home/johan/WebstormProjects/arboretum'])).toBe('/home/johan/WebstormProjects/arboretum');
  });

  it('renvoie le parent commun de deux siblings', () => {
    expect(commonAncestorDir(['/p/a', '/p/b'])).toBe('/p');
  });

  it('gère un répertoire ancêtre d’un autre', () => {
    expect(commonAncestorDir(['/p/a', '/p/a/b'])).toBe('/p/a');
  });

  it('compare par segments, pas par préfixe de chaîne', () => {
    // /a/bc n'est PAS un ancêtre de /a/bcd : ancêtre commun = /a
    expect(commonAncestorDir(['/a/bc', '/a/bcd'])).toBe('/a');
  });

  it('renvoie la racine quand aucun segment n’est commun', () => {
    expect(commonAncestorDir(['/x/a', '/y/b'])).toBe('/');
  });
});

describe('resolveGroupCwd', () => {
  it('mono-repo : cwd = le repo, addDirs sera filtré à vide par PtyManager', () => {
    const { cwd, addDirs } = resolveGroupCwd(['/p/a']);
    expect(cwd).toBe('/p/a');
    expect(addDirs).toEqual(['/p/a']);
  });

  it('multi-repos sous un parent commun : cwd = parent, addDirs = tous les repos', () => {
    const dirs = ['/home/johan/WebstormProjects/beehelp_lambdas', '/home/johan/WebstormProjects/beehelp_api'];
    const { cwd, addDirs } = resolveGroupCwd(dirs);
    expect(cwd).toBe('/home/johan/WebstormProjects');
    expect(addDirs).toEqual(dirs);
  });

  it('garde-fou : repos sur des racines différentes → retombe sur le premier répertoire', () => {
    const { cwd } = resolveGroupCwd(['/x/a', '/y/b']);
    expect(cwd).toBe('/x/a');
  });
});
