require 'spec_helper'
require_dependency 'topic_retriever'

describe TopicRetriever do

  let(:embed_url) { "http://eviltrout.com/2013/02/10/why-discourse-uses-emberjs.html" }
  let(:topic_retriever) { TopicRetriever.new(embed_url) }

  it "does not call perform_retrieve when embeddable_host is not set" do
    SiteSetting.expects(:embeddable_host).returns(nil)
    topic_retriever.expects(:perform_retrieve).never
    topic_retriever.retrieve
  end

  it "does not call perform_retrieve when embeddable_host is different than the host of the URL" do
    SiteSetting.expects(:embeddable_host).returns("eviltuna.com")
    topic_retriever.expects(:perform_retrieve).never
    topic_retriever.retrieve
  end

  it "does not call perform_retrieve when the embed url is not a url" do
    r = TopicRetriever.new("not a url")
    r.expects(:perform_retrieve).never
    r.retrieve
  end

  context "with a valid host" do
    before do
      SiteSetting.expects(:embeddable_host).returns("eviltrout.com")
    end

    it "calls perform_retrieve if it hasn't been retrieved recently" do
      topic_retriever.expects(:perform_retrieve).once
      topic_retriever.expects(:retrieved_recently?).returns(false)
      topic_retriever.retrieve
    end

    it "doesn't call perform_retrieve if it's been retrieved recently" do
      topic_retriever.expects(:perform_retrieve).never
      topic_retriever.expects(:retrieved_recently?).returns(true)
      topic_retriever.retrieve
    end

  end

end