turnip_formatter 0.2.3 → 0.2.4

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.
@@ -16,31 +16,30 @@ module TurnipFormatter
16
16
  feature_analysis(name, feature_scenarios)
17
17
  end
18
18
 
19
- render_template(:tab_feature_statistics, {analysis_results: results })
19
+ render_template(:tab_feature_statistics, { analysis_results: results })
20
20
  end
21
21
 
22
22
  private
23
23
 
24
24
  def feature_analysis(name, scenarios)
25
25
  status_group = scenarios.group_by { |s| s.status }
26
+ status_group.default = []
26
27
 
27
28
  info = OpenStruct.new(
28
29
  name: name,
29
- scenarios: scenarios.count,
30
- passed: status_count(status_group["passed"]),
31
- failed: status_count(status_group["failed"]),
32
- pending: status_count(status_group["pending"]),
30
+ scenario_count: scenarios.size,
31
+ passed_count: status_group["passed"].size,
32
+ failed_count: status_group["failed"].size,
33
+ pending_count: status_group["pending"].size,
33
34
  status: 'failed'
34
35
  )
35
36
 
36
- info.status = (info.pending.zero? ? 'passed' : 'pending') if info.failed.zero?
37
+ if info.failed_count.zero?
38
+ info.status = info.pending_count.zero? ? 'passed' : 'pending'
39
+ end
37
40
 
38
41
  info
39
42
  end
40
-
41
- def status_count(scenarios)
42
- scenarios.nil? ? 0 : scenarios.count
43
- end
44
43
  end
45
44
  end
46
45
  end
@@ -11,7 +11,7 @@ module TurnipFormatter
11
11
 
12
12
  def print_out(passed_scenarios)
13
13
  results = speed_analysis(passed_scenarios)
14
- render_template(:tab_speed_statistics, {analysis_results: results })
14
+ render_template(:tab_speed_statistics, { analysis_results: results })
15
15
  end
16
16
 
17
17
  private
@@ -23,17 +23,21 @@ module TurnipFormatter
23
23
 
24
24
  def tag_analysis(name, scenarios)
25
25
  status_group = scenarios.group_by { |s| s[:scenario].status }
26
+ status_group.default = []
26
27
 
27
28
  info = OpenStruct.new(
28
29
  name: name,
29
- scenarios: scenarios.count,
30
- passed: status_count(status_group["passed"]),
31
- failed: status_count(status_group["failed"]),
32
- pending: status_count(status_group["pending"]),
30
+ scenario_count: scenarios.size,
31
+ passed_count: status_group["passed"].size,
32
+ failed_count: status_group["failed"].size,
33
+ pending_count: status_group["pending"].size,
33
34
  status: 'failed'
34
35
  )
35
36
 
36
- info.status = (info.pending.zero? ? 'passed' : 'pending') if info.failed.zero?
37
+ if info.failed_count.zero?
38
+ info.status = info.pending_count.zero? ? 'passed' : 'pending'
39
+ end
40
+
37
41
  info
38
42
  end
39
43
 
@@ -62,10 +66,6 @@ module TurnipFormatter
62
66
  end
63
67
  end.flatten.group_by { |s| s[:name] }.sort
64
68
  end
65
-
66
- def status_count(scenarios)
67
- scenarios.nil? ? 0 : scenarios.count
68
- end
69
69
  end
70
70
  end
71
71
  end
@@ -13,10 +13,10 @@
13
13
  <% analysis_results.each do |info| %>
14
14
  <tr>
15
15
  <td><%= info.name %></td>
16
- <td><%= info.scenarios %></td>
17
- <td><%= info.passed %></td>
18
- <td><%= info.failed %></td>
19
- <td><%= info.pending %></td>
16
+ <td><%= info.scenario_count %></td>
17
+ <td><%= info.passed_count %></td>
18
+ <td><%= info.failed_count %></td>
19
+ <td><%= info.pending_count %></td>
20
20
  <td class="<%= info.status %>"><%= info.status %></td>
21
21
  </tr>
22
22
  <% end %>
@@ -13,10 +13,10 @@
13
13
  <% analysis_results.each do |info| %>
14
14
  <tr>
15
15
  <td><%= info.name %></td>
16
- <td><%= info.scenarios %></td>
17
- <td><%= info.passed %></td>
18
- <td><%= info.failed %></td>
19
- <td><%= info.pending %></td>
16
+ <td><%= info.scenario_count %></td>
17
+ <td><%= info.passed_count %></td>
18
+ <td><%= info.failed_count %></td>
19
+ <td><%= info.pending_count %></td>
20
20
  <td class="<%= info.status %>"><%= info.status %></td>
21
21
  </tr>
22
22
  <% end %>
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  module TurnipFormatter
4
- VERSION = "0.2.3"
4
+ VERSION = "0.2.4"
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -5,8 +5,10 @@ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
5
5
  SimpleCov.start do
6
6
  add_filter 'spec/'
7
7
  add_filter 'vendor/'
8
+ add_filter 'lib/turnip_formatter/ext'
8
9
  end
9
10
 
11
+ require 'rspec-html-matchers'
10
12
  require 'turnip_formatter'
11
13
  Dir.glob(File.dirname(__FILE__) + "/support/**/*.rb") { |f| require(f) }
12
14
 
@@ -14,8 +14,11 @@ module TurnipFormatter::Printer
14
14
  describe '.print_out' do
15
15
  subject { Scenario.print_out(scenario) }
16
16
 
17
- it { should include "<a href=\"##{scenario.id}\">" } # scenario.id
18
- it { should include 'Scenario: Scenario' } # h(scenario.name)
17
+ it { should have_tag 'a', with: { href: '#' + scenario.id } }
18
+ it { should have_tag 'span.scenario_name', text: /Scenario: Scenario/ }
19
+ it { should have_tag 'span.feature_name' }
20
+ it { should have_tag 'ul.tags' }
21
+ it { should have_tag 'ul.steps' }
19
22
  end
20
23
  end
21
24
 
@@ -15,9 +15,18 @@ module TurnipFormatter::Printer
15
15
 
16
16
  subject { StepExtraArgs.print_out([string]) }
17
17
 
18
- it { should match %r{<td>State</td>[[:space:]]+<td>Money</td>} }
19
- it { should match %r{<td>&lt;Tokushima&gt;</td>[[:space:]]+<td>555</td>} }
20
- it { should match %r{<td>&lt;Okinawa&gt;</td>[[:space:]]+<td>368</td>} }
18
+ it {
19
+ subject.should have_tag 'table.step_outline' do
20
+ with_tag 'tr:nth-child(1) td:nth-child(1)', text: 'State'
21
+ with_tag 'tr:nth-child(1) td:nth-child(2)', text: 'Money'
22
+
23
+ with_tag 'tr:nth-child(2) td:nth-child(1)', text: '<Tokushima>'
24
+ with_tag 'tr:nth-child(2) td:nth-child(2)', text: '555'
25
+
26
+ with_tag 'tr:nth-child(3) td:nth-child(1)', text: '<Okinawa>'
27
+ with_tag 'tr:nth-child(3) td:nth-child(2)', text: '368'
28
+ end
29
+ }
21
30
  end
22
31
  end
23
32
 
@@ -25,7 +34,7 @@ module TurnipFormatter::Printer
25
34
  describe '.print_out' do
26
35
  let(:string) { 'a<a>a' }
27
36
  subject { StepExtraArgs.print_out([string]) }
28
- it { should include '<pre class="multiline">a&lt;a&gt;a</pre>' }
37
+ it { should have_tag 'pre.multiline', text: 'a<a>a' }
29
38
  end
30
39
  end
31
40
  end
@@ -28,7 +28,7 @@ module TurnipFormatter::Printer
28
28
  exception_style.should_receive(:build).with('c').and_return('exception')
29
29
  end
30
30
 
31
- it { should include "<div class=\"args\">extra_args\nsource\nexception</div>" }
31
+ it { should have_tag 'div.args', text: "extra_args\nsource\nexception" }
32
32
  end
33
33
  end
34
34
 
@@ -37,7 +37,7 @@ module TurnipFormatter::Printer
37
37
  let(:custom_template_1) do
38
38
  Module.new do
39
39
  def self.build(value)
40
- "<html>#{value}</html>"
40
+ "<em>#{value}</em>"
41
41
  end
42
42
  end
43
43
  end
@@ -60,7 +60,10 @@ module TurnipFormatter::Printer
60
60
  end
61
61
 
62
62
  it 'should call corresponding method in step' do
63
- should include "<div class=\"args\"><html>aiueo</html>\n<strong>12345</strong></div>"
63
+ subject.should have_tag 'div.args' do
64
+ with_tag 'em', text: 'aiueo'
65
+ with_tag 'strong', text: '12345'
66
+ end
64
67
  end
65
68
  end
66
69
  end
@@ -78,7 +81,7 @@ module TurnipFormatter::Printer
78
81
  exception_style.should_not_receive(:build)
79
82
  end
80
83
 
81
- it { should include '<div class="args"></div>' }
84
+ it { should have_tag 'div.args', text: '' }
82
85
  end
83
86
  end
84
87
  end
@@ -28,9 +28,9 @@ module TurnipFormatter::Printer
28
28
  it 'should get passed feature information' do
29
29
  info = statistics.send(:feature_analysis, 'Hoge', scenarios)
30
30
  expect(info.name).to eq 'Hoge'
31
- expect(info.passed).to eq 2
32
- expect(info.failed).to be_zero
33
- expect(info.pending).to be_zero
31
+ expect(info.passed_count).to eq 2
32
+ expect(info.failed_count).to be_zero
33
+ expect(info.pending_count).to be_zero
34
34
  expect(info.status).to eq 'passed'
35
35
  end
36
36
  end
@@ -50,9 +50,9 @@ module TurnipFormatter::Printer
50
50
  it 'should get failed feature information' do
51
51
  info = statistics.send(:feature_analysis, 'Fuga', scenarios)
52
52
  expect(info.name).to eq 'Fuga'
53
- expect(info.passed).to eq 1
54
- expect(info.failed).to eq 2
55
- expect(info.pending).to be_zero
53
+ expect(info.passed_count).to eq 1
54
+ expect(info.failed_count).to eq 2
55
+ expect(info.pending_count).to be_zero
56
56
  expect(info.status).to eq 'failed'
57
57
  end
58
58
  end
@@ -72,9 +72,9 @@ module TurnipFormatter::Printer
72
72
  it 'should get pending feature information' do
73
73
  info = statistics.send(:feature_analysis, 'Hago', scenarios)
74
74
  expect(info.name).to eq 'Hago'
75
- expect(info.passed).to eq 1
76
- expect(info.failed).to be_zero
77
- expect(info.pending).to eq 1
75
+ expect(info.passed_count).to eq 1
76
+ expect(info.failed_count).to be_zero
77
+ expect(info.pending_count).to eq 1
78
78
  expect(info.status).to eq 'pending'
79
79
  end
80
80
  end
@@ -20,20 +20,12 @@ module TurnipFormatter::Printer
20
20
  it 'should get string as HTML table' do
21
21
  html = statistics.print_out(passed_scenarios)
22
22
 
23
- passed_scenarios.each do |scenario|
24
- tag_scenario_name = "<a href=\"\##{scenario.id}\">#{scenario.name}</a>"
25
- tag_run_time = "<span>#{scenario.run_time}</span>"
26
- tag_feature_name = "<span>#{scenario.feature_name}</span>"
27
-
28
- expect_match = [
29
- '<tr>',
30
- "<td>#{tag_feature_name}</td>",
31
- "<td>#{tag_scenario_name}</td>",
32
- "<td>#{tag_run_time} sec</td>",
33
- '</tr>'
34
- ].join('[[:space:]]+')
35
-
36
- expect(html).to match %r(#{expect_match})
23
+ passed_scenarios.sort { |a,b| a.run_time <=> b.run_time }.each.with_index(1) do |scenario, index|
24
+ html.should have_tag "tbody tr:nth-child(#{index})" do
25
+ with_tag 'td:nth-child(1) span', text: scenario.feature_name
26
+ with_tag "td:nth-child(2) a[href='\##{scenario.id}']", text: scenario.name
27
+ with_tag 'td:nth-child(3) span', text: scenario.run_time
28
+ end
37
29
  end
38
30
  end
39
31
  end
@@ -63,27 +63,39 @@ module TurnipFormatter::Printer
63
63
  it 'should get count of each status' do
64
64
  # @bar
65
65
  group = groups[0]
66
- res = statistics.send(:tag_analysis, group[0], group[1])
67
- expect([res.passed, res.failed, res.pending]).to eq [0, 1, 1]
68
- expect(res.status).to eq 'failed'
66
+ statistics.send(:tag_analysis, group[0], group[1]).tap do |result|
67
+ expect(result.passed_count).to eq 0
68
+ expect(result.failed_count).to eq 1
69
+ expect(result.pending_count).to eq 1
70
+ expect(result.status).to eq 'failed'
71
+ end
69
72
 
70
73
  # @foo
71
74
  group = groups[1]
72
- res = statistics.send(:tag_analysis, group[0], group[1])
73
- expect([res.passed, res.failed, res.pending]).to eq [0, 1, 0]
74
- expect(res.status).to eq 'failed'
75
+ statistics.send(:tag_analysis, group[0], group[1]).tap do |result|
76
+ expect(result.passed_count).to eq 0
77
+ expect(result.failed_count).to eq 1
78
+ expect(result.pending_count).to eq 0
79
+ expect(result.status).to eq 'failed'
80
+ end
75
81
 
76
82
  # @hoge
77
83
  group = groups[2]
78
- res = statistics.send(:tag_analysis, group[0], group[1])
79
- expect([res.passed, res.failed, res.pending]).to eq [1, 0, 1]
80
- expect(res.status).to eq 'pending'
84
+ statistics.send(:tag_analysis, group[0], group[1]).tap do |result|
85
+ expect(result.passed_count).to eq 1
86
+ expect(result.failed_count).to eq 0
87
+ expect(result.pending_count).to eq 1
88
+ expect(result.status).to eq 'pending'
89
+ end
81
90
 
82
91
  # no tags (turnip)
83
92
  group = groups[3]
84
- res = statistics.send(:tag_analysis, group[0], group[1])
85
- expect([res.passed, res.failed, res.pending]).to eq [1, 0, 0]
86
- expect(res.status).to eq 'passed'
93
+ statistics.send(:tag_analysis, group[0], group[1]).tap do |result|
94
+ expect(result.passed_count).to eq 1
95
+ expect(result.failed_count).to eq 0
96
+ expect(result.pending_count).to eq 0
97
+ expect(result.status).to eq 'passed'
98
+ end
87
99
  end
88
100
  end
89
101
  end
@@ -22,9 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'sass'
23
23
  spec.add_dependency 'uglifier'
24
24
  spec.add_dependency 'therubyracer'
25
- spec.add_dependency 'rspec', '~> 2.13.0'
26
25
  spec.add_development_dependency "bundler", "~> 1.3"
27
26
  spec.add_development_dependency "rake"
27
+ spec.add_development_dependency 'rspec-html-matchers'
28
28
  spec.add_development_dependency 'coveralls'
29
29
  spec.add_development_dependency 'guard-rspec'
30
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turnip_formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-11 00:00:00.000000000 Z
12
+ date: 2013-07-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: turnip
@@ -76,39 +76,39 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  - !ruby/object:Gem::Dependency
79
- name: rspec
79
+ name: bundler
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 2.13.0
86
- type: :runtime
85
+ version: '1.3'
86
+ type: :development
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 2.13.0
93
+ version: '1.3'
94
94
  - !ruby/object:Gem::Dependency
95
- name: bundler
95
+ name: rake
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
- - - ~>
99
+ - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
- version: '1.3'
101
+ version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
- - - ~>
107
+ - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
- version: '1.3'
109
+ version: '0'
110
110
  - !ruby/object:Gem::Dependency
111
- name: rake
111
+ name: rspec-html-matchers
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements: