hanami-rspec 2.0.1 → 3.11.0.beta1

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.

Potentially problematic release.


This version of hanami-rspec might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d165f3b5190d2f5c4ca7b33f28570ce3fdd696bd14da89cabedb710d433a42b9
4
- data.tar.gz: 4ed2cde06e1a09a9d05679e184db40c8e5d578b3e259e3cecd151b433371c34c
3
+ metadata.gz: bb274d263b143f47cda8bf26d3e064125d57dea50a5be98b0b5182e6a952d186
4
+ data.tar.gz: e98375c2ef0d2974a1982989694e5873377bb1b5cafccf159477e5e90e963657
5
5
  SHA512:
6
- metadata.gz: edd319a20e32f589479134941d0275a41e80305e3964f1247532075ba5f48809d0fa0a1d186759e0879548b580764807813fb4b7c8e02e7052201d2af5bce101
7
- data.tar.gz: 2f938a13f5a1fa2a13d76fc82c919e6d19fab5ea2140048e53a3083af4ff5766fac1f3020002b19144901f1a6f683da9829da1af614324eefc7e9c4bef6a1a71
6
+ metadata.gz: 89e4a5322a0f7bafd4c8abbfd94f8edaf0e7f9ff617ac65f543ce8d2232dbdc40c33618ca3061f93b092359a0c83ea29c42039b9c64976bb6e810dceac7813fe
7
+ data.tar.gz: 8049790bcf4437f5363c94af6d41a58be5b90a5c02cea61c4f6b274180f6559a00b1271a7d566b8ef6a52c36c6304c2c24f9c9c7e25d9abdc95b360a48a56d40
@@ -12,9 +12,7 @@ name: ci
12
12
  - '.rubocop.yml'
13
13
  pull_request:
14
14
  branches:
15
- - main
16
- schedule:
17
- - cron: '30 4 * * *'
15
+ - master
18
16
  create:
19
17
 
20
18
  jobs:
@@ -24,17 +22,8 @@ jobs:
24
22
  fail-fast: false
25
23
  matrix:
26
24
  ruby:
27
- - '3.2'
28
- - '3.1'
29
25
  - '3.0'
30
26
  steps:
31
- - uses: ravsamhq/notify-slack-action@v1
32
- if: always()
33
- with:
34
- status: ${{ job.status }}
35
- notify_when: 'failure'
36
- env:
37
- SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
38
27
  - uses: actions/checkout@v1
39
28
  - name: Install package dependencies
40
29
  run: '[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS'
data/CHANGELOG.md CHANGED
@@ -1,45 +1,3 @@
1
- # Hanami::RSpec
2
-
3
- RSpec support for Hanami
4
-
5
- ## v2.0.1 - 2022-12-25
6
-
7
- ### Added
8
-
9
- - [Luca Guidi] Official support for Ruby 3.2
10
-
11
- ## v2.0.0 - 2022-11-22
12
-
13
- ### Added
14
-
15
- - [Tim Riley] Use Zeitwerk to autoload the gem
16
- - [Luca Guidi] Support RSpec 3.12
17
-
18
- ## v2.0.0.rc1 - 2022-11-08
19
-
20
- ### Changed
21
-
22
- - [Luca Guidi] Follow `hanami` versioning
23
-
24
- ## v3.11.0.beta4 - 2022-10-24
25
-
26
- ### Changed
27
-
28
- - [Luca Guidi] Generate slice specs under `spec/slices/[slice_name]/` (#9)
29
-
30
- ## v3.11.0.beta3 - 2022-09-21
31
-
32
- ### Added
33
-
34
- - [Luca Guidi] Hook into `hanami new` and `hanami generate` to respect name pluralization
35
- - [Luca Guidi] Hook into `hanami generate action` to generate action specs
36
-
37
- ## v3.11.0.beta2 - 2022-08-16
38
-
39
- ### Added
40
-
41
- - [Luca Guidi] Hook into `hanami generate slice` to generate a slice directory in spec/ along with a placeholder base action spec [#5]
42
-
43
1
  ## v3.11.0.beta1 - 2022-07-20
44
2
 
45
3
  ### Added
data/Gemfile CHANGED
@@ -9,7 +9,5 @@ unless ENV["CI"]
9
9
  end
10
10
 
11
11
  gem "dry-files", require: false, git: "https://github.com/dry-rb/dry-files.git", branch: "main"
12
- gem "dry-logger", require: false, git: "https://github.com/dry-rb/dry-logger.git", branch: "main"
13
- gem "hanami-utils", require: false, git: "https://github.com/hanami/utils.git", branch: "main"
14
12
  gem "hanami-cli", require: false, git: "https://github.com/hanami/cli.git", branch: "main"
15
13
  gem "hanami", require: false, git: "https://github.com/hanami/hanami.git", branch: "main"
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Hanami::RSpec
2
2
 
3
- RSpec and testing support for [Hanami applications](https://github.com/hanami/hanami).
3
+ RSpec and testing support for [full-stack Hanami applications](`https://github.com/hanami/hanami`).
4
4
 
5
5
  ## Status
6
6
 
@@ -8,6 +8,10 @@ RSpec and testing support for [Hanami applications](https://github.com/hanami/ha
8
8
  [![CI](https://github.com/hanami/rspec/workflows/ci/badge.svg?branch=main)](https://github.com/hanami/rspec/actions?query=workflow%3Aci+branch%3Amain)
9
9
  [![Depfu](https://badges.depfu.com/badges/a8545fb67cf32a2c75b6227bc0821027/overview.svg)](https://depfu.com/github/hanami/rspec?project=Bundler)
10
10
 
11
+ ## Version
12
+
13
+ Versioning of this gem follows RSpec.
14
+
11
15
  ## Contact
12
16
 
13
17
  - Home page: http://hanamirb.org
@@ -32,10 +36,10 @@ end
32
36
 
33
37
  And then execute:
34
38
 
35
- ```
36
- $ bundle install
37
- $ bundle exec hanami setup
38
- ```
39
+ $ bundle install
40
+ $ bundle exec hanami setup
41
+
42
+ ## Usage
39
43
 
40
44
  ## Development
41
45
 
data/hanami-rspec.gemspec CHANGED
@@ -29,10 +29,9 @@ 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"
33
- spec.add_dependency "rspec", "~> 3.12"
32
+ spec.add_dependency "hanami-cli", "~> 2.0.0.alpha"
33
+ spec.add_dependency "rspec", "~> 3.11"
34
34
  spec.add_dependency "rake", "~> 13.0"
35
- spec.add_dependency "zeitwerk", "~> 2.6"
36
35
 
37
36
  spec.add_development_dependency "rubocop", "~> 1.11"
38
37
  spec.metadata["rubygems_mfa_required"] = "true"
@@ -1,17 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "hanami/cli"
3
4
  require "shellwords"
5
+ require "hanami/cli/generators/context"
6
+ require_relative "./generators"
4
7
 
5
8
  module Hanami
6
9
  module RSpec
7
- # @since 2.0.0
8
- # @api private
9
10
  module Commands
10
- # @since 2.0.0
11
- # @api private
12
11
  class Install < Hanami::CLI::Command
13
- # @since 2.0.0
14
- # @api private
15
12
  def call(*, **)
16
13
  append_gemfile
17
14
  copy_dotrspec
@@ -69,37 +66,23 @@ module Hanami
69
66
  end
70
67
  end
71
68
 
72
- # @since 2.0.0
73
- # @api private
74
69
  module Generate
75
- # @since 2.0.0
76
- # @api private
77
70
  class Slice < Hanami::CLI::Command
78
71
  # FIXME: dry-cli kwargs aren't correctly forwarded in Ruby 3
79
72
  def call(options, **)
80
73
  slice = inflector.underscore(Shellwords.shellescape(options[:name]))
81
74
 
75
+ out.puts "generating #{slice} (rspec)"
82
76
  generator = Generators::Slice.new(fs: fs, inflector: inflector)
83
77
  generator.call(slice)
84
78
  end
85
79
  end
86
-
87
- # @since 2.0.0
88
- # @api private
89
- class Action < Hanami::CLI::Commands::App::Command
90
- # @since 2.0.0
91
- # @api private
92
- def call(options, **)
93
- # FIXME: dry-cli kwargs aren't correctly forwarded in Ruby 3
94
- slice = inflector.underscore(Shellwords.shellescape(options[:slice])) if options[:slice]
95
- name = inflector.underscore(Shellwords.shellescape(options[:name]))
96
- *controller, action = name.split(ACTION_SEPARATOR)
97
-
98
- generator = Generators::Action.new(fs: fs, inflector: inflector)
99
- generator.call(app.namespace, slice, controller, action)
100
- end
101
- end
102
80
  end
103
81
  end
104
82
  end
105
83
  end
84
+
85
+ if Hanami::CLI.within_hanami_app?
86
+ Hanami::CLI.after "install", Hanami::RSpec::Commands::Install
87
+ # Hanami::CLI.after "generate slice", Hanami::RSpec::Commands::Generate::Slice
88
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hanami
4
+ module RSpec
5
+ class Error < StandardError
6
+ end
7
+ end
8
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe <%= camelized_slice_name %>::Action do
4
- xit "works"
3
+ require "slices/<%= underscored_slice_name %>/action"
4
+
5
+ RSpec.describe <%= classified_slice_name %>::Action do
5
6
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  require "slices/<%= underscored_slice_name %>/repository"
4
4
 
5
- RSpec.describe <%= camelized_slice_name %>::Repository do
5
+ RSpec.describe <%= classified_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 <%= camelized_slice_name %>::View do
5
+ RSpec.describe <%= classified_slice_name %>::View do
6
6
  end
@@ -1,33 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "erb"
4
+ require "hanami/cli/generators/app/slice_context"
4
5
 
5
6
  module Hanami
6
7
  module RSpec
7
8
  module Generators
8
- # @since 2.0.0
9
- # @api private
10
9
  class Slice
11
- # @since 2.0.0
12
- # @api private
13
10
  def initialize(fs:, inflector:)
14
11
  @fs = fs
15
12
  @inflector = inflector
16
13
  end
17
14
 
18
- # @since 2.0.0
19
- # @api private
20
- def call(slice, context: Hanami::CLI::Generators::App::SliceContext.new(inflector, nil, slice, nil))
21
- fs.write("spec/slices/#{slice}/action_spec.rb", t("action_spec.erb", context))
22
- # fs.write("spec/slices/#{slice}/view_spec.rb", t("view_spec.erb", context))
23
- # fs.write("spec/slices/#{slice}/repository_spec.rb", t("repository_spec.erb", context))
24
-
25
- fs.write("spec/slices/#{slice}/actions/.keep", t("keep.erb", context))
26
- # fs.write("spec/slices/#{slice}/views/.keep", t("keep.erb", context))
27
- # fs.write("spec/slices/#{slice}/templates/.keep", t("keep.erb", context))
28
- # fs.write("spec/slices/#{slice}/templates/layouts/.keep", t("keep.erb", context))
29
- # fs.write("spec/slices/#{slice}/entities/.keep", t("keep.erb", context))
30
- # fs.write("spec/slices/#{slice}/repositories/.keep", t("keep.erb", context))
15
+ def call(slice, context: Hanami::CLI::Generators::App::SliceContext.new(inflector, nil, slice, nil)) # rubocop:disable Metrics/AbcSize
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))
19
+
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))
31
26
  end
32
27
 
33
28
  private
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hanami
4
+ module RSpec
5
+ module Generators
6
+ require_relative "./generators/slice"
7
+ end
8
+ end
9
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "hanami/cli/rake_tasks"
4
+
3
5
  Hanami::CLI::RakeTasks.register_tasks do
4
6
  require "rspec/core/rake_task"
5
7
  ::RSpec::Core::RakeTask.new(:spec)
@@ -2,10 +2,6 @@
2
2
 
3
3
  module Hanami
4
4
  module RSpec
5
- # The current hanami-rspec version.
6
- #
7
- # @since 2.0.0
8
- # @api public
9
- VERSION = "2.0.1"
5
+ VERSION = "3.11.0.beta1"
10
6
  end
11
7
  end
data/lib/hanami/rspec.rb CHANGED
@@ -1,40 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "hanami/cli"
4
- require "zeitwerk"
5
-
6
- # @see Hanami::RSpec
7
- # @since 2.0.0
8
3
  module Hanami
9
- # RSpec and testing support for Hanami applications.
10
- #
11
- # @since 2.0.0
12
- # @api private
13
4
  module RSpec
14
- # @since 2.0.0
15
- # @api private
16
- def self.gem_loader
17
- @gem_loader ||= Zeitwerk::Loader.new.tap do |loader|
18
- root = File.expand_path("..", __dir__)
19
- loader.tag = "hanami-rspec"
20
- loader.inflector = Zeitwerk::GemInflector.new("#{root}/hanami-rspec.rb")
21
- loader.push_dir(root)
22
- loader.ignore(
23
- "#{root}/hanami-rspec.rb",
24
- "#{root}/hanami/rspec/{rake_tasks,version}.rb"
25
- )
26
- loader.inflector.inflect("rspec" => "RSpec")
27
- end
28
- end
29
-
30
- gem_loader.setup
31
5
  require_relative "rspec/version"
6
+ require_relative "rspec/error"
7
+ require_relative "rspec/commands"
32
8
  require_relative "rspec/rake_tasks"
33
-
34
- if Hanami::CLI.within_hanami_app?
35
- Hanami::CLI.after "install", Commands::Install
36
- Hanami::CLI.after "generate slice", Commands::Generate::Slice
37
- Hanami::CLI.after "generate action", Commands::Generate::Action
38
- end
39
9
  end
40
10
  end
data/lib/hanami-rspec.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "hanami/rspec"
3
+ require_relative "./hanami/rspec"
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: 2.0.1
4
+ version: 3.11.0.beta1
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-12-25 00:00:00.000000000 Z
11
+ date: 2022-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-cli
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: 2.0.0.alpha
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'
26
+ version: 2.0.0.alpha
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.12'
33
+ version: '3.11'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.12'
40
+ version: '3.11'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '13.0'
55
- - !ruby/object:Gem::Dependency
56
- name: zeitwerk
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.6'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.6'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rubocop
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -103,9 +89,8 @@ files:
103
89
  - lib/hanami-rspec.rb
104
90
  - lib/hanami/rspec.rb
105
91
  - lib/hanami/rspec/commands.rb
106
- - lib/hanami/rspec/generators/action.rb
107
- - lib/hanami/rspec/generators/action/action_slice_spec.erb
108
- - lib/hanami/rspec/generators/action/action_spec.erb
92
+ - lib/hanami/rspec/error.rb
93
+ - lib/hanami/rspec/generators.rb
109
94
  - lib/hanami/rspec/generators/dotrspec
110
95
  - lib/hanami/rspec/generators/gemfile
111
96
  - lib/hanami/rspec/generators/helper.rb
@@ -139,11 +124,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
124
  version: 3.0.0
140
125
  required_rubygems_version: !ruby/object:Gem::Requirement
141
126
  requirements:
142
- - - ">="
127
+ - - ">"
143
128
  - !ruby/object:Gem::Version
144
- version: '0'
129
+ version: 1.3.1
145
130
  requirements: []
146
- rubygems_version: 3.4.1
131
+ rubygems_version: 3.3.3
147
132
  signing_key:
148
133
  specification_version: 4
149
134
  summary: Hanami RSpec
@@ -1,10 +0,0 @@
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
@@ -1,10 +0,0 @@
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
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "erb"
4
-
5
- module Hanami
6
- module RSpec
7
- module Generators
8
- # @since 2.0.0
9
- # @api private
10
- class Action
11
- # @since 2.0.0
12
- # @api private
13
- def initialize(fs:, inflector:)
14
- @fs = fs
15
- @inflector = inflector
16
- end
17
-
18
- # @since 2.0.0
19
- # @api private
20
- def call(app, slice, controller, action, context: Hanami::CLI::Generators::App::ActionContext.new(inflector, app, slice, controller, action)) # rubocop:disable Layout/LineLength
21
- if slice
22
- fs.write(
23
- "spec/slices/#{slice}/actions/#{controller_directory(controller)}/#{action}_spec.rb",
24
- t("action_slice_spec.erb", context)
25
- )
26
- else
27
- fs.write(
28
- "spec/actions/#{controller_directory(controller)}/#{action}_spec.rb",
29
- t("action_spec.erb", context)
30
- )
31
- end
32
- end
33
-
34
- private
35
-
36
- attr_reader :fs
37
-
38
- attr_reader :inflector
39
-
40
- # @api private
41
- # @param controller [Array<String>]
42
- def controller_directory(controller)
43
- fs.join(controller)
44
- end
45
-
46
- def template(path, context)
47
- require "erb"
48
-
49
- ERB.new(
50
- File.read(__dir__ + "/action/#{path}")
51
- ).result(context.ctx)
52
- end
53
-
54
- alias_method :t, :template
55
- end
56
- end
57
- end
58
- end