test_xml 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. data/.gitignore +2 -0
  2. data/Gemfile +8 -0
  3. data/Gemfile.lock +31 -0
  4. data/README.rdoc +56 -73
  5. data/Rakefile +12 -12
  6. data/lib/test_xml.rb +0 -2
  7. data/lib/test_xml/matcher_methods.rb +29 -0
  8. data/lib/test_xml/mini_test.rb +6 -0
  9. data/lib/test_xml/nokogiri/node.rb +13 -8
  10. data/lib/test_xml/spec.rb +1 -4
  11. data/lib/test_xml/spec/matchers.rb +5 -4
  12. data/lib/test_xml/spec/matchers/{match_xml.rb → contain_xml.rb} +2 -7
  13. data/lib/test_xml/spec/matchers/{match_xml_structure.rb → contain_xml_structure.rb} +2 -5
  14. data/lib/test_xml/spec/matchers/{exactly_match_xml.rb → equal_xml.rb} +2 -7
  15. data/lib/test_xml/spec/matchers/{exactly_match_xml_structure.rb → equal_xml_structure.rb} +2 -4
  16. data/lib/test_xml/test_unit.rb +2 -0
  17. data/lib/test_xml/test_unit/assertions.rb +29 -32
  18. data/lib/test_xml/version.rb +1 -1
  19. data/spec/{lib/test_xml/spec/matchers/match_xml_spec.rb → matchers/contain_xml_spec.rb} +5 -5
  20. data/spec/{lib/test_xml/spec/matchers/match_xml_structure_spec.rb → matchers/contain_xml_structure_spec.rb} +4 -4
  21. data/spec/{lib/test_xml/spec/matchers/exactly_match_xml_spec.rb → matchers/equal_xml_spec.rb} +6 -4
  22. data/spec/{lib/test_xml/spec/matchers/exactly_match_xml_structure_spec.rb → matchers/equal_xml_structure_spec.rb} +4 -4
  23. data/spec/spec.opts +2 -0
  24. data/spec/spec_helper.rb +1 -4
  25. data/test/{test_xml/nokogiri → nokogiri}/test_node.rb +14 -7
  26. data/test/test_helper.rb +1 -4
  27. data/test/test_unit/test_assertions.rb +227 -0
  28. data/test_xml.gemspec +28 -0
  29. metadata +77 -42
  30. data/test/test_xml/test_unit/test_assertions.rb +0 -159
@@ -1,3 +1,3 @@
1
1
  module TestXml
2
- VERSION = '0.0.4'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -12,7 +12,7 @@ describe "match_xml(xml)" do
12
12
 
13
13
  context "when xml is equal" do
14
14
  it "should pass" do
15
- should match_xml(<<-XML)
15
+ should contain_xml(<<-XML)
16
16
  <xml>
17
17
  <one>1</one>
18
18
  <two>2</two>
@@ -23,7 +23,7 @@ describe "match_xml(xml)" do
23
23
 
24
24
  context "when xml has less elements" do
25
25
  it "should pass" do
26
- should match_xml(<<-XML)
26
+ should contain_xml(<<-XML)
27
27
  <xml>
28
28
  <one>1</one>
29
29
  </xml>
@@ -33,7 +33,7 @@ describe "match_xml(xml)" do
33
33
 
34
34
  context "when xml structure is equal but elements have different content" do
35
35
  it "should fail" do
36
- should_not match_xml(<<-XML)
36
+ should_not contain_xml(<<-XML)
37
37
  <xml>
38
38
  <one>4</one>
39
39
  <two>5</two>
@@ -44,7 +44,7 @@ describe "match_xml(xml)" do
44
44
 
45
45
  context "when xml has more elements" do
46
46
  it "should fail" do
47
- should_not match_xml(<<-XML)
47
+ should_not contain_xml(<<-XML)
48
48
  <xml>
49
49
  <one>1</one>
50
50
  <two>2</two>
@@ -67,7 +67,7 @@ describe "match_xml(xml)" do
67
67
  }
68
68
 
69
69
  it "should pass" do
70
- should match_xml(<<-XML)
70
+ should contain_xml(<<-XML)
71
71
  <xml>
72
72
  <errors>
73
73
  <error>one</error>
@@ -12,7 +12,7 @@ describe "match_xml_structure(xml)" do
12
12
 
13
13
  context "when xml is equal" do
14
14
  it "should pass" do
15
- should match_xml_structure(<<-XML)
15
+ should contain_xml_structure(<<-XML)
16
16
  <xml>
17
17
  <one>1</one>
18
18
  <two>2</two>
@@ -23,7 +23,7 @@ describe "match_xml_structure(xml)" do
23
23
 
24
24
  context "when xml structure is equal but elements have different content" do
25
25
  it "should pass" do
26
- should match_xml_structure(<<-XML)
26
+ should contain_xml_structure(<<-XML)
27
27
  <xml>
28
28
  <one>4</one>
29
29
  <two>5</two>
@@ -34,7 +34,7 @@ describe "match_xml_structure(xml)" do
34
34
 
35
35
  context "when xml has less elements" do
36
36
  it "should pass" do
37
- should match_xml_structure(<<-XML)
37
+ should contain_xml_structure(<<-XML)
38
38
  <xml>
39
39
  <one>1</one>
40
40
  </xml>
@@ -44,7 +44,7 @@ describe "match_xml_structure(xml)" do
44
44
 
45
45
  context "when xml has more elements" do
46
46
  it "should fail" do
47
- should_not match_xml_structure(<<-XML)
47
+ should_not contain_xml_structure(<<-XML)
48
48
  <xml>
49
49
  <one>1</one>
50
50
  <two>2</two>
@@ -1,5 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
+ # TODO: attributes are not matched.
4
+
3
5
  describe "exactly_match_xml(xml)" do
4
6
  subject {
5
7
  <<-XML
@@ -12,7 +14,7 @@ describe "exactly_match_xml(xml)" do
12
14
 
13
15
  context "when xml is equal with subject" do
14
16
  it "should pass" do
15
- should exactly_match_xml(<<-XML)
17
+ should equal_xml(<<-XML)
16
18
  <xml>
17
19
  <one>1</one>
18
20
  <two>2</two>
@@ -23,7 +25,7 @@ describe "exactly_match_xml(xml)" do
23
25
 
24
26
  context "when xml structure is equal with subject but elements have different content" do
25
27
  it "should fail" do
26
- should_not exactly_match_xml(<<-XML)
28
+ should_not equal_xml(<<-XML)
27
29
  <xml>
28
30
  <one>4</one>
29
31
  <two>5</two>
@@ -34,7 +36,7 @@ describe "exactly_match_xml(xml)" do
34
36
 
35
37
  context "when xml has less elements" do
36
38
  it "should fail" do
37
- should_not exactly_match_xml(<<-XML)
39
+ should_not equal_xml(<<-XML)
38
40
  <xml>
39
41
  <one>1</one>
40
42
  </xml>
@@ -44,7 +46,7 @@ describe "exactly_match_xml(xml)" do
44
46
 
45
47
  context "when xml has more elements" do
46
48
  it "should fail" do
47
- should_not exactly_match_xml(<<-XML)
49
+ should_not equal_xml(<<-XML)
48
50
  <xml>
49
51
  <one>1</one>
50
52
  <two>2</two>
@@ -12,7 +12,7 @@ describe "exactly_match_xml_structure(xml)" do
12
12
 
13
13
  context "when xml structure is equal with subject" do
14
14
  it "should pass" do
15
- should exactly_match_xml_structure(<<-XML)
15
+ should equal_xml_structure(<<-XML)
16
16
  <xml>
17
17
  <one/>
18
18
  <two/>
@@ -23,7 +23,7 @@ describe "exactly_match_xml_structure(xml)" do
23
23
 
24
24
  context "when xml structure is equal with subject and elements have different content" do
25
25
  it "should pass" do
26
- should exactly_match_xml_structure(<<-XML)
26
+ should equal_xml_structure(<<-XML)
27
27
  <xml>
28
28
  <one>4</one>
29
29
  <two>5</two>
@@ -34,7 +34,7 @@ describe "exactly_match_xml_structure(xml)" do
34
34
 
35
35
  context "when xml has less elements" do
36
36
  it "should fail" do
37
- should_not exactly_match_xml_structure(<<-XML)
37
+ should_not equal_xml_structure(<<-XML)
38
38
  <xml>
39
39
  <one/>
40
40
  </xml>
@@ -44,7 +44,7 @@ describe "exactly_match_xml_structure(xml)" do
44
44
 
45
45
  context "when xml has more elements" do
46
46
  it "should fail" do
47
- should_not exactly_match_xml_structure(<<-XML)
47
+ should_not equal_xml_structure(<<-XML)
48
48
  <xml>
49
49
  <one/>
50
50
  <two/>
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format nested
@@ -1,4 +1 @@
1
- require 'spec'
2
-
3
- require File.dirname(__FILE__) + '/../lib/test_xml'
4
- require File.dirname(__FILE__) + '/../lib/test_xml/spec'
1
+ require 'test_xml/spec'
@@ -5,14 +5,14 @@ class TestNode < Test::Unit::TestCase
5
5
  assert doc.elements.size == 1
6
6
  assert doc.at('root').elements.size == 2
7
7
  end
8
-
9
- def test_text_element
10
- assert doc(<<-XML).at('root').text_element?
11
- <root>
12
- hello
13
- </root>
14
- XML
8
+
9
+ def test_leaf?
10
+ assert doc("<a/>").root.leaf?
11
+ assert doc("<a>Yo</a>").root.leaf?
12
+ assert doc("<a></a>").root.leaf?
13
+ assert !doc("<div><a/></div>").root.leaf?
15
14
  end
15
+
16
16
 
17
17
  def test_match_of_elements_without_comparing_values
18
18
  subject = doc(<<-XML)
@@ -97,6 +97,13 @@ class TestNode < Test::Unit::TestCase
97
97
  assert doc.root.send(:contains_elements_of?, doc.root)
98
98
  assert !doc.root.send(:contains_elements_of?, doc('<root><test_element/></root>'))
99
99
  end
100
+
101
+ def test_comparable_attributes
102
+ assert_equal [["id", "boss"], ["name", "Dude"]], create_element(%{<li name="Dude" id="boss" />}).comparable_attributes
103
+
104
+ assert_equal [["name", "Dude"]], create_element(%{<li NAME="Dude"/>}).comparable_attributes
105
+ end
106
+
100
107
 
101
108
  private
102
109
 
@@ -1,4 +1 @@
1
- require 'test/unit'
2
-
3
- require File.dirname(__FILE__) + '/../lib/test_xml'
4
- require File.dirname(__FILE__) + '/../lib/test_xml/test_unit'
1
+ require 'test_xml/test_unit'
@@ -0,0 +1,227 @@
1
+ require 'test_helper'
2
+
3
+ class TestAssertions < Test::Unit::TestCase
4
+ def test_assert_xml_contain_message_if_fails
5
+ begin
6
+ assert_xml_contain("<root><one>1</one><one>2</one></root>", "<root><one>3</one></root>")
7
+ rescue Exception => e
8
+ assert_match %r{the xml:\n<root><one>1</one><one>2</one></root>\nshould contain xml:\n<root><one>3</one></root>}, e.message
9
+ end
10
+ end
11
+
12
+ def test_assert_xml_not_contain_message_if_fails
13
+ begin
14
+ assert_not_xml_contain("<root><one>1</one><one>2</one></root>", "<root><one>1</one><one>2</one></root>")
15
+ rescue Exception => e
16
+ assert_match %r{the xml:\n<root><one>1</one><one>2</one></root>\nshould not contain xml:\n<root><one>1</one><one>2</one></root> but it does},
17
+ e.message
18
+ end
19
+ end
20
+
21
+ def test_assert_xml_contain
22
+ expected = <<-XML
23
+ <root>
24
+ <one id="first">1</one>
25
+ <two>2</two>
26
+ </root>
27
+ XML
28
+
29
+ actual = <<-XML
30
+ <root>
31
+ <one id="first">1</one>
32
+ </root>
33
+ XML
34
+
35
+ assert_xml_contain expected, actual
36
+ end
37
+
38
+ def test_assert_not_xml_contain
39
+ expected = <<-XML
40
+ <root>
41
+ <one>1</one>
42
+ </root>
43
+ XML
44
+
45
+ actual = <<-XML
46
+ <root>
47
+ <one>2</one>
48
+ </root>
49
+ XML
50
+
51
+ assert_not_xml_contain expected, actual
52
+ end
53
+
54
+ def test_assert_xml_structure_contain
55
+ expected = <<-XML
56
+ <root>
57
+ <one>1</one>
58
+ <two>
59
+ <three>3</three>
60
+ </two>
61
+ </root>
62
+ XML
63
+
64
+ actual = <<-XML
65
+ <root>
66
+ <one>2</one>
67
+ <two>
68
+ <three>4</three>
69
+ </two>
70
+ </root>
71
+ XML
72
+
73
+ assert_xml_structure_contain expected, actual
74
+ end
75
+
76
+ def test_assert_not_xml_structure_contain
77
+ expected = <<-XML
78
+ <root>
79
+ <one>1</one>
80
+ <two>
81
+ <three>3</three>
82
+ </two>
83
+ </root>
84
+ XML
85
+
86
+ actual = <<-XML
87
+ <root>
88
+ <one>2</one>
89
+ <two>
90
+ <four/>
91
+ </two>
92
+ </root>
93
+ XML
94
+
95
+ assert_not_xml_structure_contain expected, actual
96
+ end
97
+
98
+ def test_assert_xml_equal
99
+ expected = <<-XML
100
+ <root>
101
+ <one>1</one>
102
+ <two>2</two>
103
+ </root>
104
+ XML
105
+
106
+ actual = <<-XML
107
+ <root>
108
+ <one>1</one>
109
+ <two>2</two>
110
+ </root>
111
+ XML
112
+
113
+ assert_xml_equal expected, actual
114
+ end
115
+
116
+ def test_assert_xml_equal_with_attributes
117
+ expected = <<-XML
118
+ <root>
119
+ <one b="second" a="first">1</one>
120
+ <two b="second" a="first" />
121
+ </root>
122
+ XML
123
+
124
+ actual = <<-XML
125
+ <root>
126
+ <one a="first" b="second">1</one>
127
+ <two b="second" a="first" />
128
+ </root>
129
+ XML
130
+
131
+ assert_xml_equal expected, actual
132
+ end
133
+
134
+ def test_assert_not_xml_equal_with_attributes
135
+ expected = <<-XML
136
+ <root>
137
+ <one b="second" a="first">1</one>
138
+ </root>
139
+ XML
140
+
141
+ actual = <<-XML
142
+ <root>
143
+ <one a="whoops, wrong" b="second">1</one>
144
+ </root>
145
+ XML
146
+
147
+ assert_not_xml_equal expected, actual
148
+ end
149
+
150
+ def test_assert_not_xml_equal_with_attributes_and_no_text
151
+ expected = <<-XML
152
+ <root>
153
+ <one b="second" a="first" />
154
+ </root>
155
+ XML
156
+
157
+ actual = <<-XML
158
+ <root>
159
+ <one a="whoops, wrong" b="second" />
160
+ </root>
161
+ XML
162
+
163
+ assert_not_xml_equal expected, actual
164
+ end
165
+
166
+ def test_assert_not_xml_equal
167
+ expected = <<-XML
168
+ <root>
169
+ <one>1</one>
170
+ <two>2</two>
171
+ </root>
172
+ XML
173
+
174
+ actual = <<-XML
175
+ <root>
176
+ <one>1</one>
177
+ </root>
178
+ XML
179
+
180
+ assert_not_xml_equal expected, actual
181
+ end
182
+
183
+ def test_assert_xml_structure_equal
184
+ expected = <<-XML
185
+ <root>
186
+ <one>1</one>
187
+ <two>
188
+ <three>3</three>
189
+ </two>
190
+ </root>
191
+ XML
192
+
193
+ actual = <<-XML
194
+ <root>
195
+ <one>2</one>
196
+ <two>
197
+ <three>4</three>
198
+ </two>
199
+ </root>
200
+ XML
201
+
202
+ assert_xml_structure_equal expected, actual
203
+ end
204
+
205
+ def test_assert_not_xml_structure_equal
206
+ expected = <<-XML
207
+ <root>
208
+ <one>1</one>
209
+ <two>
210
+ <three>3</three>
211
+ </two>
212
+ </root>
213
+ XML
214
+
215
+ actual = <<-XML
216
+ <root>
217
+ <one>2</one>
218
+ <two>
219
+ <three>3</three>
220
+ <four/>
221
+ </two>
222
+ </root>
223
+ XML
224
+
225
+ assert_not_xml_structure_equal expected, actual
226
+ end
227
+ end
@@ -0,0 +1,28 @@
1
+ lib = File.expand_path('../lib/', __FILE__)
2
+ $:.unshift lib unless $:.include?(lib)
3
+
4
+ require 'test_xml/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "test_xml"
8
+ s.version = TestXml::VERSION
9
+ s.authors = ["Pavel Gabriel", "Nick Sutterer"]
10
+ s.homepage = "http://github.com/alovak/test_xml"
11
+ s.summary = "Test your XML with Test::Unit, MiniTest, RSpec, or Cucumber."
12
+ s.description = "Test your XML with Test::Unit, MiniTest, RSpec, or Cucumber using handy assertions like #assert_xml_equal or #assert_xml_structure_contain."
13
+ s.email = ["alovak@gmail.com", "apotonick@gmail.com"]
14
+ s.require_path = "lib"
15
+ s.has_rdoc = true
16
+ s.extra_rdoc_files = ['README.rdoc']
17
+ s.rdoc_options = ['--main', 'README.rdoc']
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+
22
+ s.rubygems_version = "1.3.5"
23
+ s.add_dependency("nokogiri", [">= 1.3.2"])
24
+
25
+ s.add_development_dependency("rake")
26
+ s.add_development_dependency("rdoc")
27
+ s.add_development_dependency("rspec-core", ["~> 2.2"])
28
+ end