approvals-approval_tests 0.0.4 → 0.0.5

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.
@@ -4,6 +4,7 @@ require "#{__DIR__}/namers/rspec_namer"
4
4
  require "#{__DIR__}/approvers/file_approver"
5
5
  require "#{__DIR__}/writers/text_writer"
6
6
  require "#{__DIR__}/writers/html_writer"
7
+ require "#{__DIR__}/writers/xml_writer"
7
8
  require "#{__DIR__}/reporters/quiet_reporter"
8
9
  require "#{__DIR__}/reporters/text_mate_reporter"
9
10
  require "#{__DIR__}/reporters/diff_reporter"
@@ -37,25 +38,32 @@ module ApprovalTests
37
38
  end
38
39
  approve(out)
39
40
  end
40
- def approve(data, writer_option = :text)
41
- case writer_option
42
- when :html then writer = HtmlWriter.new(data)
43
- when :text then writer = TextWriter.new(data)
44
- end
45
-
46
- approver = FileApprover.new(writer, @namer)
47
- if approver.approve()
48
- approver.clean_up_after_success()
49
- else
50
- @reporter = get_default_reporter()
51
- approver.report_failure(@reporter)
52
-
53
- if @reporter.approved_when_reported()
54
- approver.clean_up_after_sucess()
41
+ def approve(data)
42
+ approve_with_writer(TextWriter.new(data))
43
+ end
44
+
45
+ def approve_html(data)
46
+ approve_with_writer(HtmlWriter.new(data))
47
+ end
48
+
49
+ def approve_xml(data)
50
+ approve_with_writer(TextWriter.new(XmlWriter.pretty_xml(data)))
51
+ end
52
+
53
+ def approve_with_writer(writer)
54
+ approver = FileApprover.new(writer, @namer)
55
+ if approver.approve()
56
+ approver.clean_up_after_success()
55
57
  else
56
- approver.fail()
58
+ @reporter = get_default_reporter()
59
+ approver.report_failure(@reporter)
60
+
61
+ if @reporter.approved_when_reported()
62
+ approver.clean_up_after_sucess()
63
+ else
64
+ approver.fail()
65
+ end
57
66
  end
58
- end
59
67
  end
60
68
 
61
69
  def namer=(namer)
@@ -0,0 +1,81 @@
1
+ require 'rexml/document'
2
+ include REXML
3
+
4
+ module ApprovalTests
5
+ module Writers
6
+ class XmlWriter
7
+ def initialize(data)
8
+ @data = data
9
+ end
10
+
11
+ def get_approval_filename(basename)
12
+ basename + ".approved.xml"
13
+ end
14
+
15
+ def get_received_filename(basename)
16
+ basename + ".received.xml"
17
+ end
18
+
19
+ def write_received_file(received)
20
+ f = File.new("#{received}", "w+")
21
+ f.write(@data)
22
+ f.close()
23
+ f.path
24
+ end
25
+ class << self
26
+ def pretty_print(parent_node, itab)
27
+ buffer = ''
28
+
29
+ parent_node.elements.each do |node|
30
+
31
+ buffer += ' ' * itab + "<#{node.name}#{get_att_list(node)}"
32
+
33
+ if node.to_a.length > 0
34
+ buffer += ">"
35
+ if node.text.nil?
36
+ buffer += "\n"
37
+ buffer += pretty_print(node,itab+2)
38
+ buffer += ' ' * itab + "</#{node.name}>\n"
39
+ else
40
+ node_text = node.text.strip
41
+ if node_text != ''
42
+ buffer += node_text
43
+ buffer += "</#{node.name}>\n"
44
+ else
45
+ buffer += "\n" + pretty_print(node,itab+2)
46
+ buffer += ' ' * itab + "</#{node.name}>\n"
47
+ end
48
+ end
49
+ else
50
+ buffer += "/>\n"
51
+ end
52
+
53
+ end
54
+ buffer
55
+ end
56
+
57
+ def get_att_list(node)
58
+ att_list = ''
59
+ node.attributes.each { |attribute, val| att_list += " #{attribute}='#{val}'" }
60
+ att_list
61
+ end
62
+
63
+ def pretty_xml(xml_string)
64
+ doc = Document.new(xml_string)
65
+
66
+ buffer = ''
67
+ xml_declaration = doc.to_s.match('<\?.*\?>').to_s
68
+ buffer += "#{xml_declaration}\n" if not xml_declaration.nil?
69
+ xml_doctype = doc.to_s.match('<\!.*\">').to_s
70
+ buffer += "#{xml_doctype}\n" if not xml_doctype.nil?
71
+ buffer += "<#{doc.root.name}#{get_att_list(doc.root)}"
72
+ if doc.root.to_a.length > 0
73
+ buffer +=">\n#{pretty_print(doc.root,2)}</#{doc.root.name}>"
74
+ else
75
+ buffer += "/>\n"
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1 @@
1
+ name[0] = tom
@@ -0,0 +1 @@
1
+ [name] = harry
@@ -45,6 +45,11 @@ describe "Approvals" do
45
45
  end
46
46
  end
47
47
 
48
+ describe "xml" do
49
+ it "should be pretty" do
50
+ Approvals.approve_xml('<?xml version="1.0" encoding="ISO-8859-1"?><data><a><b>Bee</b><c>Sea</c></a></data>')
51
+ end
52
+ end
48
53
 
49
54
  describe "DiffReporter" do
50
55
  it "should launch" do
@@ -0,0 +1,8 @@
1
+ <?xml version='1.0' encoding='ISO-8859-1'?>
2
+
3
+ <data>
4
+ <a>
5
+ <b>Bee</b>
6
+ <c>Sea</c>
7
+ </a>
8
+ </data>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: approvals-approval_tests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Gilkerson, Llewellyn Falco
@@ -25,7 +25,6 @@ files:
25
25
  - README
26
26
  - Rakefile
27
27
  - VERSION
28
- - approval_tests.gemspec
29
28
  - lib/approval_tests.rb
30
29
  - lib/approval_tests/approvals.rb
31
30
  - lib/approval_tests/approvers/file_approver.rb
@@ -36,13 +35,18 @@ files:
36
35
  - lib/approval_tests/reporters/text_mate_reporter.rb
37
36
  - lib/approval_tests/writers/html_writer.rb
38
37
  - lib/approval_tests/writers/text_writer.rb
38
+ - lib/approval_tests/writers/xml_writer.rb
39
39
  - spec/a.txt
40
+ - spec/approvals_lists_should_show_empty_lists.approved.txt
41
+ - spec/approvals_lists_should_write_arrays.approved.txt
42
+ - spec/approvals_lists_should_write_maps.approved.txt
40
43
  - spec/approvals_multiple_describes_should_approve_multiple_describes.approved.txt
41
44
  - spec/approvals_should_approve_shared_behaviors.approved.txt
42
45
  - spec/approvals_should_successfully_approve_text.approved.txt
43
46
  - spec/approvals_spec.rb
44
47
  - spec/approvals_using_approval_blocks.approved.txt
45
48
  - spec/approvals_using_approval_blocks_the_last_statement.approved.txt
49
+ - spec/approvals_xml_should_be_pretty.approved.txt
46
50
  - spec/b.txt
47
51
  - spec/cleanup_reporter.rb
48
52
  - spec/spec.opts
@@ -1,62 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{approval_tests}
5
- s.version = "0.0.4"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Dan Gilkerson, Llewellyn Falco"]
9
- s.date = %q{2009-07-02}
10
- s.description = %q{Approval testing library}
11
- s.email = %q{approvaltests@dangilkerson.com}
12
- s.extra_rdoc_files = [
13
- "README"
14
- ]
15
- s.files = [
16
- "README",
17
- "Rakefile",
18
- "VERSION",
19
- "approval_tests.gemspec",
20
- "lib/approval_tests.rb",
21
- "lib/approval_tests/approvals.rb",
22
- "lib/approval_tests/approvers/file_approver.rb",
23
- "lib/approval_tests/extensions/rspec.rb",
24
- "lib/approval_tests/namers/rspec_namer.rb",
25
- "lib/approval_tests/reporters/diff_reporter.rb",
26
- "lib/approval_tests/reporters/quiet_reporter.rb",
27
- "lib/approval_tests/reporters/text_mate_reporter.rb",
28
- "lib/approval_tests/writers/html_writer.rb",
29
- "lib/approval_tests/writers/text_writer.rb",
30
- "spec/a.txt",
31
- "spec/approvals_multiple_describes_should_approve_multiple_describes.approved.txt",
32
- "spec/approvals_should_approve_shared_behaviors.approved.txt",
33
- "spec/approvals_should_successfully_approve_text.approved.txt",
34
- "spec/approvals_spec.rb",
35
- "spec/approvals_using_approval_blocks.approved.txt",
36
- "spec/approvals_using_approval_blocks_the_last_statement.approved.txt",
37
- "spec/b.txt",
38
- "spec/cleanup_reporter.rb",
39
- "spec/spec.opts",
40
- "spec/spec_helper.rb"
41
- ]
42
- s.homepage = %q{http://github.com/approvaltests/approval_tests}
43
- s.rdoc_options = ["--charset=UTF-8"]
44
- s.require_paths = ["lib"]
45
- s.rubygems_version = %q{1.3.4}
46
- s.summary = %q{Approval testing library}
47
- s.test_files = [
48
- "spec/approvals_spec.rb",
49
- "spec/cleanup_reporter.rb",
50
- "spec/spec_helper.rb"
51
- ]
52
-
53
- if s.respond_to? :specification_version then
54
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
55
- s.specification_version = 3
56
-
57
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
58
- else
59
- end
60
- else
61
- end
62
- end