reqres_rspec 0.0.27 → 0.0.28

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ca3be66232efeb3f2c63616b4ef984e3e17c279
4
- data.tar.gz: 193a47aa41e609e19642ec6caef650b0de3ce9fe
3
+ metadata.gz: 5bb6f6c25de702cda33d7ade7d745595581f2b47
4
+ data.tar.gz: 8431098e926bc378384c6ccfc9fb7effbfa3b64b
5
5
  SHA512:
6
- metadata.gz: 66c749ebc70f9af15a708c7d1123d2e1ea7c3bc2032ab8c2b61b68dd6e1ad88d62a8afdcc98d2379d7862c4fc08f0b4a7db9c47db503dfdb534ada54324b805c
7
- data.tar.gz: a6723cd536d268926cddb36d7da569a4930fa733b4a1553bde53be7a49864bb6ea2c4b12ac5e1aeaae703a74b7a55cab08329ad41a7882abee84c8cd6766160d
6
+ metadata.gz: 47a37d830c57ce22e437f447b36871071511b29ede79ebb84d14acea4291956cc7bf246cd02df1fe7c7f333b47fa38fd1e02bc5c82ce471c12d35890e6d57d56
7
+ data.tar.gz: fe276e431fe0c53d9e757fb7b02974b0814ee07f214560e3103d3f78d5ed6f7b2dbac88e9aa62dcdcd3fbb0dcd8b85830e5bf662b891f1afe78bd4eff7c5edf2
@@ -82,6 +82,7 @@ module ReqresRspec
82
82
  end
83
83
 
84
84
  self.records << {
85
+ filename: prepare_filename_for(spec.class.metadata),
85
86
  group: section, # Top level example group
86
87
  title: spec.class.example.full_description,
87
88
  description: description,
@@ -108,6 +109,21 @@ module ReqresRspec
108
109
  }
109
110
  end
110
111
 
112
+ def prepare_filename_for(metadata)
113
+ description = metadata[:description]
114
+ example_group = if metadata.key?(:example_group)
115
+ metadata[:example_group]
116
+ else
117
+ metadata[:parent_example_group]
118
+ end
119
+
120
+ if example_group
121
+ [prepare_filename_for(example_group), description].join('/')
122
+ else
123
+ description
124
+ end.gsub!(/[\W]+/, '_')
125
+ end
126
+
111
127
  # sorts records alphabetically
112
128
  def sort
113
129
  self.records.sort!{ |x,y| x[:request_path] <=> y[:request_path] }
@@ -1,3 +1,3 @@
1
1
  module ReqresRspec
2
- VERSION = '0.0.27'
2
+ VERSION = '0.0.28'
3
3
  end
@@ -42,7 +42,7 @@ module ReqresRspec
42
42
  tpl_path = File.join(File.dirname(__FILE__), 'templates', 'header.erb')
43
43
  rendered_doc = ERB.new(File.open(tpl_path).read).result(binding)
44
44
 
45
- path = File.join(ENV['REQRES_RSPEC_ROOT'], 'doc', 'rspec_doc_00000.html')
45
+ path = File.join(ENV['REQRES_RSPEC_ROOT'], 'doc', 'rspec_doc_table_of_content.html')
46
46
  file = File.open(path, 'w')
47
47
  file.write(rendered_doc)
48
48
  file.close
@@ -54,13 +54,11 @@ module ReqresRspec
54
54
  def generate_specs
55
55
  tpl_path = File.join(File.dirname(__FILE__), 'templates', 'spec.erb')
56
56
 
57
- @records.each_with_index do |record, index|
57
+ @records.each do |record|
58
58
  @record = record
59
- @index = index + 1
60
-
61
59
  rendered_doc = ERB.new(File.open(tpl_path).read).result(binding)
62
60
 
63
- path = File.join(ENV['REQRES_RSPEC_ROOT'], 'doc', "rspec_doc_#{@index.to_s.rjust(5, '0') }.html")
61
+ path = File.join(ENV['REQRES_RSPEC_ROOT'], 'doc', "rspec_doc_#{record[:filename]}.html")
64
62
  file = File.open(path, 'w')
65
63
  file.write(rendered_doc)
66
64
  file.close
@@ -0,0 +1,37 @@
1
+ require 'coderay'
2
+
3
+ module ReqresRspec
4
+ module Writers
5
+ class JSONFormatter
6
+ def initialize(records)
7
+ @records = records
8
+ end
9
+
10
+ def write
11
+ recreate_doc_dir
12
+ cleanup
13
+
14
+ path = File.join(ENV['REQRES_RSPEC_ROOT'], 'doc', 'reqres_rspec.json')
15
+ File.write(path, JSON.pretty_generate(@records))
16
+ puts "Reqres::Writers::JSONFormatter saved doc spec to #{path}"
17
+ end
18
+
19
+ private
20
+
21
+ # recreates /doc dir if it does not exist
22
+ def recreate_doc_dir
23
+ doc_dir = File.join(ENV['REQRES_RSPEC_ROOT'], 'doc')
24
+ unless Dir.exist?(doc_dir)
25
+ Dir.mkdir(doc_dir)
26
+ puts "#{doc_dir} was recreated"
27
+ end
28
+ end
29
+
30
+ # deletes previous version of HTML docs
31
+ # TODO: more info
32
+ def cleanup
33
+ FileUtils.rm_rf(Dir.glob("#{ENV['REQRES_RSPEC_ROOT']}/doc/reqres_rspec.json"), secure: true)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -64,7 +64,7 @@
64
64
  <% @records.each_with_index do |record, index| %>
65
65
  <li>
66
66
  <%= index+1 %>.
67
- <a href="rspec_doc_<%= ('0000' + (index + 1).to_s)[-5, 5] %>.html">
67
+ <a href="rspec_doc_<%= record[:filename] %>.html">
68
68
  <%= record[:title] %>
69
69
  </a>
70
70
  </li>
@@ -19,6 +19,6 @@
19
19
  </head>
20
20
  <frameset cols="350,*" frameborder="1" border="1" bordercolor="#999999" framespacing="1">
21
21
  <frame name="panel" src="./panel.html">
22
- <frame name="specs" src="./rspec_doc_00000.html">
22
+ <frame name="specs" src="./rspec_doc_table_of_content.html">
23
23
  </frameset>
24
24
  </html>
@@ -85,7 +85,7 @@
85
85
  </style>
86
86
  </head>
87
87
  <body>
88
- <h1><a href="rspec_doc_00000.html" target="specs">
88
+ <h1><a href="rspec_doc_table_of_content.html" target="specs">
89
89
  <%= ENV['REQRES_RSPEC_APP'] %> API
90
90
  </a></h1>
91
91
  <% @records.group_by{|h| h[:group]}.each do |group, items| %>
@@ -95,7 +95,7 @@
95
95
  <ul>
96
96
  <% records.each do |record| %>
97
97
  <li>
98
- <a href="rspec_doc_<%= (@records.index(record) + 1).to_s.rjust(5, '0') %>.html" target="specs">
98
+ <a href="rspec_doc_<%= record[:filename] %>.html" target="specs">
99
99
  <span class="method <%= record[:request][:method].downcase %>"><%= record[:request][:method] %></span>
100
100
  <%= record[:title] %><br />
101
101
  </a>
data/lib/reqres_rspec.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'reqres_rspec/version'
2
2
  require 'reqres_rspec/collector'
3
3
  require 'reqres_rspec/writers/html'
4
+ require 'reqres_rspec/writers/json_formatter'
4
5
  require 'reqres_rspec/generators/pdf'
5
6
 
6
7
  if defined?(RSpec) && ENV['REQRES_RSPEC'] == '1'
@@ -40,8 +41,25 @@ if defined?(RSpec) && ENV['REQRES_RSPEC'] == '1'
40
41
  config.after(:suite) do
41
42
  if collector.records.size > 0
42
43
  collector.sort
43
- ReqresRspec::Writers::Html.new(collector.records).write
44
- ReqresRspec::Generators::Pdf.new.generate
44
+ formatters = %w(html pdf json)
45
+
46
+ requested_formats = (ENV['REQRES_RSPEC_FORMATTERS'] || 'html').split(',')
47
+ requested_formats.sort_by!{|fmt| [formatters.index(fmt), fmt]}
48
+ requested_formats.each do |fmt|
49
+ case fmt
50
+ when 'html'
51
+ ReqresRspec::Writers::Html.new(collector.records).write
52
+ when 'pdf'
53
+ ReqresRspec::Writers::Html.new(collector.records).write unless requested_formats.include?('html')
54
+ ReqresRspec::Generators::Pdf.new.generate
55
+ when 'json'
56
+ ReqresRspec::Writers::JSONFormatter.new(collector.records).write
57
+ else
58
+ puts "No formatters defined, define one of #{formatters} in REQRES_RSPEC_FORMATTERS"
59
+ end
60
+ end
61
+
62
+ #
45
63
  end
46
64
  end
47
65
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reqres_rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.27
4
+ version: 0.0.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - rilian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-30 00:00:00.000000000 Z
11
+ date: 2014-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coderay
@@ -72,6 +72,7 @@ files:
72
72
  - lib/reqres_rspec/generators/pdf.rb
73
73
  - lib/reqres_rspec/version.rb
74
74
  - lib/reqres_rspec/writers/html.rb
75
+ - lib/reqres_rspec/writers/json_formatter.rb
75
76
  - lib/reqres_rspec/writers/templates/header.erb
76
77
  - lib/reqres_rspec/writers/templates/index.erb
77
78
  - lib/reqres_rspec/writers/templates/panel.erb