require "rss-testcase"

require "rss/maker"

module RSS
  class TestMakerTaxonomy < TestCase

    def setup
      @uri = "http://purl.org/rss/1.0/modules/taxonomy/"

      @resources = [
        "http://meerkat.oreillynet.com/?c=cat23",
        "http://meerkat.oreillynet.com/?c=47",
        "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
      ]

      @topics = [
        {
          :link => "http://meerkat.oreillynet.com/?c=cat23",
          :title => "Data: XML",
          :description => "A Meerkat channel",
         },
        {
          :link => "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
          :title => "XML",
          :subject => "XML",
          :description => "DMOZ category",
          :topics => [
            "http://meerkat.oreillynet.com/?c=cat23",
            "http://dmoz.org/Computers/Data_Formats/Markup_Languages/SGML/",
            "http://dmoz.org/Computers/Programming/Internet/",
          ]
         },
       ]
    end

    def test_rss10
      rss = RSS::Maker.make("1.0") do |maker|
        setup_dummy_channel(maker)
        set_topics(maker.channel)

        setup_dummy_item(maker)
        set_topics(maker.items.last)

        setup_taxo_topic(maker, @topics)
      end
      assert_equal(@resources, rss.channel.taxo_topics.resources)
      assert_equal(@resources, rss.items.last.taxo_topics.resources)
      assert_taxo_topic(@topics, rss)
    end

    def _test_date
      t1 = Time.iso8601("2000-01-01T12:00:05+00:00")
      t2 = Time.iso8601("2005-01-01T12:00:05+00:00")

      rss = RSS::Maker.make("1.0") do |maker|
        setup_dummy_channel(maker)
        maker.channel.date = t1
        maker.channel.dc_dates.new_date do |date|
          date.value = t2
        end

        setup_dummy_item(maker)
        item = maker.items.last
        item.date = t2
        item.dc_dates.new_date do |date|
          date.value = t1
        end
      end
      assert_equal([t1, t2], rss.channel.dc_dates.collect{|x| x.value})
      assert_equal([t2, t1], rss.items.last.dc_dates.collect{|x| x.value})
    end

    private
    def set_topics(target, resources=@resources)
      resources.each do |value|
        target.taxo_topics << value
      end
    end
  end
end
