1require "rss-testcase"
2
3require "rss/maker"
4
5module RSS
6  class TestSetupMaker09 < TestCase
7
8    def test_setup_maker_channel
9      title = "fugafuga"
10      link = "http://hoge.com"
11      description = "fugafugafugafuga"
12      language = "ja"
13      copyright = "foo"
14      managingEditor = "bar"
15      webMaster = "web master"
16      rating = '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))'
17      docs = "http://foo.com/doc"
18      skipDays = [
19        "Sunday",
20        "Monday",
21      ]
22      skipHours = [
23        "0",
24        "13",
25      ]
26      pubDate = Time.now
27      lastBuildDate = Time.now
28
29      rss = RSS::Maker.make("0.91") do |maker|
30        maker.channel.title = title
31        maker.channel.link = link
32        maker.channel.description = description
33        maker.channel.language = language
34        maker.channel.copyright = copyright
35        maker.channel.managingEditor = managingEditor
36        maker.channel.webMaster = webMaster
37        maker.channel.rating = rating
38        maker.channel.docs = docs
39        maker.channel.pubDate = pubDate
40        maker.channel.lastBuildDate = lastBuildDate
41
42        skipDays.each do |day|
43          maker.channel.skipDays.new_day do |new_day|
44            new_day.content = day
45          end
46        end
47        skipHours.each do |hour|
48          maker.channel.skipHours.new_hour do |new_hour|
49            new_hour.content = hour
50          end
51        end
52
53        setup_dummy_image(maker)
54      end
55
56      assert_not_set_error("maker.image", %w(title url)) do
57        RSS::Maker.make("0.91") do |maker|
58          rss.channel.setup_maker(maker)
59        end
60      end
61
62      new_rss = RSS::Maker.make("0.91") do |maker|
63        rss.channel.setup_maker(maker)
64        setup_dummy_image(maker)
65      end
66      channel = new_rss.channel
67
68      assert_equal(title, channel.title)
69      assert_equal(link, channel.link)
70      assert_equal(description, channel.description)
71      assert_equal(language, channel.language)
72      assert_equal(copyright, channel.copyright)
73      assert_equal(managingEditor, channel.managingEditor)
74      assert_equal(webMaster, channel.webMaster)
75      assert_equal(rating, channel.rating)
76      assert_equal(docs, channel.docs)
77      assert_equal(pubDate, channel.pubDate)
78      assert_equal(lastBuildDate, channel.lastBuildDate)
79
80      skipDays.each_with_index do |day, i|
81        assert_equal(day, channel.skipDays.days[i].content)
82      end
83      skipHours.each_with_index do |hour, i|
84        assert_equal(hour.to_i, channel.skipHours.hours[i].content)
85      end
86
87      assert(channel.items.empty?)
88      assert_nil(channel.textInput)
89    end
90
91    def test_setup_maker_image
92      title = "fugafuga"
93      link = "http://hoge.com"
94      url = "http://hoge.com/hoge.png"
95      width = "144"
96      height = "400"
97      description = "an image"
98
99      rss = RSS::Maker.make("0.91") do |maker|
100        setup_dummy_channel(maker)
101        maker.channel.link = link
102
103        maker.image.title = title
104        maker.image.url = url
105        maker.image.width = width
106        maker.image.height = height
107        maker.image.description = description
108      end
109
110      new_rss = RSS::Maker.make("0.91") do |maker|
111        rss.channel.setup_maker(maker)
112        rss.image.setup_maker(maker)
113      end
114
115      image = new_rss.image
116      assert_equal(title, image.title)
117      assert_equal(link, image.link)
118      assert_equal(url, image.url)
119      assert_equal(width.to_i, image.width)
120      assert_equal(height.to_i, image.height)
121      assert_equal(description, image.description)
122    end
123
124    def test_setup_maker_textinput
125      title = "fugafuga"
126      description = "text hoge fuga"
127      name = "hoge"
128      link = "http://hoge.com"
129
130      rss = RSS::Maker.make("0.91") do |maker|
131        setup_dummy_channel(maker)
132        setup_dummy_image(maker)
133
134        maker.textinput.title = title
135        maker.textinput.description = description
136        maker.textinput.name = name
137        maker.textinput.link = link
138      end
139
140      new_rss = RSS::Maker.make("0.91") do |maker|
141        rss.channel.setup_maker(maker)
142        rss.image.setup_maker(maker)
143        rss.textinput.setup_maker(maker)
144      end
145
146      textInput = new_rss.channel.textInput
147      assert_equal(title, textInput.title)
148      assert_equal(description, textInput.description)
149      assert_equal(name, textInput.name)
150      assert_equal(link, textInput.link)
151    end
152
153    def test_setup_maker_items(for_backward_compatibility=false)
154      title = "TITLE"
155      link = "http://hoge.com/"
156      description = "text hoge fuga"
157
158      item_size = 5
159
160      rss = RSS::Maker.make("0.91") do |maker|
161        setup_dummy_channel(maker)
162
163        item_size.times do |i|
164          maker.items.new_item do |item|
165            item.title = "#{title}#{i}"
166            item.link = "#{link}#{i}"
167            item.description = "#{description}#{i}"
168          end
169        end
170
171        setup_dummy_image(maker)
172      end
173
174      new_rss = RSS::Maker.make("0.91") do |maker|
175        rss.channel.setup_maker(maker)
176
177        rss.items.each do |item|
178          if for_backward_compatibility
179            item.setup_maker(maker)
180          else
181            item.setup_maker(maker.items)
182          end
183        end
184
185        rss.image.setup_maker(maker)
186      end
187
188      assert_equal(item_size, new_rss.items.size)
189      new_rss.items.each_with_index do |item, i|
190        assert_equal("#{title}#{i}", item.title)
191        assert_equal("#{link}#{i}", item.link)
192        assert_equal("#{description}#{i}", item.description)
193      end
194    end
195
196    def test_setup_maker_items_backward_compatibility
197      test_setup_maker_items(true)
198    end
199
200    def test_setup_maker
201      encoding = "EUC-JP"
202      standalone = true
203
204      href = 'a.xsl'
205      type = 'text/xsl'
206      title = 'sample'
207      media = 'printer'
208      charset = 'UTF-8'
209      alternate = 'yes'
210
211      rss = RSS::Maker.make("0.91") do |maker|
212        maker.encoding = encoding
213        maker.standalone = standalone
214
215        maker.xml_stylesheets.new_xml_stylesheet do |xss|
216          xss.href = href
217          xss.type = type
218          xss.title = title
219          xss.media = media
220          xss.charset = charset
221          xss.alternate = alternate
222        end
223
224        setup_dummy_channel(maker)
225        setup_dummy_image(maker)
226      end
227
228      new_rss = RSS::Maker.make("0.91") do |maker|
229        rss.setup_maker(maker)
230      end
231
232      assert_equal("0.91", new_rss.rss_version)
233      assert_equal(encoding, new_rss.encoding)
234      assert_equal(standalone, new_rss.standalone)
235
236      xss = rss.xml_stylesheets.first
237      assert_equal(1, rss.xml_stylesheets.size)
238      assert_equal(href, xss.href)
239      assert_equal(type, xss.type)
240      assert_equal(title, xss.title)
241      assert_equal(media, xss.media)
242      assert_equal(charset, xss.charset)
243      assert_equal(alternate, xss.alternate)
244    end
245  end
246end
247