import { beforeEach, describe, expect, it } from 'vitest';
import { hostPanelRenderers } from '@nexuscrm/host-sdk';
import { CRM_ACTIVITY_TIMELINE_RENDERER_ID } from '../src/renderer-ids';
import {
  clearRecordPanelsForTest,
  getRenderableRecordPanels,
  getRecordPanelRenderer,
  type AppRecordPanelHostRenderer,
} from '../src/platform/features/record/panels/recordPanelRegistry';

const ActivityTimelineHostRenderer: AppRecordPanelHostRenderer = () => null;

describe('record panel registry host compatibility', () => {
  beforeEach(() => {
    clearRecordPanelsForTest();
  });

  it('uses host-registered panel renderers when resolving renderable record panels', () => {
    expect(getRecordPanelRenderer(CRM_ACTIVITY_TIMELINE_RENDERER_ID)).toBeUndefined();

    hostPanelRenderers.register(CRM_ACTIVITY_TIMELINE_RENDERER_ID, ActivityTimelineHostRenderer);

    expect(getRecordPanelRenderer(CRM_ACTIVITY_TIMELINE_RENDERER_ID)).toBeTypeOf('function');
    expect(getRenderableRecordPanels({
      recordPanels: [{
        id: 'crm.activityTimeline',
        rendererId: CRM_ACTIVITY_TIMELINE_RENDERER_ID,
        tabId: 'activity',
        tabLabel: 'Activity',
      }],
    } as never).map(panel => panel.id)).toEqual(['crm.activityTimeline']);
  });
});
