import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { ModuleWithProviders, NgModule } from '@angular/core';
import { MOCK_CONFIG } from './mock-config.token';
import { MockInterceptor } from './mock.interceptor';
import { IMockConfig } from './mock.type';

@NgModule()
export class BixiMockModule {
  static forRoot(data: IMockConfig): ModuleWithProviders<BixiMockModule> {
    return {
      ngModule: BixiMockModule,
      providers: [
        { provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true },
        { provide: MOCK_CONFIG, useValue: data }
      ]
    };
  }

  static forChild(data: IMockConfig): ModuleWithProviders<BixiMockModule> {
    return {
      ngModule: BixiMockModule,
      providers: [
        { provide: HTTP_INTERCEPTORS, useClass: MockInterceptor, multi: true },
        { provide: MOCK_CONFIG, useValue: data }
      ]
    };
  }
}
