import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing'; // Necessário para simular HTTP
import { of } from 'rxjs'; // Necessário para simular respostas Observables

import { VigenciaComponent } from './vigencia'; // O nome correto da classe é VigenciaComponent
import { VigenciaService } from '../../services/vigencia.service'; // Ajuste o caminho se necessário

describe('VigenciaComponent', () => {
  let component: VigenciaComponent;
  let fixture: ComponentFixture<VigenciaComponent>;
  let vigenciaServiceMock: any;

  beforeEach(async () => {
    // 1. Criamos um "Dublê" (Mock) do serviço para não chamar o backend real no teste
    vigenciaServiceMock = {
      getClients: jasmine.createSpy('getClients').and.returnValue(of([])),
      getVigencia: jasmine.createSpy('getVigencia').and.returnValue(of({ items: [], total: 0 })),
      getGroups: jasmine.createSpy('getGroups').and.returnValue(of({ items: [], total: 0 }))
    };

    await TestBed.configureTestingModule({
      // 2. Importamos o componente (pois é standalone) e o módulo de teste HTTP
      imports: [ 
        VigenciaComponent, 
        HttpClientTestingModule 
      ],
      // 3. Injetamos o mock no lugar do serviço real
      providers: [
        { provide: VigenciaService, useValue: vigenciaServiceMock }
      ]
    })
    .compileComponents();

    fixture = TestBed.createComponent(VigenciaComponent);
    component = fixture.componentInstance;
    
    // O detectChanges dispara o ngOnInit. Como mockamos o serviço, ele não vai dar erro.
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});