import { TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { provideMockActions } from '@ngrx/effects/testing';
import { hot } from '@nx/angular/testing';

import { <%= utils.classify(name) %>Effects } from './<%= name %>.effects';
import { <%= utils.classify(name) %>Actions } from './<%= name %>.actions';

import { Observable } from 'rxjs';

describe('<%= utils.classify(name) %>Effects', () => {
  let actions$: Observable<any>;
  let effects$: <%= utils.classify(name) %>Effects;

  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [
        <%= utils.classify(name) %>Effects,
        provideMockActions(() => actions$),
        provideMockStore()
      ]
    });

    effects$ = TestBed.get(<%= utils.classify(name) %>Effects);
  });

  describe('someEffect', () => {
    it('should work', () => {
      actions$ = hot('-a-|', { a: <%= utils.classify(name) %>Actions.load({}) });
      expect(effects$.load$).toBeObservable(
        hot('-a-|', { a: <%= utils.classify(name) %>Actions.loaded({}) })
      );
    });
  });
});
