import { describe, expect, it } from 'vitest';
import {
  createDefaultLearnitiveProjectConfig,
  isLearnitiveProjectConfig,
} from '../project-config';

describe('Learnitive project config', () => {
  it('creates independent default objects', () => {
    const first = createDefaultLearnitiveProjectConfig();
    const second = createDefaultLearnitiveProjectConfig();

    first.assets.imageDirectory = 'images/';
    expect(second.assets.imageDirectory).toBe('figures/');
  });

  it('accepts safe root and image paths', () => {
    expect(isLearnitiveProjectConfig(createDefaultLearnitiveProjectConfig())).toBe(true);
  });


  it('persists a per-project remembered Docker fallback preference', () => {
    const config = createDefaultLearnitiveProjectConfig();
    config.cloudFallbackSticky = true;
    expect(isLearnitiveProjectConfig(config)).toBe(true);
    expect(isLearnitiveProjectConfig({ ...config, cloudFallbackSticky: 'yes' })).toBe(false);
  });

  it('rejects escaping project paths', () => {
    expect(
      isLearnitiveProjectConfig({
        version: 1,
        rootFile: '../main.tex',
        compiler: 'pdflatex',
        assets: { imageDirectory: 'figures/' },
      }),
    ).toBe(false);
  });
});
