beforeEach(async(() => {
   TestBed.configureTestingModule({
     imports: [
       BrowserModule,
       StoreModule.forRoot({ routerReducer }),
       EffectsModule.forRoot([ IdentityEffects ]),
       StoreDevtoolsModule.instrument({ maxAge: 50 }),
       BrowserAnimationsModule,
       FormsModule,
       CoreModule.forRoot([
         { provide: WindowService, useFactory: (win) },
         { provide: ConsoleService, useFactory: (cons) },
         { provide: LogTarget, useFactory: (consoleLogTarget), deps: [ ConsoleService ], multi: true },
       ]),
       RouterModule.forRoot(routes),
       MultilingualModule.forRoot(TEST_MULTILINGUAL_PROVIDERS),
       SampleModule,
       DialogModule,
       IdentityModule,
       StoreRouterConnectingModule,
       StoreModule.forFeature('sidebar', sidebarReducer),
       StoreModule.forFeature('toolbar', toolbarReducer),
       MATERIAL_MODULES,
       FlexLayoutModule,
       PLUGIN_MODULES,
     ],
     declarations: [
       AppComponent,
     ],
     providers: [
       { provide: APP_BASE_HREF, useValue: '/' },
     ],
   }).compileComponents();
 }));
	beforeEach(() => {
		TestBed.configureTestingModule({
			imports: [StoreModule.forRoot([]), StoreModule.forFeature('search', fromSearch.search)],
			providers: [SearchQueryResolver]
		});
		resolver = TestBed.get(SearchQueryResolver);
	});
  beforeEach(async(() => {
    // @ts-ignore
    TestBed.configureTestingModule({
      declarations: [SearchComponent],
      imports: [
        ReactiveFormsModule,
        RouterTestingModule,

        NoopAnimationsModule,
        MatCardModule,
        MatButtonModule,
        MatIconModule,
        MatInputModule,
        MatSelectModule,
        MatPaginatorModule,
        MatToolbarModule,

        ToolbarModule,

        TruncateModule,

        StoreModule.forRoot([]),
        StoreModule.forFeature('search', fromSearch.search)
      ]
    }).compileComponents();
  }));
	beforeEach(() => {
		TestBed.configureTestingModule({
			imports: [StoreModule.forRoot([]), StoreModule.forFeature('podcasts', reducer)],
			providers: [PodcastsResolver, { provide: PodcastService, useValue: podcastService }]
		});

		resolver = TestBed.get(PodcastsResolver);
	});
	beforeEach(() => {
		TestBed.configureTestingModule({
			imports: [StoreModule.forRoot([]), StoreModule.forFeature('podcast', reducer)],
			providers: [PodcastResolver]
		});

		resolver = TestBed.get(PodcastResolver);
	});
			async(() => {
				TestBed.configureTestingModule({
					imports: [
						MatToolbarModule,
						MatIconModule,
						RouterTestingModule,

						ToolbarModule,
						/* NgRx */
						StoreModule.forRoot({}),
						StoreModule.forFeature('podcasts', fromPodcasts.reducer)
					],
					declarations: [PodcastsComponent]
				}).compileComponents();
			})
  beforeEach(() => {
    const configServiceStub = {
      getSettings: (...params) => APP_NAME
    };

    TestBed.configureTestingModule({
      imports: [
        CoreModule.forRoot(),
        SyndesisStoreModule,
        SyndesisCommonModule.forRoot(),
        ModalModule.forRoot(),
        RouterTestingModule.withRoutes([]),
        CollapseModule.forRoot(),
        BsDropdownModule.forRoot(),
        NotificationModule,
        NgRxStoreModule.forRoot(platformReducer),
      ],
      providers: [
        ERROR_HANDLER_PROVIDERS,
        ConfigService,
        UserService,
        TestSupportService,
        NavigationService,
        ApiHttpService,
        { provide: ConfigService, useValue: configServiceStub }
      ],
      declarations: [AppComponent]
    });
    TestBed.compileComponents();
  });
 beforeEach(async(() => {
   TestBed.configureTestingModule({
     declarations: [ LandingComponent, LogInComponent, SignUpComponent, StatusComponent ],
     imports: [AppRoutingModule, FormsModule, StoreModule.forRoot(reducers)]
   })
   .compileComponents();
 }));
function entityServicesSetup() {
  const logger = jasmine.createSpyObj('Logger', ['error', 'log', 'warn']);

  TestBed.configureTestingModule({
    imports: [
      StoreModule.forRoot({}),
      EffectsModule.forRoot([]),
      NgrxDataModule.forRoot({
        entityMetadata: entityMetadata
      })
    ],
    /* tslint:disable-next-line:no-use-before-declare */
    providers: [
      { provide: EntityCacheEffects, useValue: {} },
      { provide: EntityDataService, useValue: null },
      { provide: Logger, useValue: logger }
    ]
  });

  const actions$: Observable<Action> = TestBed.get(Actions);
  const entityActionFactory: EntityActionFactory = TestBed.get(EntityActionFactory);
  const entityDispatcherFactory: EntityDispatcherFactory = TestBed.get(EntityDispatcherFactory);
  const entityServices: EntityServices = TestBed.get(EntityServices);
  const store: Store<EntityCache> = TestBed.get(Store);

  return {
    actions$,
    entityActionFactory,
    entityServices,
    store
  };
}
const testModuleConfig = (languages?: Array<ILang>) => {
  let providers = [
    provideConsoleTarget(LogLevel.Debug),
    { provide: LanguageViewHelper, useValue: null }
  ];
  if (languages) {
    providers.push({
      provide: Languages,
      useValue: languages
    });
  }
  TestBed.configureTestingModule({
    imports: [
      CoreModule.forRoot([
        { provide: WindowService, useValue: window },
        { provide: ConsoleService, useValue: console }
      ]),
      SharedModule,
      RouterTestingModule,
      AnalyticsModule,
      MultilingualModule,
      StoreModule.provideStore({ i18n: reducer })
    ],
    declarations: [TestComponent],
    providers
  });
  TestBed.compileComponents();
};