import { describe, it, expect, beforeEach } from 'vitest';
import { AllDayLayoutEngine } from '../../src/utils/AllDayLayoutEngine';
import { setupMockDOM, createMockEvent } from '../helpers/dom-helpers';

describe('AllDayManager - Layout Engine Integration', () => {
  let layoutEngine: AllDayLayoutEngine;

  beforeEach(() => {
    setupMockDOM();
  });

  describe('Layout Calculation Integration', () => {
    it('should delegate layout calculation to AllDayLayoutEngine', () => {
      // Test AllDayLayoutEngine directly since calculateAllDayEventsLayout is private
      const event = createMockEvent('test', 'Test Event', '2024-09-24', '2024-09-24');
      const weekDates = ['2024-09-22', '2024-09-23', '2024-09-24', '2024-09-25', '2024-09-26'];

      layoutEngine = new AllDayLayoutEngine(weekDates);
      const layouts = layoutEngine.calculateLayout([event]);

      expect(layouts.length).toBe(1);
      expect(layouts[0].calenderEvent.id).toBe('test');
      expect(layouts[0].startColumn).toBe(3); // Sept 24 is column 3
      expect(layouts[0].row).toBe(1);
    });

    it('should handle empty event list', () => {
      const weekDates = ['2024-09-22', '2024-09-23', '2024-09-24', '2024-09-25', '2024-09-26'];
      layoutEngine = new AllDayLayoutEngine(weekDates);
      const layouts = layoutEngine.calculateLayout([]);

      expect(layouts.length).toBe(0);
    });

    it('should handle empty week dates', () => {
      const event = createMockEvent('test', 'Test Event', '2024-09-24', '2024-09-24');
      layoutEngine = new AllDayLayoutEngine([]);
      const layouts = layoutEngine.calculateLayout([event]);

      expect(layouts.length).toBe(0);
    });
  });
});
