* lib/rss/maker/dublincore.rb: _really_ supported multiple Dublin

Core items.

* test/rss/rss-assertions.rb (assert_multiple_dublin_core): added
  an assertion for testing multiple Dublin Core items.

* test/rss/test_maker_dc.rb (test_rss10_multiple): added a test
  for making multiple Dublin Core items.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
kou 2005-04-07 02:55:48 +00:00
parent f1587ee5a0
commit c3410fc1e1
4 changed files with 81 additions and 7 deletions

View file

@ -394,6 +394,16 @@ module RSS
end
end
def assert_multiple_dublin_core(elems, target)
_wrap_assertion do
elems.each do |name, values, plural|
plural ||= "#{name}s"
actual = target.__send__("dc_#{plural}").collect{|x| x.value}
assert_equal(values, actual)
end
end
end
def assert_syndication(elems, target)
_wrap_assertion do
elems.each do |name, value|

View file

@ -56,16 +56,66 @@ module RSS
assert_dublin_core(@elements, rss.textinput)
end
def test_rss10_multiple
elems = []
@elements.each do |name, value|
plural = name.to_s + (name == :rights ? "es" : "s")
values = [value]
if name == :date
values << value + 60
else
values << value * 2
end
elems << [name, values, plural]
end
rss = RSS::Maker.make("1.0") do |maker|
setup_dummy_channel(maker)
set_multiple_elements(maker.channel, elems)
setup_dummy_image(maker)
set_multiple_elements(maker.image, elems)
setup_dummy_item(maker)
item = maker.items.last
elems.each do |name, values, plural|
dc_elems = item.__send__("dc_#{plural}")
values.each do |value|
elem = dc_elems.__send__("new_#{name}")
elem.value = value
end
end
setup_dummy_textinput(maker)
set_multiple_elements(maker.textinput, elems)
end
assert_multiple_dublin_core(elems, rss.channel)
assert_multiple_dublin_core(elems, rss.image)
assert_multiple_dublin_core(elems, rss.items.last)
assert_multiple_dublin_core(elems, rss.textinput)
end
private
def accessor_name(name)
"dc_#{name}"
end
def set_elements(target)
@elements.each do |name, value|
def set_elements(target, elems=@elements)
elems.each do |name, value|
target.__send__("#{accessor_name(name)}=", value)
end
end
def set_multiple_elements(target, elems)
elems.each do |name, values, plural|
plural ||= "#{name}s"
dc_elems = target.__send__("dc_#{plural}")
values.each do |value|
new_dc_elem = dc_elems.__send__("new_#{name}")
new_dc_elem.value = value
end
end
end
end
end