~ubuntu-branches/ubuntu/hardy/ruby1.8/hardy-updates

« back to all changes in this revision

Viewing changes to test/rss/test_trackback.rb

  • Committer: Bazaar Package Importer
  • Author(s): akira yamada
  • Date: 2007-03-13 22:11:58 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20070313221158-h3oql37brlaf2go2
Tags: 1.8.6-1
* new upstream version, 1.8.6.
* libruby1.8 conflicts with libopenssl-ruby1.8 (< 1.8.6) (closes: #410018)
* changed packaging style to cdbs from dbs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
require "cgi"
 
2
require "rexml/document"
 
3
 
 
4
require "rss-testcase"
 
5
 
 
6
require "rss/1.0"
 
7
require "rss/2.0"
 
8
require "rss/trackback"
 
9
 
 
10
module RSS
 
11
  class TestTrackBack < TestCase
 
12
    
 
13
    def setup
 
14
      @prefix = "trackback"
 
15
      @uri = "http://madskills.com/public/xml/rss/module/trackback/"
 
16
      
 
17
      @parents = %w(item)
 
18
      
 
19
      @elems = {
 
20
        :ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
 
21
        :about => "http://foo.com/trackback/tb.cgi?tb_id=20020923",
 
22
      }
 
23
      
 
24
      @content_nodes = @elems.collect do |name, value|
 
25
        "<#{@prefix}:#{name} rdf:resource=\"#{CGI.escapeHTML(value.to_s)}\"/>"
 
26
      end.join("\n")
 
27
      
 
28
      @content_nodes2 = @elems.collect do |name, value|
 
29
        "<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
 
30
      end.join("\n")
 
31
      
 
32
      @rss_source = make_RDF(<<-EOR, {@prefix =>  @uri})
 
33
#{make_channel()}
 
34
#{make_image()}
 
35
#{make_item(@content_nodes)}
 
36
#{make_textinput()}
 
37
EOR
 
38
 
 
39
      @rss = Parser.parse(@rss_source)
 
40
 
 
41
      @rss20_source = make_rss20(nil, {@prefix =>  @uri}) do
 
42
        make_channel20(nil) do
 
43
          make_item20(@content_nodes2)
 
44
        end
 
45
      end
 
46
 
 
47
      @rss20 = Parser.parse(@rss20_source, false)
 
48
    end
 
49
 
 
50
    def test_parser
 
51
 
 
52
      assert_nothing_raised do
 
53
        Parser.parse(@rss_source)
 
54
      end
 
55
 
 
56
      @elems.find_all{|k, v| k == :ping}.each do |tag, value|
 
57
        assert_too_much_tag(tag.to_s, "item") do
 
58
          Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
 
59
#{make_channel()}
 
60
#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
 
61
  CGI.escapeHTML(value.to_s) +
 
62
  "\"/>") * 2)}
 
63
EOR
 
64
        end
 
65
      end
 
66
 
 
67
      @elems.find_all{|k, v| k == :about}.each do |tag, value|
 
68
        assert_missing_tag("trackback:ping", "item") do
 
69
          Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
 
70
#{make_channel()}
 
71
#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
 
72
  CGI.escapeHTML(value.to_s) +
 
73
  "\"/>") * 2)}
 
74
EOR
 
75
        end
 
76
 
 
77
      end
 
78
 
 
79
    end
 
80
  
 
81
    def test_accessor
 
82
      
 
83
      new_value = {
 
84
        :ping => "http://baz.com/trackback/tb.cgi?tb_id=20030808",
 
85
        :about => "http://hoge.com/trackback/tb.cgi?tb_id=90030808",
 
86
      }
 
87
      
 
88
      @elems.each do |name, value|
 
89
        @parents.each do |parent|
 
90
          accessor = "#{RSS::TRACKBACK_PREFIX}_#{name}"
 
91
          target = @rss.__send__(parent)
 
92
          target20 = @rss20.channel.__send__(parent, -1)
 
93
          assert_equal(value, target.__send__(accessor))
 
94
          assert_equal(value, target20.__send__(accessor))
 
95
          if name == :about
 
96
            # abount is zero or more
 
97
            target.__send__("#{accessor}=", 0, new_value[name].to_s)
 
98
            target20.__send__("#{accessor}=", 0, new_value[name].to_s)
 
99
          else
 
100
            target.__send__("#{accessor}=", new_value[name].to_s)
 
101
            target20.__send__("#{accessor}=", new_value[name].to_s)
 
102
          end
 
103
          assert_equal(new_value[name], target.__send__(accessor))
 
104
          assert_equal(new_value[name], target20.__send__(accessor))
 
105
        end
 
106
      end
 
107
      
 
108
    end
 
109
 
 
110
    def test_to_s
 
111
      
 
112
      @elems.each do |name, value|
 
113
        excepted = %Q!<#{@prefix}:#{name} rdf:resource="#{CGI.escapeHTML(value)}"/>!
 
114
        @parents.each do |parent|
 
115
          meth = "#{RSS::TRACKBACK_PREFIX}_#{name}_element"
 
116
          meth << "s" if name == :about
 
117
          assert_equal(excepted, @rss.__send__(parent).__send__(meth))
 
118
        end
 
119
      end
 
120
      
 
121
      REXML::Document.new(@rss_source).root.each_element do |parent|
 
122
        if @parents.include?(parent.name)
 
123
          parent.each_element do |elem|
 
124
            if elem.namespace == @uri
 
125
              assert_equal(elem.attributes["resource"], @elems[elem.name.intern])
 
126
            end
 
127
          end
 
128
        end
 
129
      end
 
130
      
 
131
    end
 
132
    
 
133
  end
 
134
end
 
135