rails_services 1.0.0 → 1.1.2

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: 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