spec_producer 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/spec_producer/factories_production_module.rb +64 -0
- data/lib/spec_producer/missing_files_module.rb +37 -13
- data/lib/spec_producer/spec_production_module.rb +74 -20
- data/lib/spec_producer/version.rb +1 -1
- data/lib/spec_producer.rb +21 -23
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ca6e22c07edbf180a24cea44d49e20766b84f90
|
4
|
+
data.tar.gz: 32b9e5e6ca66434d6fe562d1d1d8a3ab19f018e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76bb1000583dd9b8da82d325975e491a994346a19308a1954b66fbc294b213af7a09823460cde128e1f71a586a0e7d2b1768806589f9f6e2687d12c2049a9192
|
7
|
+
data.tar.gz: 326c949ae2375a7c3f6f7c01b89088f1af67a5420ee39199ea1e533b98629b5731bca92888c8342d7032e584b5c8f9175e79b474632bce5d658d4e17ca7aa853
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 0.10.0 (2016-10-07)
|
2
|
+
|
3
|
+
Features:
|
4
|
+
* Allow clients to set namespace in options for missing resources
|
5
|
+
|
6
|
+
Fixes:
|
7
|
+
* Problem with missing resources methods due to typo.
|
8
|
+
|
1
9
|
## 0.9.0 (2016-10-06)
|
2
10
|
|
3
11
|
* Ignore optional parameters when producing routing specs
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module SpecProducer::FactoriesProductionModule
|
2
|
+
def self.produce_factories
|
3
|
+
Dir.glob(Rails.root.join('app/models/*.rb')).each do |x|
|
4
|
+
require x
|
5
|
+
end
|
6
|
+
|
7
|
+
not_valid_descendants = [ ActiveRecord::SchemaMigration, Delayed::Backend::ActiveRecord::Job ]
|
8
|
+
|
9
|
+
ActiveRecord::Base.descendants.reject { |descendant| not_valid_descendants.include? descendant }.each do |descendant|
|
10
|
+
final_text = "FactoryGirl.define do\n"
|
11
|
+
final_text << " factory :#{descendant.name.underscore}, :class => #{descendant.name} do\n"
|
12
|
+
|
13
|
+
descendant.columns.each do |column|
|
14
|
+
value = case column.type
|
15
|
+
when :string then "'#{descendant.name.underscore.upcase}_#{column.name.underscore.upcase}'"
|
16
|
+
when :text then "'#{descendant.name.underscore.upcase}_#{column.name.underscore.upcase}'"
|
17
|
+
when :integer then "#{rand(1...10)}"
|
18
|
+
when :decimal then "#{rand(1.0...100.0)}"
|
19
|
+
when :float then "#{rand(1.0...100.0)}"
|
20
|
+
when :datetime then "'#{DateTime.now + 365}'"
|
21
|
+
when :time then "'#{Time.now + 365*24*60*60}'"
|
22
|
+
when :date then "'#{Date.today + 365}'"
|
23
|
+
when :boolean then "#{rand(2) == 1 ? true : false}"
|
24
|
+
when :binary then "#{5.times.collect { rand(0..1).to_s }.join('')}"
|
25
|
+
end
|
26
|
+
|
27
|
+
final_text << " #{column.name} #{value}\n"
|
28
|
+
end
|
29
|
+
|
30
|
+
final_text << " end\n"
|
31
|
+
final_text << "end"
|
32
|
+
|
33
|
+
if File.exists?(Rails.root.join("spec/factories/#{descendant.name.underscore}.rb"))
|
34
|
+
puts '#'*100
|
35
|
+
puts "Please, check whether the following lines are included in: spec/factories/" + descendant.name.underscore + ".rb\n"
|
36
|
+
puts '#'*100
|
37
|
+
puts "\n"
|
38
|
+
puts final_text
|
39
|
+
else
|
40
|
+
unless Dir.exists? Rails.root.join("spec")
|
41
|
+
puts "Generating spec directory"
|
42
|
+
Dir.mkdir(Rails.root.join("spec"))
|
43
|
+
end
|
44
|
+
|
45
|
+
unless Dir.exists? Rails.root.join("spec/factories")
|
46
|
+
puts "Generating spec/factories directory"
|
47
|
+
Dir.mkdir(Rails.root.join("spec/factories"))
|
48
|
+
end
|
49
|
+
|
50
|
+
path = "spec/factories/#{descendant.name.underscore}.rb"
|
51
|
+
puts "Producing factory file for: #{path}"
|
52
|
+
f = File.open("#{Rails.root.join(path)}", 'wb+')
|
53
|
+
f.write(final_text)
|
54
|
+
f.close
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
nil
|
59
|
+
rescue NameError
|
60
|
+
puts "ActiveRecord is not set for this project. Can't produce factories for this project."
|
61
|
+
rescue Exception => e
|
62
|
+
puts "Exception '#{e}' was raised. Skipping factories production."
|
63
|
+
end
|
64
|
+
end
|
@@ -1,6 +1,10 @@
|
|
1
|
-
module MissingFilesModule
|
2
|
-
def self.print_missing_model_specs
|
3
|
-
|
1
|
+
module SpecProducer::MissingFilesModule
|
2
|
+
def self.print_missing_model_specs(options = {})
|
3
|
+
if options[:specific_namespace]
|
4
|
+
files_list = Dir["app/models/**/#{options[:specific_namespace].gsub('app/models', '')}/**/*.rb"]
|
5
|
+
else
|
6
|
+
files_list = Dir["app/models/**/*.rb"]
|
7
|
+
end
|
4
8
|
|
5
9
|
puts "\n" << "## Searching for missing model specs..."
|
6
10
|
files_list.each do |file|
|
@@ -12,8 +16,12 @@ module MissingFilesModule
|
|
12
16
|
nil
|
13
17
|
end
|
14
18
|
|
15
|
-
def self.print_missing_controller_specs
|
16
|
-
|
19
|
+
def self.print_missing_controller_specs(options = {})
|
20
|
+
if options[:specific_namespace]
|
21
|
+
files_list = Dir["app/controllers/**/#{options[:specific_namespace].gsub('app/controllers', '')}/**/*.rb"]
|
22
|
+
else
|
23
|
+
files_list = Dir["app/controllers/**/*.rb"]
|
24
|
+
end
|
17
25
|
|
18
26
|
puts "\n" << "## Searching for missing controller specs..."
|
19
27
|
files_list.each do |file|
|
@@ -25,8 +33,12 @@ module MissingFilesModule
|
|
25
33
|
nil
|
26
34
|
end
|
27
35
|
|
28
|
-
def self.print_missing_job_specs
|
29
|
-
|
36
|
+
def self.print_missing_job_specs(options = {})
|
37
|
+
if options[:specific_namespace]
|
38
|
+
files_list = Dir["app/jobs/**/#{options[:specific_namespace].gsub('app/jobs', '')}/**/*.rb"]
|
39
|
+
else
|
40
|
+
files_list = Dir["app/jobs/**/*.rb"]
|
41
|
+
end
|
30
42
|
|
31
43
|
puts "\n" << "## Searching for missing jobs specs..."
|
32
44
|
files_list.each do |file|
|
@@ -38,8 +50,12 @@ module MissingFilesModule
|
|
38
50
|
nil
|
39
51
|
end
|
40
52
|
|
41
|
-
def self.print_missing_mailer_specs
|
42
|
-
|
53
|
+
def self.print_missing_mailer_specs(options = {})
|
54
|
+
if options[:specific_namespace]
|
55
|
+
files_list = Dir["app/mailers/**/#{options[:specific_namespace].gsub('app/mailers', '')}/**/*.rb"]
|
56
|
+
else
|
57
|
+
files_list = Dir["app/mailers/**/*.rb"]
|
58
|
+
end
|
43
59
|
|
44
60
|
puts "\n" << "## Searching for missing mailers specs..."
|
45
61
|
files_list.each do |file|
|
@@ -51,8 +67,12 @@ module MissingFilesModule
|
|
51
67
|
nil
|
52
68
|
end
|
53
69
|
|
54
|
-
def self.print_missing_helper_specs
|
55
|
-
|
70
|
+
def self.print_missing_helper_specs(options = {})(options = {})
|
71
|
+
if options[:specific_namespace]
|
72
|
+
files_list = Dir["app/helpers/**/#{options[:specific_namespace].gsub('app/helpers', '')}/**/*.rb"]
|
73
|
+
else
|
74
|
+
files_list = Dir["app/helpers/**/*.rb"]
|
75
|
+
end
|
56
76
|
|
57
77
|
puts "\n" << "## Searching for missing helper specs..."
|
58
78
|
files_list.each do |file|
|
@@ -64,8 +84,12 @@ module MissingFilesModule
|
|
64
84
|
nil
|
65
85
|
end
|
66
86
|
|
67
|
-
def self.print_missing_view_specs
|
68
|
-
|
87
|
+
def self.print_missing_view_specs(options = {})
|
88
|
+
if options[:specific_namespace]
|
89
|
+
files_list = Dir["app/views/**/#{options[:specific_namespace].gsub('app/views', '')}/**/*.erb"]
|
90
|
+
else
|
91
|
+
files_list = Dir["app/views/**/*.erb"]
|
92
|
+
end
|
69
93
|
|
70
94
|
puts "\n" << "## Searching for missing view specs..."
|
71
95
|
files_list.each do |file|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module SpecProductionModule
|
1
|
+
module SpecProducer::SpecProductionModule
|
2
2
|
def self.produce_specs_for_models
|
3
3
|
Dir.glob(Rails.root.join('app/models/*.rb')).each do |x|
|
4
4
|
require x
|
@@ -78,13 +78,17 @@ module SpecProductionModule
|
|
78
78
|
final_text << "end"
|
79
79
|
|
80
80
|
if File.exists?(Rails.root.join("spec/models/#{descendant.name.underscore}_spec.rb"))
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
81
|
+
if File.open(Rails.root.join("spec/models/#{descendant.name.underscore}_spec.rb")).read == final_text
|
82
|
+
# nothing to do here, pre-existing content is the same :)
|
83
|
+
else
|
84
|
+
puts '#'*100
|
85
|
+
puts "Please, check whether the following lines are included in: " + descendant.name.underscore + "_spec.rb\n"
|
86
|
+
puts '#'*100
|
87
|
+
puts "\n"
|
88
|
+
puts final_text
|
89
|
+
end
|
86
90
|
else
|
87
|
-
|
91
|
+
check_if_spec_folder_exists
|
88
92
|
|
89
93
|
unless Dir.exists? Rails.root.join("spec/models")
|
90
94
|
puts "Generating spec/models directory"
|
@@ -150,7 +154,7 @@ module SpecProductionModule
|
|
150
154
|
puts final_text
|
151
155
|
end
|
152
156
|
else
|
153
|
-
|
157
|
+
check_if_spec_folder_exists
|
154
158
|
|
155
159
|
unless Dir.exists? Rails.root.join("spec/routing")
|
156
160
|
puts "Generating spec/routing directory"
|
@@ -250,9 +254,19 @@ module SpecProductionModule
|
|
250
254
|
|
251
255
|
final_text << "end\n"
|
252
256
|
|
253
|
-
|
257
|
+
check_if_spec_folder_exists
|
254
258
|
|
255
|
-
|
259
|
+
if File.exists?(Rails.root.join(file_name))
|
260
|
+
if File.open(Rails.root.join(file_name)).read == final_text
|
261
|
+
# nothing to do here, pre-existing content is the same :)
|
262
|
+
else
|
263
|
+
puts '#'*100
|
264
|
+
puts "Please, check whether the following lines are included in: " + file_name + "\n"
|
265
|
+
puts '#'*100
|
266
|
+
puts "\n"
|
267
|
+
puts final_text
|
268
|
+
end
|
269
|
+
else
|
256
270
|
puts "Producing view spec file for: #{file_name}"
|
257
271
|
f = File.open(file_name, 'wb+')
|
258
272
|
f.write(final_text)
|
@@ -286,9 +300,19 @@ module SpecProductionModule
|
|
286
300
|
final_text << " pending 'view helper tests'\n"
|
287
301
|
final_text << "end"
|
288
302
|
|
289
|
-
|
303
|
+
check_if_spec_folder_exists
|
290
304
|
|
291
|
-
|
305
|
+
if File.exists?(Rails.root.join(file_name))
|
306
|
+
if File.open(Rails.root.join(file_name)).read == final_text
|
307
|
+
# nothing to do here, pre-existing content is the same :)
|
308
|
+
else
|
309
|
+
puts '#'*100
|
310
|
+
puts "Please, check whether the following lines are included in: " + file_name + "\n"
|
311
|
+
puts '#'*100
|
312
|
+
puts "\n"
|
313
|
+
puts final_text
|
314
|
+
end
|
315
|
+
else
|
292
316
|
puts "Producing helper spec file for: #{file_name}"
|
293
317
|
f = File.open(file_name, 'wb+')
|
294
318
|
f.write(final_text)
|
@@ -322,9 +346,19 @@ module SpecProductionModule
|
|
322
346
|
final_text << " pending 'mailer tests'\n"
|
323
347
|
final_text << "end"
|
324
348
|
|
325
|
-
|
349
|
+
check_if_spec_folder_exists
|
326
350
|
|
327
|
-
|
351
|
+
if File.exists?(Rails.root.join(file_name))
|
352
|
+
if File.open(Rails.root.join(file_name)).read == final_text
|
353
|
+
# nothing to do here, pre-existing content is the same :)
|
354
|
+
else
|
355
|
+
puts '#'*100
|
356
|
+
puts "Please, check whether the following lines are included in: " + file_name + "\n"
|
357
|
+
puts '#'*100
|
358
|
+
puts "\n"
|
359
|
+
puts final_text
|
360
|
+
end
|
361
|
+
else
|
328
362
|
puts "Producing helper spec file for: #{file_name}"
|
329
363
|
f = File.open(file_name, 'wb+')
|
330
364
|
f.write(final_text)
|
@@ -358,9 +392,19 @@ module SpecProductionModule
|
|
358
392
|
final_text << " pending 'job tests'\n"
|
359
393
|
final_text << "end"
|
360
394
|
|
361
|
-
|
395
|
+
check_if_spec_folder_exists
|
362
396
|
|
363
|
-
|
397
|
+
if File.exists?(Rails.root.join(file_name))
|
398
|
+
if File.open(Rails.root.join(file_name)).read == final_text
|
399
|
+
# nothing to do here, pre-existing content is the same :)
|
400
|
+
else
|
401
|
+
puts '#'*100
|
402
|
+
puts "Please, check whether the following lines are included in: " + file_name + "\n"
|
403
|
+
puts '#'*100
|
404
|
+
puts "\n"
|
405
|
+
puts final_text
|
406
|
+
end
|
407
|
+
else
|
364
408
|
puts "Producing helper spec file for: #{file_name}"
|
365
409
|
f = File.open(file_name, 'wb+')
|
366
410
|
f.write(final_text)
|
@@ -410,9 +454,19 @@ module SpecProductionModule
|
|
410
454
|
|
411
455
|
final_text << "end\n"
|
412
456
|
|
413
|
-
|
457
|
+
check_if_spec_folder_exists
|
414
458
|
|
415
|
-
|
459
|
+
if File.exists?(Rails.root.join(file_name))
|
460
|
+
if File.open(Rails.root.join(file_name)).read == final_text
|
461
|
+
# nothing to do here, pre-existing content is the same :)
|
462
|
+
else
|
463
|
+
puts '#'*100
|
464
|
+
puts "Please, check whether the following lines are included in: " + file_name + "\n"
|
465
|
+
puts '#'*100
|
466
|
+
puts "\n"
|
467
|
+
puts final_text
|
468
|
+
end
|
469
|
+
else
|
416
470
|
puts "Producing controller spec file for: #{file_name}"
|
417
471
|
f = File.open(file_name, 'wb+')
|
418
472
|
f.write(final_text)
|
@@ -473,7 +527,7 @@ module SpecProductionModule
|
|
473
527
|
end
|
474
528
|
end
|
475
529
|
|
476
|
-
def self.
|
530
|
+
def self.check_if_spec_folder_exists
|
477
531
|
unless Dir.exists? Rails.root.join("spec")
|
478
532
|
puts "Generating spec directory"
|
479
533
|
Dir.mkdir(Rails.root.join("spec"))
|
@@ -483,5 +537,5 @@ module SpecProductionModule
|
|
483
537
|
private_class_method :produce_association_options
|
484
538
|
private_class_method :require_helper_string
|
485
539
|
private_class_method :collect_helper_strings
|
486
|
-
private_class_method :
|
540
|
+
private_class_method :check_if_spec_folder_exists
|
487
541
|
end
|
data/lib/spec_producer.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "spec_producer/version"
|
2
2
|
require "spec_producer/missing_files_module"
|
3
3
|
require "spec_producer/spec_production_module"
|
4
|
+
require "spec_producer/factories_production_module"
|
4
5
|
|
5
6
|
module SpecProducer
|
6
7
|
def self.produce_specs_for_all_types
|
@@ -130,42 +131,39 @@ module SpecProducer
|
|
130
131
|
end
|
131
132
|
|
132
133
|
nil
|
133
|
-
|
134
|
-
puts "ActiveRecord is not set for this project. Can't produce factories for this project."
|
135
|
-
rescue Exception => e
|
136
|
-
puts "Exception '#{e}' was raised. Skipping factories production."
|
134
|
+
FactoriesProductionModule.produce_factories
|
137
135
|
end
|
138
136
|
|
139
|
-
def self.print_all_missing_spec_files
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
137
|
+
def self.print_all_missing_spec_files(options = {})
|
138
|
+
MissingFilesModule.print_missing_model_specs(options)
|
139
|
+
MissingFilesModule.print_missing_controller_specs(options)
|
140
|
+
MissingFilesModule.print_missing_helper_specs(options)
|
141
|
+
MissingFilesModule.print_missing_view_specs(options)
|
142
|
+
MissingFilesModule.print_missing_mailer_specs(options)
|
143
|
+
MissingFilesModule.print_missing_job_specs(options)
|
146
144
|
end
|
147
145
|
|
148
|
-
def self.print_missing_model_specs
|
149
|
-
|
146
|
+
def self.print_missing_model_specs(options = {})
|
147
|
+
MissingFilesModule.print_missing_model_specs(options)
|
150
148
|
end
|
151
149
|
|
152
|
-
def self.print_missing_controller_specs
|
153
|
-
|
150
|
+
def self.print_missing_controller_specs(options = {})
|
151
|
+
MissingFilesModule.print_missing_controller_specs(options)
|
154
152
|
end
|
155
153
|
|
156
|
-
def self.print_missing_helper_specs
|
157
|
-
|
154
|
+
def self.print_missing_helper_specs(options = {})
|
155
|
+
MissingFilesModule.print_missing_helper_specs(options)
|
158
156
|
end
|
159
157
|
|
160
|
-
def self.print_missing_view_specs
|
161
|
-
|
158
|
+
def self.print_missing_view_specs(options = {})
|
159
|
+
MissingFilesModule.print_missing_view_specs(options)
|
162
160
|
end
|
163
161
|
|
164
|
-
def self.print_missing_mailer_specs
|
165
|
-
|
162
|
+
def self.print_missing_mailer_specs(options = {})
|
163
|
+
MissingFilesModule.print_missing_mailer_specs(options)
|
166
164
|
end
|
167
165
|
|
168
|
-
def self.print_missing_job_specs
|
169
|
-
|
166
|
+
def self.print_missing_job_specs(options = {})
|
167
|
+
MissingFilesModule.print_missing_job_specs(options)
|
170
168
|
end
|
171
169
|
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.10.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: 2016-10-
|
11
|
+
date: 2016-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- bin/console
|
73
73
|
- bin/setup
|
74
74
|
- lib/spec_producer.rb
|
75
|
+
- lib/spec_producer/factories_production_module.rb
|
75
76
|
- lib/spec_producer/missing_files_module.rb
|
76
77
|
- lib/spec_producer/spec_production_module.rb
|
77
78
|
- lib/spec_producer/version.rb
|