import { describe, expect, it } from 'vitest';
import {
  CrmDashboardRoute,
  crmDashboardWidgets,
  ensureCrmDashboardWidgetsRegistered,
} from '../src/dashboard-route';
import {
  CRM_BAR_CHART_WIDGET_TYPE,
  CRM_METRIC_WIDGET_TYPE,
  CRM_TEXT_WIDGET_TYPE,
} from '../src/dashboard-widget-types';
import { isCrmReportBackedDashboardWidget } from '../src/dashboard-widget-inspector';

describe('CRM dashboard route surfaces', () => {
  it('owns the dashboard route component and widget registry in app-packs source', () => {
    expect(typeof CrmDashboardRoute).toBe('function');

    ensureCrmDashboardWidgetsRegistered();

    expect(crmDashboardWidgets.getDefaultWidgetType()).toBe(CRM_METRIC_WIDGET_TYPE);
    expect(crmDashboardWidgets.getWidget(CRM_METRIC_WIDGET_TYPE)).toBeTypeOf('function');
    expect(crmDashboardWidgets.getWidget(CRM_BAR_CHART_WIDGET_TYPE)).toBeTypeOf('function');
  });

  it('keeps report-backed widget inspector policy in CRM source', () => {
    expect(isCrmReportBackedDashboardWidget(CRM_BAR_CHART_WIDGET_TYPE)).toBe(true);
    expect(isCrmReportBackedDashboardWidget(CRM_TEXT_WIDGET_TYPE)).toBe(false);
  });
});
