const path = require('path');
const shallow = require('../../../src/input/shallow');

test('shallow deps', async function() {
  const deps = await shallow(
    [path.resolve(path.join(__dirname, '../../fixture/es6.input.js'))],
    {}
  );
  expect(deps.length).toBe(1);
  expect(deps[0]).toBeTruthy();
});

test('shallow deps multi', async function() {
  const deps = await shallow(
    [
      path.resolve(path.join(__dirname, '../../fixture/es6.input.js')),
      path.resolve(path.join(__dirname, '../../fixture/simple.input.js'))
    ],
    {}
  );
  expect(deps.length).toBe(2);
  expect(deps[0]).toBeTruthy();
});

test('shallow deps directory', async function() {
  const deps = await shallow(
    [path.resolve(path.join(__dirname, '../../fixture/html'))],
    {}
  );
  expect(deps.length).toBe(1);
  expect(deps[0].file.match(/input.js/)).toBeTruthy();
});

test('throws on non-string or object input', function() {
  return shallow([true], {}).catch(err => {
    expect(err.message).toBe('Indexes should be either strings or objects');
  });
});

test('shallow deps literal', async function() {
  const obj = {
    file: 'foo.js',
    source: '//bar'
  };
  const deps = await shallow([obj], {});
  expect(deps[0]).toBe(obj);
});
