rails_services 1.0.0 → 1.1.2

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
  SHA1:
3
- metadata.gz: 5413a8f8f97cf858983bacef0211b5f8c07e4c21
4
- data.tar.gz: 5673400b590f441e5a07c6c30673ec5638555149
3
+ metadata.gz: 21616fa9843e7541e21b88152262972415f4d12d
4
+ data.tar.gz: 1abdedc6900bd6d4c36aee6a9bc98afa2a7c7338
5
5
  SHA512:
6
- metadata.gz: c2dbd01c02a5f518be4fa69161b09c9a5be5bc1760434c3602a915fe254130c6e3edec3d0f14c13849f8e9cd45247eaad58a99a551a04cfa3fa9a5d4d42187e1
7
- data.tar.gz: c611e5527ee7c2c97223f36a64c5b4ced4ec3bc30d9e3311bf627a63c4da4731c9468c0cca5dc14b50c4feda844663fc004cf6d75e317c446ea7e67a227d1201
6
+ metadata.gz: e0770ba5f07634e6193ed1baaed6c334a2bd15c079f2dce31cb9ecf17c8891e45cd888b5d39a3dd4b372aa330688321595d220040f9252bf4f2651365e46f6e0
7
+ data.tar.gz: d390a8d7ef9afbd7828f9427bdc6501eb0d334694b48d23f2967fd5850ac0a403a984b9b739b4fa8fb004a052801cedca305d8a4af20130448b94e7ef40b23fe
data/CHANGELOG.md ADDED
@@ -0,0 +1 @@
1
+ 1.1.2 - should be fix for a bad build command.
data/README.md CHANGED
@@ -1,12 +1,14 @@
1
1
  # RailsServices
2
2
 
3
- A very (VERY) simple gem for Rails that adds a generator for easily creating a service class and its accompanying spec file.
3
+ [![Code Climate](https://codeclimate.com/github/imageaid/rails_service_generator.png)](https://codeclimate.com/github/imageaid/rails_service_generator)
4
+ [![Test Coverage](https://codeclimate.com/github/imageaid/rails_service_generator/coverage.png)](https://codeclimate.com/github/imageaid/rails_service_generator)
5
+ [![Gem Version](https://badge.fury.io/rb/rails_services.svg)](http://badge.fury.io/rb/rails_services)
4
6
 
5
- At this time, the gem only creates an RSpec test file. MiniTest and Test::Unit support forthcoming.
7
+ A very (VERY) simple gem for Rails that adds a generator for easily creating a service class and its accompanying spec or test unit file.
6
8
 
7
9
  ## Requirements
8
10
 
9
- Rails 3.2.19 and higher
11
+ Rails 4.2.0 and higher
10
12
 
11
13
  ## Installation
12
14
 
@@ -1,9 +1,16 @@
1
1
  Description:
2
+ Creates a service class and accompanying spec file
2
3
  Destroys a service class and accompanying spec file
3
4
 
4
5
  Example:
5
6
  rails generate rails_services:destroy Thing Model|Controller Sub-folder [opt]
6
7
 
7
8
  This will remove:
9
+ app/services/model|controller/[sub-folder]/thing.rb
10
+ spec/services/model|controller/[sub-folder]/thing_spec.rb
11
+
12
+ rails generate rails_services:create Thing Model|Controller Sub-folder [opt]
13
+
14
+ This will add:
8
15
  app/services/model|controller/[sub-folder]/thing.rb
9
16
  spec/services/model|controller/[sub-folder]/thing_spec.rb
@@ -1,5 +1,5 @@
1
1
  module RailsServices
2
- module Generators
2
+ class Generators
3
3
  class CreateGenerator < Rails::Generators::Base
4
4
  source_root File.expand_path('../templates', __FILE__)
5
5
  argument :service_name, type: :string
@@ -8,12 +8,20 @@ module RailsServices
8
8
 
9
9
  def create_service
10
10
  template 'base_service.rb.erb', "app/services/#{service_directory}/#{service_file}"
11
- template 'base_service_spec.rb.erb', "spec/services/#{service_directory}/#{spec_file}"
11
+ create_test
12
12
  end
13
13
 
14
14
  private
15
+ def create_test
16
+ if File.exists?('spec/spec_helper.rb')
17
+ template 'base_service_spec.rb.erb', "spec/services/#{service_directory}/#{spec_file}"
18
+ else
19
+ template 'base_service_unit_test.rb.erb', "test/services/#{service_directory}/#{unit_file}"
20
+ end
21
+ end
22
+
15
23
  def service_directory
16
- file_path = "#{parent_name.underscore}"
24
+ file_path = "#{parent_name.pluralize.underscore}"
17
25
  file_path += "/#{sub_folder.underscore}" if sub_folder.present?
18
26
  file_path
19
27
  end
@@ -26,12 +34,28 @@ module RailsServices
26
34
  "#{service_name.underscore}_spec.rb"
27
35
  end
28
36
 
37
+ def unit_file
38
+ "#{service_name.underscore}_test.rb"
39
+ end
40
+
29
41
  def qualified_name
30
- name = "#{parent_name.camelize}::"
42
+ name = "#{parent_name.pluralize.camelize}::"
31
43
  name += "#{sub_folder.camelize}::" if sub_folder.present?
32
44
  name += "#{service_name.camelize}"
33
45
  name
34
46
  end
47
+
48
+ def module_name
49
+ "#{parent_name.pluralize.camelize}"
50
+ end
51
+
52
+ def subfolder_name
53
+ "#{sub_folder.try(:camelize)}"
54
+ end
55
+
56
+ def class_name
57
+ "#{service_name.camelize}"
58
+ end
35
59
  end
36
60
  end
37
61
  end
@@ -1,5 +1,5 @@
1
1
  module RailsServices
2
- module Generators
2
+ class Generators
3
3
  class DestroyGenerator < Rails::Generators::Base
4
4
  argument :service_name, type: :string
5
5
  argument :parent_name, type: :string
@@ -20,7 +20,7 @@ module RailsServices
20
20
  end
21
21
 
22
22
  def service_parent_directory
23
- "#{parent_name.underscore}"
23
+ "#{parent_name.pluralize.underscore}"
24
24
  end
25
25
 
26
26
  def service_file
@@ -0,0 +1,13 @@
1
+ <%= "module #{module_name}" %>
2
+ <% if subfolder_name.present? %>
3
+ <%= "module #{subfolder_name}" %>
4
+ <% end %>
5
+ <%= "class #{class_name}" %>
6
+ <%= "# SAMPLE USAGE: #{qualified_name}.call(*args)" %>
7
+ <%= 'def self.call' %>
8
+ <%= 'end' %>
9
+ <%= 'end' %>
10
+ <% if subfolder_name.present? %>
11
+ <%= 'end' %>
12
+ <% end %>
13
+ <%= 'end' %>
@@ -1,11 +1,7 @@
1
1
  <%= "describe #{qualified_name} do" %>
2
-
3
2
  <%= "context 'doing something' do" %>
4
-
5
3
  <%= "it 'should test something' do" %>
6
4
  <%= 'skip' %>
7
5
  <%= 'end' %>
8
-
9
6
  <%= 'end' %>
10
-
11
7
  <%= 'end' %>
@@ -0,0 +1,7 @@
1
+ <%= "require 'test_helper'" %>
2
+
3
+ <%= "class #{module_name}Test < ActiveSupport::TestCase" %>
4
+ <%= 'def test_some_stuff' %>
5
+ <%= "assert (1 == 2), 'You best test yourself before you wreck yourself!'" %>
6
+ <%= 'end' %>
7
+ <%= 'end' %>
@@ -1,10 +1,3 @@
1
- require 'rails_services/version'
2
-
3
- begin
4
- require 'pry'
5
- rescue LoadError
6
- end
7
-
8
1
  module RailsServices
9
2
  # Your code goes here...
10
3
  end
@@ -1,3 +1,3 @@
1
1
  module RailsServices
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.2'
3
3
  end
@@ -0,0 +1,17 @@
1
+ require_relative '../../../../test/test_helper'
2
+
3
+ class CreateGeneratorTest < Rails::Generators::TestCase
4
+ tests ::RailsServices::Generators::CreateGenerator
5
+
6
+ destination File.expand_path('../../tmp', __FILE__)
7
+
8
+ setup do
9
+ prepare_destination
10
+ run_generator(%w(TestService ParentModel SubFolder))
11
+ end
12
+
13
+ test 'generates a service class' do
14
+ assert_file 'app/services/parent_models/sub_folder/test_service.rb'
15
+ end
16
+
17
+ end
@@ -0,0 +1,17 @@
1
+ require_relative '../../../../test/test_helper'
2
+
3
+ class DestroyGeneratorTest < Rails::Generators::TestCase
4
+ tests ::RailsServices::Generators::DestroyGenerator
5
+
6
+ destination File.expand_path('../../tmp', __FILE__)
7
+
8
+ setup do
9
+ prepare_destination
10
+ run_generator(%w(TestService ParentModel SubFolder))
11
+ end
12
+
13
+ test 'removes an initializer' do
14
+ assert_no_file 'app/services/parent_models/sub_folder/test_service.rb'
15
+ end
16
+
17
+ end
@@ -0,0 +1,48 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+
3
+ require 'rails'
4
+ require 'rails/generators'
5
+ # require 'rails_service_generator'
6
+ require_relative '../lib/generators/rails_services/destroy_generator'
7
+ require_relative '../lib/generators/rails_services/create_generator'
8
+ require 'shellwords'
9
+ require 'minitest/autorun'
10
+ require 'minitest/reporters'
11
+ require 'minitest/pride'
12
+
13
+
14
+ class MiniTest::Unit::TestCase
15
+ ActiveSupport::TestCase.test_order = :random
16
+ # Transactional fixtures accelerate your tests by wrapping each test method
17
+ # in a transaction that's rolled back on completion. This ensures that the
18
+ # test database remains unchanged so your fixtures don't have to be reloaded
19
+ # between every test method. Fewer database queries means faster tests.
20
+ #
21
+ # Read Mike Clark's excellent walk-through at
22
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
23
+ #
24
+ # Every Active Record database supports transactions except MyISAM tables
25
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
26
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
27
+ # is recommended.
28
+ #
29
+ # The only drawback to using transactional fixtures is when you actually
30
+ # need to test transactions. Since your test is bracketed by a transaction,
31
+ # any transactions started in your code will be automatically rolled back.
32
+ # self.use_transactional_fixtures = true
33
+
34
+ # Instantiated fixtures are slow, but give you @david where otherwise you
35
+ # would need people(:david). If you don't want to migrate your existing
36
+ # test cases which use the @david style and don't mind the speed hit (each
37
+ # instantiated fixtures translates to a database query per test method),
38
+ # then set this back to true.
39
+ # self.use_instantiated_fixtures = false
40
+
41
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
42
+ #
43
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
44
+ # -- they do not yet inherit this setting
45
+ # fixtures :all
46
+
47
+ # Add more helper methods to be used by all tests here...
48
+ end
metadata CHANGED
@@ -1,57 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Kaminsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-26 00:00:00.000000000 Z
11
+ date: 2016-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 3.2.19
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 3.2.19
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rails
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ">="
17
+ - - ">"
32
18
  - !ruby/object:Gem::Version
33
- version: 3.2.19
19
+ version: '4'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 3.2.19
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.6'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
24
+ - - ">"
53
25
  - !ruby/object:Gem::Version
54
- version: '1.6'
26
+ version: '4'
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: rake
57
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +39,7 @@ dependencies:
67
39
  - !ruby/object:Gem::Version
68
40
  version: '0'
69
41
  - !ruby/object:Gem::Dependency
70
- name: rspec
42
+ name: minitest
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - ">="
@@ -81,7 +53,7 @@ dependencies:
81
53
  - !ruby/object:Gem::Version
82
54
  version: '0'
83
55
  - !ruby/object:Gem::Dependency
84
- name: pry
56
+ name: minitest-reporters
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - ">="
@@ -95,31 +67,27 @@ dependencies:
95
67
  - !ruby/object:Gem::Version
96
68
  version: '0'
97
69
  description: Speed up development when using a Service Layer by easily creating service
98
- classes and their attending test (spec) file.
70
+ classes and their attending test (gem) file.
99
71
  email:
100
72
  - imageaid@gmail.com
101
73
  executables: []
102
74
  extensions: []
103
75
  extra_rdoc_files: []
104
76
  files:
105
- - ".gitignore"
106
- - ".rspec"
107
- - Gemfile
77
+ - CHANGELOG.md
108
78
  - LICENSE.txt
109
79
  - README.md
110
- - Rakefile
111
- - lib/generators/rails_services/create/USAGE
112
- - lib/generators/rails_services/create/create_generator.rb
113
- - lib/generators/rails_services/create/templates/base_service.rb.erb
114
- - lib/generators/rails_services/create/templates/base_service_spec.rb.erb
115
- - lib/generators/rails_services/destroy/USAGE
116
- - lib/generators/rails_services/destroy/destroy_generator.rb
80
+ - lib/generators/rails_services/USAGE
81
+ - lib/generators/rails_services/create_generator.rb
82
+ - lib/generators/rails_services/destroy_generator.rb
83
+ - lib/generators/rails_services/templates/base_service.rb.erb
84
+ - lib/generators/rails_services/templates/base_service_spec.rb.erb
85
+ - lib/generators/rails_services/templates/base_service_unit_test.rb.erb
117
86
  - lib/rails_services.rb
118
87
  - lib/rails_services/version.rb
119
- - rails_services.gemspec
120
- - spec/generators/rails_services/create/create_generator_spec.rb
121
- - spec/generators/rails_services/destroy/destroy_generator_spec.rb
122
- - spec/spec_helper.rb
88
+ - test/lib/generators/rails_services/create_generator_test.rb
89
+ - test/lib/generators/rails_services/destroy_generator_test.rb
90
+ - test/test_helper.rb
123
91
  homepage: https://github.com/imageaid/rails_service_generator
124
92
  licenses:
125
93
  - MIT
@@ -140,12 +108,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
108
  version: '0'
141
109
  requirements: []
142
110
  rubyforge_project:
143
- rubygems_version: 2.2.2
111
+ rubygems_version: 2.5.1
144
112
  signing_key:
145
113
  specification_version: 4
146
114
  summary: A Ruby gem that adds a rails generator for creating service classes.
147
115
  test_files:
148
- - spec/generators/rails_services/create/create_generator_spec.rb
149
- - spec/generators/rails_services/destroy/destroy_generator_spec.rb
150
- - spec/spec_helper.rb
151
- has_rdoc:
116
+ - test/lib/generators/rails_services/create_generator_test.rb
117
+ - test/lib/generators/rails_services/destroy_generator_test.rb
118
+ - test/test_helper.rb
data/.gitignore DELETED
@@ -1,23 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- *.bundle
19
- *.so
20
- *.o
21
- *.a
22
- mkmf.log
23
- .idea
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --color
2
- --warnings
3
- --require spec_helper
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in rails_services.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,11 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task default: :spec
7
-
8
- task :console do
9
- exec 'pry -r rails_services -I ./lib'
10
- end
11
-
@@ -1,9 +0,0 @@
1
- Description:
2
- Generates a service class and accompanying spec file
3
-
4
- Example:
5
- rails generate rails_services:create Thing Model|Controller Sub-folder [opt]
6
-
7
- This will create:
8
- app/services/model|controller/[sub-folder]/thing.rb
9
- spec/services/model|controller/[sub-folder]/thing_spec.rb
@@ -1,8 +0,0 @@
1
- <%= "class #{qualified_name}" %>
2
-
3
- <%= "# SAMPLE USAGE: #{qualified_name}.call(*args)" %>
4
- <%= 'def self.call' %>
5
-
6
- <%= 'end' %>
7
-
8
- <%= 'end' %>
@@ -1,28 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'rails_services/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = 'rails_services'
8
- spec.version = RailsServices::VERSION
9
- spec.authors = ['Craig Kaminsky']
10
- spec.email = ['imageaid@gmail.com']
11
- spec.summary = %q{A Ruby gem that adds a rails generator for creating service classes.}
12
- spec.description = %q{Speed up development when using a Service Layer by easily creating service classes and their attending test (spec) file.}
13
- spec.homepage = 'https://github.com/imageaid/rails_service_generator'
14
- spec.license = 'MIT'
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ['lib']
20
-
21
- spec.add_dependency 'activesupport', '>= 3.2.19'
22
- spec.add_dependency 'rails', '>= 3.2.19'
23
-
24
- spec.add_development_dependency 'bundler', '~> 1.6'
25
- spec.add_development_dependency 'rake'
26
- spec.add_development_dependency 'rspec'
27
- spec.add_development_dependency 'pry'
28
- end
@@ -1,5 +0,0 @@
1
- describe 'My behaviour' do
2
- it 'should do something' do
3
- expect(true).to be_falsey
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- describe 'My behaviour' do
2
-
3
- it 'should do something' do
4
- expect(true).to be_falsey
5
- end
6
-
7
- end
data/spec/spec_helper.rb DELETED
@@ -1,64 +0,0 @@
1
- require 'rails_services'
2
-
3
- RSpec.configure do |config|
4
- # The settings below are suggested to provide a good initial experience
5
- # with RSpec, but feel free to customize to your heart's content.
6
- =begin
7
- # These two settings work together to allow you to limit a spec run
8
- # to individual examples or groups you care about by tagging them with
9
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
10
- # get run.
11
- config.filter_run :focus
12
- config.run_all_when_everything_filtered = true
13
-
14
- # Many RSpec users commonly either run the entire suite or an individual
15
- # file, and it's useful to allow more verbose output when running an
16
- # individual spec file.
17
- if config.files_to_run.one?
18
- # Use the documentation formatter for detailed output,
19
- # unless a formatter has already been configured
20
- # (e.g. via a command-line flag).
21
- config.default_formatter = 'doc'
22
- end
23
-
24
- # Print the 10 slowest examples and example groups at the
25
- # end of the spec run, to help surface which specs are running
26
- # particularly slow.
27
- config.profile_examples = 10
28
-
29
- # Run specs in random order to surface order dependencies. If you find an
30
- # order dependency and want to debug it, you can fix the order by providing
31
- # the seed, which is printed after each run.
32
- # --seed 1234
33
- config.order = :random
34
-
35
- # Seed global randomization in this process using the `--seed` CLI option.
36
- # Setting this allows you to use `--seed` to deterministically reproduce
37
- # test failures related to randomization by passing the same `--seed` value
38
- # as the one that triggered the failure.
39
- Kernel.srand config.seed
40
-
41
- # rspec-expectations config goes here. You can use an alternate
42
- # assertion/expectation library such as wrong or the stdlib/minitest
43
- # assertions if you prefer.
44
- config.expect_with :rspec do |expectations|
45
- # Enable only the newer, non-monkey-patching expect syntax.
46
- # For more details, see:
47
- # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
48
- expectations.syntax = :expect
49
- end
50
-
51
- # rspec-mocks config goes here. You can use an alternate test double
52
- # library (such as bogus or mocha) by changing the `mock_with` option here.
53
- config.mock_with :rspec do |mocks|
54
- # Enable only the newer, non-monkey-patching expect syntax.
55
- # For more details, see:
56
- # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
57
- mocks.syntax = :expect
58
-
59
- # Prevents you from mocking or stubbing a method that does not exist on
60
- # a real object. This is generally recommended.
61
- mocks.verify_partial_doubles = true
62
- end
63
- =end
64
- end