describe('Relatórios - Relatório Geral', () => {
  it('Popula cards e a tabela de dados com agregados', () => {
    cy.intercept('GET', '/api/financeiro/relatorios/receber/resumo*', {
      statusCode: 200,
      body: { totals: { total_geral: 5000, pendente: 3000, vencido: 500, recebido: 1500 }, series: [] }
    }).as('recResumo');

    cy.intercept('GET', '/api/financeiro/relatorios/pagar/resumo*', {
      statusCode: 200,
      body: { totals: { total_geral: 3200, pendente: 1200, vencido: 200, pago: 1800 }, series: [] }
    }).as('payResumo');

    cy.intercept('GET', '/api/financeiro/relatorios/fluxo*', {
      statusCode: 200,
      body: { totals: { entradas: 4200, saidas: 2800, saldo_periodo: 1400 }, series: [] }
    }).as('fluxoResumo');

    cy.visit('/financeiro/relatorios');
    cy.get('#dataInicio').clear().type('2024-01-01');
    cy.get('#dataFim').clear().type('2024-01-31');

    cy.get('#tipoRelatorio').select('Relatório Geral');
    cy.get('#btnGerar').click();

    cy.wait(['@recResumo','@payResumo','@fluxoResumo']);

    cy.get('#totalReceber').contains('R$').should('exist');
    cy.get('#totalPagar').contains('R$').should('exist');
    cy.get('#saldoProjetado').contains('R$').should('exist');

    cy.get('#tabelaHeader').contains('Métrica').should('exist');
    cy.get('#tabelaBody').contains('Total a Receber').should('exist');
    cy.get('#tabelaBody').contains('Total a Pagar').should('exist');
    cy.get('#tabelaBody').contains('Saldo no período').should('exist');
  });
});