spec_producer 0.11.0 → 0.13.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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/CHANGELOG.md +15 -0
- data/README.md +73 -24
- data/lib/configuration.rb +41 -0
- data/lib/generators/spec_producer/install/install_generator.rb +13 -0
- data/lib/generators/spec_producer/install/templates/spec_producer +1 -0
- data/lib/spec_producer.rb +140 -47
- data/lib/spec_producer/factories_production_module.rb +17 -11
- data/lib/spec_producer/missing_files_module.rb +104 -41
- data/lib/spec_producer/missing_gems_module.rb +77 -0
- data/lib/spec_producer/producers.rb +10 -0
- data/lib/spec_producer/producers/base.rb +129 -0
- data/lib/spec_producer/producers/controllers_producer.rb +31 -0
- data/lib/spec_producer/producers/helpers_producer.rb +26 -0
- data/lib/spec_producer/producers/jobs_producer.rb +34 -0
- data/lib/spec_producer/producers/mailers_producer.rb +24 -0
- data/lib/spec_producer/producers/models_producer.rb +89 -0
- data/lib/spec_producer/producers/registry.rb +66 -0
- data/lib/spec_producer/producers/routes_producer.rb +44 -0
- data/lib/spec_producer/producers/serializers_producer.rb +46 -0
- data/lib/spec_producer/producers/views_producer.rb +25 -0
- data/lib/spec_producer/railtie.rb +13 -0
- data/lib/spec_producer/rspec_builders.rb +1 -0
- data/lib/spec_producer/rspec_builders/base.rb +148 -0
- data/lib/spec_producer/rspec_builders/builder.rb +220 -0
- data/lib/spec_producer/rspec_builders/matchers.rb +256 -0
- data/lib/spec_producer/spec_production_module.rb +80 -331
- data/lib/spec_producer/spec_runner.rb +14 -0
- data/lib/spec_producer/utils.rb +1 -0
- data/lib/spec_producer/utils/file_utils.rb +69 -0
- data/lib/spec_producer/version.rb +1 -1
- data/lib/tasks/spec_producer_tasks.rake +103 -0
- data/spec_producer.gemspec +6 -0
- metadata +111 -2
@@ -0,0 +1,14 @@
|
|
1
|
+
module SpecProducer
|
2
|
+
module SpecRunner
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def run(spec_types = [])
|
6
|
+
puts "\nRunning related spec tests...\n"
|
7
|
+
|
8
|
+
system 'bundle exec rake' if spec_types.empty?
|
9
|
+
spec_types.each do |type|
|
10
|
+
system "bundle exec rspec spec/#{type}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'spec_producer/utils/file_utils'
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module SpecProducer
|
2
|
+
module Utils
|
3
|
+
module FileUtils
|
4
|
+
module_function
|
5
|
+
|
6
|
+
def try_to_create_spec_file(context, filename, final_text)
|
7
|
+
if File.exists?(Rails.root.join("spec/#{context}/#{filename}_spec.rb"))
|
8
|
+
if File.open(Rails.root.join("spec/#{context}/#{filename}_spec.rb")).read == final_text
|
9
|
+
# nothing to do here, pre-existing content is the same :)
|
10
|
+
else
|
11
|
+
puts ('#'*100).colorize(:light_blue)
|
12
|
+
puts ("Please, check whether the following lines are included in: " + filename + "_spec.rb").colorize(:light_blue)
|
13
|
+
puts ('#'*100).colorize(:light_blue)
|
14
|
+
puts final_text
|
15
|
+
puts "\n\n"
|
16
|
+
end
|
17
|
+
else
|
18
|
+
unless Dir.exists? Rails.root.join("spec")
|
19
|
+
puts "Generating spec directory".colorize(:yellow)
|
20
|
+
Dir.mkdir(Rails.root.join("spec"))
|
21
|
+
end
|
22
|
+
|
23
|
+
unless Dir.exists? Rails.root.join("spec/#{context}")
|
24
|
+
puts "Generating spec/#{context} directory".colorize(:yellow)
|
25
|
+
Dir.mkdir(Rails.root.join("spec/#{context}"))
|
26
|
+
end
|
27
|
+
|
28
|
+
full_path = 'spec'
|
29
|
+
File.dirname("spec/#{context}/#{filename}_spec.rb").split('/').reject { |path| path == 'spec' }.each do |path|
|
30
|
+
unless /.*\.erb/.match path
|
31
|
+
full_path << "/#{path}"
|
32
|
+
|
33
|
+
unless Dir.exists? full_path
|
34
|
+
puts "Generating #{full_path} directory".colorize(:yellow)
|
35
|
+
Dir.mkdir(Rails.root.join(full_path))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
path = "spec/#{context}/#{filename}_spec.rb"
|
41
|
+
puts "Producing spec file for: #{path}".colorize(:green)
|
42
|
+
f = File.open("#{Rails.root.join(path)}", 'wb+')
|
43
|
+
f.write(final_text)
|
44
|
+
f.close
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def collect_helper_strings
|
49
|
+
spec_files = Dir.glob(Rails.root.join('spec/**/*_spec.rb'))
|
50
|
+
helper_strings_used = []
|
51
|
+
|
52
|
+
spec_files.each do |file|
|
53
|
+
helper = /require \'(?<helpers>\S*)\'/.match File.read(file)
|
54
|
+
|
55
|
+
helper_strings_used << helper[1] if helper.present?
|
56
|
+
end
|
57
|
+
|
58
|
+
helper_strings_used.compact!
|
59
|
+
|
60
|
+
if helper_strings_used.uniq.length == 1
|
61
|
+
"#{helper_strings_used.first}"
|
62
|
+
else
|
63
|
+
puts "More than one helpers are in place in your specs! Proceeding with 'rails_helpers'.".colorize(:yellow)
|
64
|
+
"rails_helper"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
namespace :spec_producer do
|
2
|
+
desc 'Produces controller specs files'
|
3
|
+
task :controllers => :environment do
|
4
|
+
SpecProducer.produce(only: :controllers)
|
5
|
+
end
|
6
|
+
|
7
|
+
desc 'Produces FactoryGirl factory files for each model'
|
8
|
+
task :factories => :environment do
|
9
|
+
SpecProducer.produce_factories
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'Checks if there are any of the suggested gems for testing missing from your Gemfile and adds them'
|
13
|
+
task :set_up_necessities => :environment do
|
14
|
+
SpecProducer.set_up_necessities
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Produces helper specs files'
|
18
|
+
task :helpers => :environment do
|
19
|
+
SpecProducer.produce(only: :helpers)
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Produces job specs files'
|
23
|
+
task :jobs => :environment do
|
24
|
+
SpecProducer.produce(only: :jobs)
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Produces mailer specs files'
|
28
|
+
task :mailers => :environment do
|
29
|
+
SpecProducer.produce(only: :mailers)
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'Produces model specs files'
|
33
|
+
task :models => :environment do
|
34
|
+
SpecProducer.produce(only: :models)
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'Produces route specs files'
|
38
|
+
task :routes => :environment do
|
39
|
+
SpecProducer.produce(only: :routes)
|
40
|
+
end
|
41
|
+
|
42
|
+
desc 'Produces serializer specs files'
|
43
|
+
task :serializers => :environment do
|
44
|
+
SpecProducer.produce(only: :serializers)
|
45
|
+
end
|
46
|
+
|
47
|
+
desc 'Produces view specs files'
|
48
|
+
task :views => :environment do
|
49
|
+
SpecProducer.produce(only: :views)
|
50
|
+
end
|
51
|
+
|
52
|
+
desc 'Produces all spec files the current gem supports'
|
53
|
+
task :all => :environment do
|
54
|
+
SpecProducer.produce()
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
namespace :missing_specs_printer do
|
59
|
+
desc 'Prints missing view spec files'
|
60
|
+
task :views => :environment do
|
61
|
+
SpecProducer.print_missing_view_specs()
|
62
|
+
end
|
63
|
+
|
64
|
+
desc 'Prints missing controller spec files'
|
65
|
+
task :controllers => :environment do
|
66
|
+
SpecProducer.print_missing_controller_specs()
|
67
|
+
end
|
68
|
+
|
69
|
+
desc 'Prints missing job spec files'
|
70
|
+
task :jobs => :environment do
|
71
|
+
SpecProducer.print_missing_job_specs()
|
72
|
+
end
|
73
|
+
|
74
|
+
desc 'Prints missing helper spec files'
|
75
|
+
task :helpers => :environment do
|
76
|
+
SpecProducer.print_missing_helper_specs()
|
77
|
+
end
|
78
|
+
|
79
|
+
desc 'Prints missing mailer spec files'
|
80
|
+
task :mailers => :environment do
|
81
|
+
SpecProducer.print_missing_mailer_specs()
|
82
|
+
end
|
83
|
+
|
84
|
+
desc 'Prints missing model spec files'
|
85
|
+
task :models => :environment do
|
86
|
+
SpecProducer.print_missing_model_specs()
|
87
|
+
end
|
88
|
+
|
89
|
+
desc 'Prints missing route spec files'
|
90
|
+
task :routes => :environment do
|
91
|
+
SpecProducer.print_missing_route_specs()
|
92
|
+
end
|
93
|
+
|
94
|
+
desc 'Prints missing serializer spec files'
|
95
|
+
task :serializers => :environment do
|
96
|
+
SpecProducer.print_missing_serializer_specs()
|
97
|
+
end
|
98
|
+
|
99
|
+
desc 'Prints all types of missing spec files'
|
100
|
+
task :all => :environment do
|
101
|
+
SpecProducer.print_all_missing_spec_files()
|
102
|
+
end
|
103
|
+
end
|
data/spec_producer.gemspec
CHANGED
@@ -22,4 +22,10 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.10"
|
23
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
24
|
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "sqlite3"
|
26
|
+
spec.add_development_dependency "factory_girl"
|
27
|
+
spec.add_development_dependency "shoulda-matchers"
|
28
|
+
spec.add_runtime_dependency "active_model_serializers"
|
29
|
+
spec.add_runtime_dependency "colorize"
|
30
|
+
spec.add_runtime_dependency "rails"
|
25
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spec_producer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasilis Kalligas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,90 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sqlite3
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: factory_girl
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: shoulda-matchers
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: active_model_serializers
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: colorize
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rails
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
55
139
|
description: This gem reads through the files of the rails app and produces as many
|
56
140
|
specs as possible.
|
57
141
|
email:
|
@@ -62,6 +146,7 @@ extra_rdoc_files: []
|
|
62
146
|
files:
|
63
147
|
- ".gitignore"
|
64
148
|
- ".rspec"
|
149
|
+
- ".ruby-version"
|
65
150
|
- ".travis.yml"
|
66
151
|
- CHANGELOG.md
|
67
152
|
- CODE_OF_CONDUCT.md
|
@@ -71,11 +156,35 @@ files:
|
|
71
156
|
- Rakefile
|
72
157
|
- bin/console
|
73
158
|
- bin/setup
|
159
|
+
- lib/configuration.rb
|
160
|
+
- lib/generators/spec_producer/install/install_generator.rb
|
161
|
+
- lib/generators/spec_producer/install/templates/spec_producer
|
74
162
|
- lib/spec_producer.rb
|
75
163
|
- lib/spec_producer/factories_production_module.rb
|
76
164
|
- lib/spec_producer/missing_files_module.rb
|
165
|
+
- lib/spec_producer/missing_gems_module.rb
|
166
|
+
- lib/spec_producer/producers.rb
|
167
|
+
- lib/spec_producer/producers/base.rb
|
168
|
+
- lib/spec_producer/producers/controllers_producer.rb
|
169
|
+
- lib/spec_producer/producers/helpers_producer.rb
|
170
|
+
- lib/spec_producer/producers/jobs_producer.rb
|
171
|
+
- lib/spec_producer/producers/mailers_producer.rb
|
172
|
+
- lib/spec_producer/producers/models_producer.rb
|
173
|
+
- lib/spec_producer/producers/registry.rb
|
174
|
+
- lib/spec_producer/producers/routes_producer.rb
|
175
|
+
- lib/spec_producer/producers/serializers_producer.rb
|
176
|
+
- lib/spec_producer/producers/views_producer.rb
|
177
|
+
- lib/spec_producer/railtie.rb
|
178
|
+
- lib/spec_producer/rspec_builders.rb
|
179
|
+
- lib/spec_producer/rspec_builders/base.rb
|
180
|
+
- lib/spec_producer/rspec_builders/builder.rb
|
181
|
+
- lib/spec_producer/rspec_builders/matchers.rb
|
77
182
|
- lib/spec_producer/spec_production_module.rb
|
183
|
+
- lib/spec_producer/spec_runner.rb
|
184
|
+
- lib/spec_producer/utils.rb
|
185
|
+
- lib/spec_producer/utils/file_utils.rb
|
78
186
|
- lib/spec_producer/version.rb
|
187
|
+
- lib/tasks/spec_producer_tasks.rake
|
79
188
|
- spec_producer.gemspec
|
80
189
|
homepage: https://rubygems.org/gems/spec_producer
|
81
190
|
licenses:
|