import { test, expect } from '../../../fixtures/auth.fixture.js';

/**
 * TC-SUP – Lieferanten
 * Quelle: GitHub Issue #63
 */
test.describe('TC-SUP: Lieferanten', () => {
  test('TC-SUP-01: Lieferant erstellen – Pflichtfelder', async ({ request, adminToken }) => {
    const res = await request.post('/api/suppliers', {
      data: { name: `Frisch AG ${Date.now()}`, phone: '+49 30 12345' },
      headers: { Authorization: `Bearer ${adminToken}` },
    });
    expect(res.status()).toBe(201);
    const body = await res.json();
    expect(body.status).toBe('AKTIV');
  });

  test('TC-SUP-02: Lieferant erscheint in Liste nach Erstellung', async ({ request, adminToken }) => {
    const name = `ListTest-${Date.now()}`;
    await request.post('/api/suppliers', {
      data: { name, phone: '+49 30 99999' },
      headers: { Authorization: `Bearer ${adminToken}` },
    });
    const res = await request.get('/api/suppliers', {
      headers: { Authorization: `Bearer ${adminToken}` },
    });
    expect(res.status()).toBe(200);
    const body = await res.json();
    const found = (Array.isArray(body) ? body : body.content ?? []).some(
      (s: { name: string }) => s.name === name,
    );
    expect(found).toBe(true);
  });

  test('TC-SUP-03: Lieferant ohne Name wird abgelehnt', async ({ request, adminToken }) => {
    const res = await request.post('/api/suppliers', {
      data: { phone: '+49 30 12345' },
      headers: { Authorization: `Bearer ${adminToken}` },
    });
    expect(res.status()).toBe(400);
  });

  // TODO: Weitere TCs aus Issue #63 nach Implementierung hinzufügen
  // TC-SUP-04: Doppelter Name abgelehnt
  // TC-SUP-05: Lieferant deaktivieren
  // TC-SUP-06: Filter nach Name
});
