describe('Relatórios - Análise Visual (fallback sem fluxo)', () => {
  it('Renderiza usando dados de Receber/Pagar quando fluxo retorna 404', () => {
    // Fluxo falha (ex.: tabela bank_transactions ausente)
    cy.intercept('GET', '/api/financeiro/relatorios/fluxo*', {
      statusCode: 404,
      body: { error: 'Tabela bank_transactions não encontrada' }
    }).as('fluxoFalha');

    // Resumo Receber com série de recebidos
    cy.intercept('GET', '/api/financeiro/relatorios/receber/resumo*', {
      statusCode: 200,
      body: {
        totals: { recebido: 2500, pendente: 1000, vencido: 300, total_geral: 3800 },
        series: [
          { data: '2024-01-05', a_receber: 700, recebidos: 400 },
          { data: '2024-01-12', a_receber: 600, recebidos: 500 },
          { data: '2024-01-25', a_receber: 500, recebidos: 600 }
        ]
      }
    }).as('recResumo');

    // Resumo Pagar com série de pagos
    cy.intercept('GET', '/api/financeiro/relatorios/pagar/resumo*', {
      statusCode: 200,
      body: {
        totals: { pago: 1800, pendente: 900, vencido: 200, total_geral: 2900 },
        series: [
          { data: '2024-01-07', a_pagar: 800, pagos: 300 },
          { data: '2024-01-12', a_pagar: 600, pagos: 400 },
          { data: '2024-01-20', a_pagar: 500, pagos: 500 }
        ]
      }
    }).as('payResumo');

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

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

    // Deve renderizar barras de Entradas vs Saídas via fallback
    cy.get('#graficoEntradaSaida').find('div[role="img"]').should('have.length', 2);
    cy.get('#graficoEntradaSaidaLegend').contains('Entradas').should('exist');
    cy.get('#graficoEntradaSaidaLegend').contains('Saídas').should('exist');

    // Evolução mensal deve ter pelo menos 1 mês agregado
    cy.get('#graficoEvolucao').find('div').should('exist');
    cy.get('#graficoEvolucaoLegend').contains('Entradas').should('exist');
    cy.get('#graficoEvolucaoLegend').contains('Saídas').should('exist');
  });
});