summaryrefslogtreecommitdiff
path: root/test/rss/rss-assertions.rb
blob: db9c39dd28fee36088b25d46ec8e5c34d5a32dce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# -*- tab-width: 2 -*- vim: ts=2

module RSS
	module Assertions
		
		def assert_parse(rss, assert_method, *args)
			send("assert_#{assert_method}", *args) do
				::RSS::Parser.parse(rss)
			end
			send("assert_#{assert_method}", *args) do
				::RSS::Parser.parse(rss, false).validate
			end
		end
		
		def assert_ns(prefix, uri)
			_wrap_assertion do
				begin
					yield
					flunk("Not raise NSError")
				rescue ::RSS::NSError => e
					assert_equal(prefix, e.prefix)
					assert_equal(uri, e.uri)
				end
			end
		end
		
		def assert_missing_tag(tag, parent)
			_wrap_assertion do
				begin
					yield
					flunk("Not raise MissingTagError")
				rescue ::RSS::MissingTagError => e
					assert_equal(tag, e.tag)
					assert_equal(parent, e.parent)
				end
			end
		end
		
		def assert_too_much_tag(tag, parent)
			_wrap_assertion do
				begin
					yield
					flunk("Not raise TooMuchTagError")
				rescue ::RSS::TooMuchTagError => e
					assert_equal(tag, e.tag)
					assert_equal(parent, e.parent)
				end
			end
		end
		
		def assert_missing_attribute(tag, attrname)
			_wrap_assertion do
				begin
					yield
					flunk("Not raise MissingAttributeError")
				rescue ::RSS::MissingAttributeError => e
					assert_equal(tag, e.tag)
					assert_equal(attrname, e.attribute)
				end
			end
		end
		
		def assert_not_excepted_tag(tag, parent)
			_wrap_assertion do
				begin
					yield
					flunk("Not raise NotExceptedTagError")
				rescue ::RSS::NotExceptedTagError => e
					assert_equal(tag, e.tag)
					assert_equal(parent, e.parent)
				end
			end
		end
		
		def assert_not_available_value(tag, value)
			_wrap_assertion do
				begin
					yield
					flunk("Not raise NotAvailableValueError")
				rescue ::RSS::NotAvailableValueError => e
					assert_equal(tag, e.tag)
					assert_equal(value, e.value)
				end
			end
		end
		
		def assert_xml_stylesheet_attrs(xsl, attrs)
			_wrap_assertion do
				normalized_attrs = {}
				attrs.each do |name, value|
					normalized_attrs[name.to_s] = value
				end
				::RSS::XMLStyleSheet::ATTRIBUTES.each do |name|
					assert_equal(normalized_attrs[name], xsl.send(name))
				end
			end
		end
		
		def assert_xml_stylesheet(target, xsl, attrs)
			_wrap_assertion do
				if attrs.has_key?(:href)
					if !attrs.has_key?(:type) and attrs.has_key?(:guess_type)
						attrs[:type] = attrs[:guess_type]
					end
					assert_equal("xml-stylesheet", target)
					assert_xml_stylesheet_attrs(xsl, attrs)
				else
					assert_nil(target)
					assert_equal("", xsl.to_s)
				end
			end
		end
		
		def assert_xml_stylesheet_pis(attrs_ary)
			rdf = ::RSS::RDF.new()
			xss_strs = []
			attrs_ary.each do |attrs|
				xss = ::RSS::XMLStyleSheet.new(*attrs)
				xss_strs.push(xss.to_s)
				rdf.xml_stylesheets.push(xss)
			end
			pi_str = rdf.to_s.gsub(/<\?xml .*\n/, "").gsub(/\s*<rdf:RDF.*\z/m, "")
			assert_equal(xss_strs.join("\n"), pi_str)
		end
		
	end
end