speg 1.1.2 → 1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72a1418b1b185cae923d4b2670dc35fb6882a0a8a8c02c340c45e961f818c3aa
4
- data.tar.gz: b094e78a226085b0f513ee0b0311f194bae354228093f2667d8a33baa6c10c2e
3
+ metadata.gz: 36b5e7525897945ea8344efb15b19bc2ee0143403843181c1a67b26142f0fb5c
4
+ data.tar.gz: ca0d84faaca6e310b37073b900fd6a452ee54d1a36e36f600e5e7c3a57eabb74
5
5
  SHA512:
6
- metadata.gz: b1dc9eac30e5d64cc15f4167b4bf87338096f924592376d5e10ab7fc1879daef1bf8d848fcd9e25cdbebd24fac347a809e47d0df5ecf3b0c61d819a9987d0e19
7
- data.tar.gz: 4cc816c10626971feb55ae67880703166265e22b49b7aa1f23465b91471bba6c467825c2cb893d1155f8917352a46c6ea76407cb0a562f64eb51932bb92a06c2
6
+ metadata.gz: 3a8381c7709a520117c05943ef5ba3abb88514771fce2c5b1d2514d56debe17ea0b50045b88ed3e02745b47b8ab852b46eac126b713157b39af62ecfbf10d7b1
7
+ data.tar.gz: 5278056e3421344786e222a8f6a7e28bfab96c86d72b2d2ea5f905b25968015f5ff084b5024d3829f0f15d0ec26e58c515e68dcce6e7a8beed315839dc250d25
@@ -16,6 +16,14 @@ module Speg
16
16
 
17
17
  @option_parser.on('--minitest', 'Generate Minitest files') { generate_test_files('test') }
18
18
 
19
+ @option_parser.on('-sg', '--spec_generate ARGUEMENT', 'generate single spec file') do |file_path|
20
+ generate_single_test_file('spec', file_path)
21
+ end
22
+
23
+ @option_parser.on('-tg', '--test_generate ARGUEMENT', 'generate single test file') do |file_path|
24
+ generate_single_test_file('test', file_path)
25
+ end
26
+
19
27
  if ARGV.empty?
20
28
  puts @option_parser.help
21
29
  exit
@@ -24,32 +32,51 @@ module Speg
24
32
  @option_parser.parse!
25
33
  end
26
34
 
27
- def generate_test_files(file_suffix)
35
+ def generate_single_test_file(test_suit, dir)
36
+ _file_name, file_path, klass_name = file_data(dir, test_suit)
37
+
38
+ generate_file(test_suit, file_path, klass_name)
39
+ end
40
+
41
+ def generate_test_files(test_suit)
28
42
  PATHS.each do |path|
29
43
  next unless Dir.exist?(path)
30
44
 
31
45
  file_paths(path).each do |dir|
32
- file_path = dir.split('/')
33
- file_name = "#{file_path.last.split('.').first}_#{file_suffix}.rb"
34
- klass_name = File.basename(file_path.last, '.rb').split('_').map(&:humanize).join('')
35
- file_path.pop
36
- file_path.shift
37
- file_path << file_name
38
- file = "#{file_suffix}/#{file_path.join('/')}"
46
+ file_name, file_path, klass_name = file_data(dir, test_suit)
39
47
 
40
48
  # skip if file name is application
41
49
  next if file_name.split('_').first == 'application'
42
50
 
43
51
  # skip if spec file exists
44
- next if File.exist?(file)
52
+ next if File.exist?(file_path)
45
53
 
46
- if file_suffix == 'test'
47
- minitest_template(file, klass_name)
48
- else
49
- rspec_template(file, klass_name)
50
- end
54
+ generate_file(test_suit, file_path, klass_name)
51
55
  end
52
56
  end
53
57
  end
58
+
59
+ private
60
+
61
+ # return file_name, file_path and klass_name
62
+ def file_data(dir, test_suit)
63
+ file_path = dir.split('/')
64
+ file_name = "#{file_path.last.split('.').first}_#{test_suit}.rb"
65
+ klass_name = File.basename(file_path.last, '.rb').split('_').map(&:humanize).join('')
66
+ file_path.pop
67
+ file_path.shift
68
+ file_path << file_name
69
+ file = "#{test_suit}/#{file_path.join('/')}"
70
+
71
+ [file_name, file, klass_name]
72
+ end
73
+
74
+ def generate_file(test_suit, file, klass_name)
75
+ if test_suit == 'test'
76
+ minitest_template(file, klass_name)
77
+ else
78
+ rspec_template(file, klass_name)
79
+ end
80
+ end
54
81
  end
55
82
  end
data/lib/speg/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Speg
4
4
  class Version
5
- VERSION = '1.1.2'
5
+ VERSION = '1.3.0'
6
6
  end
7
7
  end
@@ -5,8 +5,8 @@ RSpec.describe Speg::FileGenerator do
5
5
  let(:path){ ['spec/lib/models'] }
6
6
  let(:file_path) { 'spec/lib/models/dummy_model_spec.rb' }
7
7
 
8
- context 'generate file' do
9
- before(:each) do
8
+ describe 'generate file' do
9
+ before do
10
10
  stub_const('Speg::FileGenerator::PATHS', path)
11
11
  described_class.new.generate_test_files('spec')
12
12
  end
@@ -14,10 +14,6 @@ RSpec.describe Speg::FileGenerator do
14
14
  it 'generates a spec file' do
15
15
  expect(File.exist?('spec/lib/models/test_spec.rb')).to be_truthy
16
16
  end
17
-
18
- xit 'skips existing files' do
19
- expect(described_class.new.generate_test_files('spec')).not_to eq file_path
20
- end
21
17
  end
22
18
 
23
19
  context '#rspec_template' do
@@ -31,4 +27,15 @@ RSpec.describe Speg::FileGenerator do
31
27
  expect(File.read(file_path)).to include('RSpec.describe DummyModel')
32
28
  end
33
29
  end
30
+
31
+ describe '#generate_single_test_file' do
32
+ before do
33
+ path = 'spec/lib/models/dummy.rb'
34
+ described_class.new.generate_single_test_file('test', path)
35
+ end
36
+
37
+ it 'generates single test file' do
38
+ expect(File.exist?('test/lib/models/dummy_test.rb')).to be_truthy
39
+ end
40
+ end
34
41
  end
@@ -5,6 +5,6 @@ require_relative '../../../lib/speg/version'
5
5
 
6
6
  RSpec.describe Speg::Version do
7
7
  it 'has a version number' do
8
- expect(Speg::Version::VERSION).to eq '1.1.2'
8
+ expect(Speg::Version::VERSION).to eq '1.2.0'
9
9
  end
10
10
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
-
2
+ require 'fileutils'
3
3
  RSpec.configure do |config|
4
4
  # Enable flags like --only-failures and --next-failure
5
5
  config.example_status_persistence_file_path = ".rspec_status"
@@ -16,7 +16,8 @@ RSpec.configure do |config|
16
16
  spec_file = File.expand_path('spec/lib/models/dummy_model_spec.rb')
17
17
  file = File.expand_path('spec/lib/models/test_spec.rb')
18
18
 
19
- File.delete(file)
20
- File.delete(spec_file)
19
+ File.delete(file) if File.exist?(file)
20
+ File.delete(spec_file) if File.exist?(spec_file)
21
+ FileUtils.rm_rf('test') if Dir.exists?('test')
21
22
  end
22
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: speg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Opara Ifeanyi Christian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-26 00:00:00.000000000 Z
11
+ date: 2024-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.0'
19
+ version: '8.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '7.0'
26
+ version: '8.0'
27
27
  description: This gem creates test/spec files that were not created automatically
28
28
  with rspec/minitest, this is especially helpful if you have to generate multiple
29
29
  test files
@@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  - !ruby/object:Gem::Version
72
72
  version: '0'
73
73
  requirements: []
74
- rubygems_version: 3.3.26
74
+ rubygems_version: 3.5.9
75
75
  signing_key:
76
76
  specification_version: 4
77
77
  summary: Create spec/test files for your test framework