approvals-approval_tests 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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