1# frozen_string_literal: false
2require "cgi"
3require "rexml/document"
4
5require_relative "rss-testcase"
6
7require "rss/1.0"
8require "rss/slash"
9
10module RSS
11  class TestSlash < TestCase
12    def setup
13      @elements = {
14        "section" => "articles",
15        "department" => "not-an-ocean-unless-there-are-lobsters",
16        "comments" => 177,
17        "hit_parades" => [177, 155, 105, 33, 6, 3, 0],
18      }
19
20      slash_nodes = @elements.collect do |name, value|
21        if name == "hit_parades"
22          name = "hit_parade"
23          value = value.join(",")
24        end
25        "<slash:#{name}>#{value}</slash:#{name}>"
26      end.join("\n")
27
28      slash_ns = {"slash" => "http://purl.org/rss/1.0/modules/slash/"}
29      @source = make_RDF(<<-EOR, slash_ns)
30#{make_channel}
31#{make_image}
32#{make_item(slash_nodes)}
33#{make_textinput}
34EOR
35    end
36
37    def test_parser
38      rss = RSS::Parser.parse(@source)
39
40      assert_not_nil(rss)
41
42      item = rss.items[0]
43      assert_not_nil(item)
44
45      assert_slash_elements(item)
46    end
47
48    def test_to_s
49      rss = RSS::Parser.parse(@source)
50      rss = RSS::Parser.parse(rss.to_s)
51
52      assert_not_nil(rss)
53
54      item = rss.items[0]
55      assert_not_nil(item)
56
57      assert_slash_elements(item)
58    end
59
60    private
61    def assert_slash_elements(target)
62      super(@elements, target)
63    end
64  end
65end
66