export default (elm) => {
  if (!elm || (elm.tagName && elm.tagName.toLowerCase() === 'article')) {
    return null;
  }

  const content = elm.textContent || '';
  if (!content.match(/^https?:\/\//) || !isUrl(content)) {
    return null;
  }

  if (isImage(content)) {
    return {
      type: 'embed',
      embedType: 'image',
      src: content
    };
  }

  const parsed = parseEmbeds(content);
  if (!parsed || !isValidEmbedType(parsed)) {
    return null;
  }

  return objectAssign({}, parsed, {
    embedType: parsed.type,
    type: 'embed'
  });
};
test('parseUrl', t => {
  t.equals(parseUrl(), null);
  t.equals(parseUrl({}), null);
  t.equals(parseUrl({
    textContent: 'not a url'
  }), null);

  const fbUrl = 'https://www.facebook.com/zuck/posts/10102593740125791';
  const actualFb = parseUrl({
    textContent: fbUrl
  });
  const expectedFb = objectAssign(parseEmbeds(fbUrl), {
    type: 'embed',
    embedType: 'facebook'
  });
  t.deepEqual(actualFb, expectedFb);

  const imageUrl = 'http://avatarbox.net/avatars/img32/test_card_avatar_picture_88303.jpg';
  const actualImage = parseUrl({
    textContent: imageUrl
  });
  const expectedImage = {
    type: 'embed',
    embedType: 'image',
    src: imageUrl
  };
  t.deepEqual(actualImage, expectedImage);
  t.end();
});