hanami-rspec 3.11.0.beta1 → 3.11.0.beta3

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
  SHA256:
3
- metadata.gz: bb274d263b143f47cda8bf26d3e064125d57dea50a5be98b0b5182e6a952d186
4
- data.tar.gz: e98375c2ef0d2974a1982989694e5873377bb1b5cafccf159477e5e90e963657
3
+ metadata.gz: a3c622f62aeded6a152396460f0bb462d1abc6e1c46e8f009ff7c5defb80f6d0
4
+ data.tar.gz: b473be9664791e51a31c58604f4040df018c82dec2bb4eb1abc9a0da0284629f
5
5
  SHA512:
6
- metadata.gz: 89e4a5322a0f7bafd4c8abbfd94f8edaf0e7f9ff617ac65f543ce8d2232dbdc40c33618ca3061f93b092359a0c83ea29c42039b9c64976bb6e810dceac7813fe
7
- data.tar.gz: 8049790bcf4437f5363c94af6d41a58be5b90a5c02cea61c4f6b274180f6559a00b1271a7d566b8ef6a52c36c6304c2c24f9c9c7e25d9abdc95b360a48a56d40
6
+ metadata.gz: ac3a26f68ab3ecff9b292ff9a94159547792b5f2c035c9dfd1d92ed30504f39c49f980da62754e6a21d43d9dead44c56b652ad746bb19497d06a42551c6e4cca
7
+ data.tar.gz: f947e767c88960d73e51761b4367f4028d74036d62176c933f160f73274a588ef64cd3b14f44a3ec24f9fe32f214e2acd953924b9ca5a5a976d7e75b7494a295
@@ -12,7 +12,9 @@ name: ci
12
12
  - '.rubocop.yml'
13
13
  pull_request:
14
14
  branches:
15
- - master
15
+ - main
16
+ schedule:
17
+ - cron: '30 4 * * *'
16
18
  create:
17
19
 
18
20
  jobs:
@@ -22,8 +24,16 @@ jobs:
22
24
  fail-fast: false
23
25
  matrix:
24
26
  ruby:
27
+ - '3.1'
25
28
  - '3.0'
26
29
  steps:
30
+ - uses: ravsamhq/notify-slack-action@v1
31
+ if: always()
32
+ with:
33
+ status: ${{ job.status }}
34
+ notify_when: 'failure'
35
+ env:
36
+ SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
27
37
  - uses: actions/checkout@v1
28
38
  - name: Install package dependencies
29
39
  run: '[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## v3.11.0.beta3 - 2022-09-21
2
+
3
+ ### Added
4
+
5
+ - [Luca Guidi] Hook into `hanami new` and `hanami generate` to respect name pluralization
6
+ - [Luca Guidi] Hook into `hanami generate action` to generate action specs
7
+
8
+ ## v3.11.0.beta2 - 2022-08-16
9
+
10
+ ### Added
11
+
12
+ - [Luca Guidi] Hook into `hanami generate slice` to generate a slice directory in spec/ along with a placeholder base action spec [#5]
13
+
1
14
  ## v3.11.0.beta1 - 2022-07-20
2
15
 
3
16
  ### Added
data/hanami-rspec.gemspec CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- spec.add_dependency "hanami-cli", "~> 2.0.0.alpha"
32
+ spec.add_dependency "hanami-cli", "~> 2.0.0.beta"
33
33
  spec.add_dependency "rspec", "~> 3.11"
34
34
  spec.add_dependency "rake", "~> 13.0"
35
35
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "hanami/cli"
4
4
  require "shellwords"
5
+ require "hanami/cli/commands/app/command"
5
6
  require "hanami/cli/generators/context"
6
7
  require_relative "./generators"
7
8
 
@@ -72,11 +73,22 @@ module Hanami
72
73
  def call(options, **)
73
74
  slice = inflector.underscore(Shellwords.shellescape(options[:name]))
74
75
 
75
- out.puts "generating #{slice} (rspec)"
76
76
  generator = Generators::Slice.new(fs: fs, inflector: inflector)
77
77
  generator.call(slice)
78
78
  end
79
79
  end
80
+
81
+ class Action < Hanami::CLI::Commands::App::Command
82
+ # FIXME: dry-cli kwargs aren't correctly forwarded in Ruby 3
83
+ def call(options, **)
84
+ slice = inflector.underscore(Shellwords.shellescape(options[:slice])) if options[:slice]
85
+ name = inflector.underscore(Shellwords.shellescape(options[:name]))
86
+ *controller, action = name.split(ACTION_SEPARATOR)
87
+
88
+ generator = Generators::Action.new(fs: fs, inflector: inflector)
89
+ generator.call(app.namespace, slice, controller, action)
90
+ end
91
+ end
80
92
  end
81
93
  end
82
94
  end
@@ -84,5 +96,6 @@ end
84
96
 
85
97
  if Hanami::CLI.within_hanami_app?
86
98
  Hanami::CLI.after "install", Hanami::RSpec::Commands::Install
87
- # Hanami::CLI.after "generate slice", Hanami::RSpec::Commands::Generate::Slice
99
+ Hanami::CLI.after "generate slice", Hanami::RSpec::Commands::Generate::Slice
100
+ Hanami::CLI.after "generate action", Hanami::RSpec::Commands::Generate::Action
88
101
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe <%= camelized_slice_name %>::Actions::<%= camelized_controller_name %>::<%= camelized_action_name %> do
4
+ let(:params) { Hash[] }
5
+
6
+ it "works" do
7
+ response = subject.call(params)
8
+ expect(response).to be_successful
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe <%= camelized_app_name %>::Actions::<%= camelized_controller_name %>::<%= camelized_action_name %> do
4
+ let(:params) { Hash[] }
5
+
6
+ it "works" do
7
+ response = subject.call(params)
8
+ expect(response).to be_successful
9
+ end
10
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "erb"
4
+ require "hanami/cli/generators/app/action_context"
5
+
6
+ module Hanami
7
+ module RSpec
8
+ module Generators
9
+ class Action
10
+ def initialize(fs:, inflector:)
11
+ @fs = fs
12
+ @inflector = inflector
13
+ end
14
+
15
+ def call(app, slice, controller, action, context: Hanami::CLI::Generators::App::ActionContext.new(inflector, app, slice, controller, action)) # rubocop:disable Layout/LineLength
16
+ if slice
17
+ fs.write(
18
+ "spec/#{slice}/actions/#{controller_directory(controller)}/#{action}_spec.rb",
19
+ t("action_slice_spec.erb", context)
20
+ )
21
+ else
22
+ fs.write(
23
+ "spec/actions/#{controller_directory(controller)}/#{action}_spec.rb",
24
+ t("action_spec.erb", context)
25
+ )
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ attr_reader :fs
32
+
33
+ attr_reader :inflector
34
+
35
+ # @api private
36
+ # @param controller [Array<String>]
37
+ def controller_directory(controller)
38
+ fs.join(controller)
39
+ end
40
+
41
+ def template(path, context)
42
+ require "erb"
43
+
44
+ ERB.new(
45
+ File.read(__dir__ + "/action/#{path}")
46
+ ).result(context.ctx)
47
+ end
48
+
49
+ alias_method :t, :template
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "slices/<%= underscored_slice_name %>/action"
4
-
5
- RSpec.describe <%= classified_slice_name %>::Action do
3
+ RSpec.describe <%= camelized_slice_name %>::Action do
4
+ xit "works"
6
5
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  require "slices/<%= underscored_slice_name %>/repository"
4
4
 
5
- RSpec.describe <%= classified_slice_name %>::Repository do
5
+ RSpec.describe <%= camelized_slice_name %>::Repository do
6
6
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  require "slices/<%= underscored_slice_name %>/view"
4
4
 
5
- RSpec.describe <%= classified_slice_name %>::View do
5
+ RSpec.describe <%= camelized_slice_name %>::View do
6
6
  end
@@ -12,17 +12,17 @@ module Hanami
12
12
  @inflector = inflector
13
13
  end
14
14
 
15
- def call(slice, context: Hanami::CLI::Generators::App::SliceContext.new(inflector, nil, slice, nil)) # rubocop:disable Metrics/AbcSize
15
+ def call(slice, context: Hanami::CLI::Generators::App::SliceContext.new(inflector, nil, slice, nil))
16
16
  fs.write("spec/#{slice}/action_spec.rb", t("action_spec.erb", context))
17
- fs.write("spec/#{slice}/view_spec.rb", t("view_spec.erb", context))
18
- fs.write("spec/#{slice}/repository_spec.rb", t("repository_spec.erb", context))
17
+ # fs.write("spec/#{slice}/view_spec.rb", t("view_spec.erb", context))
18
+ # fs.write("spec/#{slice}/repository_spec.rb", t("repository_spec.erb", context))
19
19
 
20
20
  fs.write("spec/#{slice}/actions/.keep", t("keep.erb", context))
21
- fs.write("spec/#{slice}/views/.keep", t("keep.erb", context))
22
- fs.write("spec/#{slice}/templates/.keep", t("keep.erb", context))
23
- fs.write("spec/#{slice}/templates/layouts/.keep", t("keep.erb", context))
24
- fs.write("spec/#{slice}/entities/.keep", t("keep.erb", context))
25
- fs.write("spec/#{slice}/repositories/.keep", t("keep.erb", context))
21
+ # fs.write("spec/#{slice}/views/.keep", t("keep.erb", context))
22
+ # fs.write("spec/#{slice}/templates/.keep", t("keep.erb", context))
23
+ # fs.write("spec/#{slice}/templates/layouts/.keep", t("keep.erb", context))
24
+ # fs.write("spec/#{slice}/entities/.keep", t("keep.erb", context))
25
+ # fs.write("spec/#{slice}/repositories/.keep", t("keep.erb", context))
26
26
  end
27
27
 
28
28
  private
@@ -4,6 +4,7 @@ module Hanami
4
4
  module RSpec
5
5
  module Generators
6
6
  require_relative "./generators/slice"
7
+ require_relative "./generators/action"
7
8
  end
8
9
  end
9
10
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Hanami
4
4
  module RSpec
5
- VERSION = "3.11.0.beta1"
5
+ VERSION = "3.11.0.beta3"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.0.beta1
4
+ version: 3.11.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-20 00:00:00.000000000 Z
11
+ date: 2022-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-cli
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0.alpha
19
+ version: 2.0.0.beta
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: 2.0.0.alpha
26
+ version: 2.0.0.beta
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -91,6 +91,9 @@ files:
91
91
  - lib/hanami/rspec/commands.rb
92
92
  - lib/hanami/rspec/error.rb
93
93
  - lib/hanami/rspec/generators.rb
94
+ - lib/hanami/rspec/generators/action.rb
95
+ - lib/hanami/rspec/generators/action/action_slice_spec.erb
96
+ - lib/hanami/rspec/generators/action/action_spec.erb
94
97
  - lib/hanami/rspec/generators/dotrspec
95
98
  - lib/hanami/rspec/generators/gemfile
96
99
  - lib/hanami/rspec/generators/helper.rb