import { test } from '@/manager/modules/invoice/invoice-fixtures';
import { expectSingleLocatorToHaveText } from '@/manager/shared/utils/expect-utils';
import { expect } from '@/shared/utils/matchers';

test('navigates from the list to the details page', async ({
  setupInvoiceCreateData,
  createInvoice,
  invoiceListPage,
}) => {
  const data = await setupInvoiceCreateData();
  const invoice = await createInvoice(data);

  await invoiceListPage.goto();

  const detailsPage = await test.step('navigate to invoice details page', async () => {
    await invoiceListPage.searchTextField.fill(invoice.number);
    return invoiceListPage.goToInvoiceDetailsPage(0);
  });

  await test.step('verify invoice details page', async () => {
    await expectSingleLocatorToHaveText(detailsPage.title, invoice.number);
  });
});

test('navigates from the list to the create dialog', async ({ invoiceListPage }) => {
  await invoiceListPage.goto();

  const createDialog = await test.step('open invoice create dialog from list', () =>
    invoiceListPage.openInvoiceCreateDialog());

  await test.step('verify invoice create dialog is open', async () => {
    await expect(createDialog.main).toBeVisible();
  });
});
