package com.erp.invoice; import com.erp.invoice.model.Invoice; import com.erp.invoice.repository.InvoiceRepository; import com.erp.invoice.service.InvoiceService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest class InvoiceApiApplicationTests { @Autowired private InvoiceRepository invoiceRepository; @Autowired private InvoiceService invoiceService; @Test void contextLoads() { // Verifies application context loads successfully } @Test void databaseIsSeeded() { long count = invoiceRepository.count(); assertThat(count).isGreaterThan(0); } @Test void canFetchBySupplierId() { var results = invoiceService.getInvoicesBySupplierId("SUP-001"); assertThat(results).isNotEmpty(); results.forEach(inv -> assertThat(inv.getSupplierId()).isEqualTo("SUP-001")); } @Test void canFetchByStatus() { var results = invoiceService.getInvoicesByStatus(Invoice.InvoiceStatus.PAID); assertThat(results).isNotEmpty(); results.forEach(inv -> assertThat(inv.getStatus()).isEqualTo("PAID")); } @Test void canFetchByInvoiceId() { var result = invoiceService.getInvoiceByInvoiceId("INV-2024-0001"); assertThat(result).isPresent(); assertThat(result.get().getInvoiceId()).isEqualTo("INV-2024-0001"); } @Test void canGenerateSummary() { var summary = invoiceService.getSummary(); assertThat(summary.getTotalInvoices()).isGreaterThan(0); assertThat(summary.getCountByStatus()).isNotEmpty(); } }