import { ProcessBreadcrumbResolver } from './process-breadcrumb.resolver';
import { Process } from './processes/process.model';
import { ProcessDataService } from '../core/data/processes/process-data.service';
import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';

describe('ProcessBreadcrumbResolver', () => {
  describe('resolve', () => {
    let resolver: ProcessBreadcrumbResolver;
    let processDataService: ProcessDataService;
    let processBreadcrumbService: any;
    let process: Process;
    let id: string;
    let path: string;
    beforeEach(() => {
      id = '12345';
      process = Object.assign(new Process(), { id });
      path = 'rest.com/path/to/breadcrumb/12345';
      processBreadcrumbService = {};
      processDataService = {
        findById: () => createSuccessfulRemoteDataObject$(process)
      } as any;
      resolver = new ProcessBreadcrumbResolver(processBreadcrumbService, processDataService);
    });

    it('should resolve the breadcrumb config', (done) => {
      const resolvedConfig = resolver.resolve({ data: { breadcrumbKey: process }, params: { id: id} } as any, {url: path} as any);
      const expectedConfig = { provider: processBreadcrumbService, key: process, url: path};
      resolvedConfig.subscribe((config) => {
        expect(config).toEqual(expectedConfig);
        done();
      });
    });

    it('should resolve throw an error when no breadcrumbKey is defined', () => {
      expect(() => {
        resolver.resolve({ data: {} } as any, undefined);
      }).toThrow();
    });
  });
});