text: import log from 'loglevel';
  import icon from './icon';
  import { inferIcon } from './../../infer';
  
  jest.mock('./../../infer/inferIcon');
  jest.mock('loglevel');
  
  const mockedResult = 'icon path';
  
  describe('when the icon parameter is passed', () => {
    test('it should return the icon parameter', () => {
      expect(inferIcon).toHaveBeenCalledTimes(0);
  
      const params = { icon: './icon.png' };
      expect(icon(params)).resolves.toBe(params.icon);
    });
  });
  
  describe('when the icon parameter is not passed', () => {
    test('it should call inferIcon', () => {
      inferIcon.mockImplementationOnce(() => Promise.resolve(mockedResult));
      const params = { targetUrl: 'some url', platform: 'mac' };
  
      return icon(params).then((result) => {
        expect(result).toBe(mockedResult);
        expect(inferIcon).toHaveBeenCalledWith(params.targetUrl, params.platform);
      });
    });
  
    describe('when inferIcon resolves with an error', () => {
      test('it should handle the error', () => {
        inferIcon.mockImplementationOnce(() => Promise.reject(new Error('some error')));
        const params = { targetUrl: 'some url', platform: 'mac' };
  
        return icon(params).then((result) => {
          expect(result).toBe(null);
          expect(inferIcon).toHaveBeenCalledWith(params.targetUrl, params.platform);
          expect(log.warn).toHaveBeenCalledTimes(1);
        });
      });
    });
  });
  