import {
  TestBed,
  waitForAsync,
} from '@angular/core/testing';
import { getTestScheduler } from 'jasmine-marbles';

import { Breadcrumb } from '../breadcrumbs/breadcrumb/breadcrumb.model';
import { ProcessBreadcrumbsService } from './process-breadcrumbs.service';
import { Process } from './processes/process.model';

describe('ProcessBreadcrumbsService', () => {
  let service: ProcessBreadcrumbsService;
  let exampleId;
  let exampleScriptName;
  let exampleProcess;
  let exampleURL;

  function init() {
    exampleId = '12345';
    exampleScriptName = 'Example Script';
    exampleProcess = Object.assign(new Process(), { processId: exampleId, scriptName: exampleScriptName });
    exampleURL = 'example.com';
  }

  beforeEach(waitForAsync(() => {
    init();
    TestBed.configureTestingModule({}).compileComponents();
  }));

  beforeEach(() => {
    service = new ProcessBreadcrumbsService();
  });

  describe('getBreadcrumbs', () => {
    it('should return a breadcrumb based on a id and scriptName of the process', () => {
      const breadcrumbs = service.getBreadcrumbs(exampleProcess, exampleURL);
      getTestScheduler().expectObservable(breadcrumbs).toBe('(a|)', { a: [new Breadcrumb(exampleId + ' - ' + exampleScriptName, exampleURL)] });
    });
  });
});