hanami-rspec 2.2.0.beta2 → 2.2.0.rc1

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: 3e4c4fb2f0d8ef7e3ef953b612ebb2584fa44d0575dc8c91551f6975f9717531
4
- data.tar.gz: 918f8b29098f4ba81a1f09d273006e24572206852ea6497a893cd17bde8fa8f4
3
+ metadata.gz: a2626a7d2645ea7f228d3aab1371d3b6de2593ecfb0da40a9f7d8c574d03d660
4
+ data.tar.gz: 6042163a6b58014d0a9409190af9f9ed1d076284b48c00635f448e45d33e9de6
5
5
  SHA512:
6
- metadata.gz: 66092dd5c16411bfc0c2fc7a9edfe2292bac951206599259d410ac7a8b841da894bd37d84db8e18292132803956691097d37acb8690520b3240c7e69ae1cfd75
7
- data.tar.gz: 339b8c4af5fdd536fb8ec0219c8a7d5e373c8c7258261c364662e00435efcae541f484ee6a7f38e1ec5df024cc26043225e8b56ded625b41437e2825bce4dfc2
6
+ metadata.gz: 722af505347e5353d8a4063444c18d221d14e8f1eef642b776c67b96adf539928986d126eb0eb9aebda2731fbaafcb7edea1acfb2c69b70a162efdaac4abdecc
7
+ data.tar.gz: ecb15f711f61ed8c2d6289aee506c0580aedcbaf13b38ba507a6c90972b03d2adb88c87b252d87c772f2260ce63720d0bd94ce81cd1089d28a693804d0204c5f
data/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  RSpec support for Hanami
4
4
 
5
+ ## v2.2.0.rc1 - 2024-10-29
6
+
7
+ ### Added
8
+
9
+ - [Tim Riley] As part of `hanami install`, add `database_cleaner-sequel` to the `Gemfile` and generate DatabaseCleaner configuration in `spec/support/db.rb` and `spec/support/db/cleaning.rb` (#28)
10
+
11
+ ### Changed
12
+
13
+ - [Seb Wilgosz] Only enhance `generate` CLI commands if the relevant gems are bundled (#26)
14
+
5
15
  ## v2.2.0.beta1 - 2024-07-16
6
16
 
7
17
  ### Changed
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.2.beta"
32
+ spec.add_dependency "hanami-cli", "~> 2.2.rc"
33
33
  spec.add_dependency "rspec", "~> 3.12"
34
34
  spec.add_dependency "rake", "~> 13.0"
35
35
  spec.add_dependency "zeitwerk", "~> 2.6"
@@ -18,6 +18,7 @@ module Hanami
18
18
  copy_dotrspec
19
19
  copy_spec_helper
20
20
  copy_support_rspec
21
+ copy_support_db
21
22
  copy_support_features
22
23
  copy_support_operations
23
24
  copy_support_requests
@@ -28,9 +29,11 @@ module Hanami
28
29
  private
29
30
 
30
31
  def append_gemfile
32
+ gemfile_template = Hanami.bundled?("hanami-db") ? "gemfile_db" : "gemfile"
33
+
31
34
  fs.append(
32
35
  fs.expand_path("Gemfile"),
33
- fs.read(fs.expand_path(fs.join("generators", "gemfile"), __dir__))
36
+ fs.read(fs.expand_path(fs.join("generators", gemfile_template), __dir__))
34
37
  )
35
38
  end
36
39
 
@@ -62,6 +65,20 @@ module Hanami
62
65
  )
63
66
  end
64
67
 
68
+ def copy_support_db
69
+ return unless Hanami.bundled?("hanami-db")
70
+
71
+ fs.cp(
72
+ fs.expand_path(fs.join("generators/support_db.rb"), __dir__),
73
+ fs.expand_path(fs.join("spec", "support", "db.rb"))
74
+ )
75
+
76
+ fs.cp(
77
+ fs.expand_path(fs.join("generators/support_db_cleaning.rb"), __dir__),
78
+ fs.expand_path(fs.join("spec", "support", "db", "cleaning.rb"))
79
+ )
80
+ end
81
+
65
82
  def copy_support_features
66
83
  fs.cp(
67
84
  fs.expand_path(fs.join("generators", "support_features.rb"), __dir__),
@@ -1,5 +1,6 @@
1
1
 
2
2
  group :test do
3
+ # Web integration
3
4
  gem "capybara"
4
5
  gem "rack-test"
5
6
  end
@@ -0,0 +1,9 @@
1
+
2
+ group :test do
3
+ # Database
4
+ gem "database_cleaner-sequel"
5
+
6
+ # Web integration
7
+ gem "capybara"
8
+ gem "rack-test"
9
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Tag feature spec examples as `:db`
4
+ #
5
+ # See support/db/cleaning.rb for how the database is cleaned around these `:db` examples.
6
+ RSpec.configure do |config|
7
+ config.define_derived_metadata(type: :feature) do |metadata|
8
+ metadata[:db] = true
9
+ end
10
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "database_cleaner/sequel"
4
+
5
+ # Clean the databases between tests tagged as `:db`
6
+ RSpec.configure do |config|
7
+ # Returns all the configured databases across the app and its slices.
8
+ #
9
+ # Used in the before/after hooks below to ensure each database is cleaned between examples.
10
+ #
11
+ # Modify this proc (or any code below) if you only need specific databases cleaned.
12
+ all_databases = -> {
13
+ slices = [Hanami.app] + Hanami.app.slices.with_nested
14
+
15
+ slices.each_with_object([]) { |slice, dbs|
16
+ next unless slice.key?("db.rom")
17
+
18
+ dbs.concat slice["db.rom"].gateways.values.map(&:connection)
19
+ }.uniq
20
+ }
21
+
22
+ config.before :suite do
23
+ all_databases.call.each do |db|
24
+ DatabaseCleaner[:sequel, db: db].clean_with :truncation, except: ["schema_migrations"]
25
+ end
26
+ end
27
+
28
+ config.before :each, :db do |example|
29
+ strategy = example.metadata[:js] ? :truncation : :transaction
30
+
31
+ all_databases.call.each do |db|
32
+ DatabaseCleaner[:sequel, db: db].strategy = strategy
33
+ DatabaseCleaner[:sequel, db: db].start
34
+ end
35
+ end
36
+
37
+ config.after :each, :db do
38
+ all_databases.call.each do |db|
39
+ DatabaseCleaner[:sequel, db: db].clean
40
+ end
41
+ end
42
+ end
@@ -6,6 +6,6 @@ module Hanami
6
6
  #
7
7
  # @since 2.0.0
8
8
  # @api public
9
- VERSION = "2.2.0.beta2"
9
+ VERSION = "2.2.0.rc1"
10
10
  end
11
11
  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: 2.2.0.beta2
4
+ version: 2.2.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-25 00:00:00.000000000 Z
11
+ date: 2024-10-29 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.2.beta
19
+ version: 2.2.rc
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.2.beta
26
+ version: 2.2.rc
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,7 @@ files:
108
108
  - lib/hanami/rspec/generators/action/action_spec.erb
109
109
  - lib/hanami/rspec/generators/dotrspec
110
110
  - lib/hanami/rspec/generators/gemfile
111
+ - lib/hanami/rspec/generators/gemfile_db
111
112
  - lib/hanami/rspec/generators/gitignore
112
113
  - lib/hanami/rspec/generators/helper.rb
113
114
  - lib/hanami/rspec/generators/part.rb
@@ -121,6 +122,8 @@ files:
121
122
  - lib/hanami/rspec/generators/slice/keep.erb
122
123
  - lib/hanami/rspec/generators/slice/repository_spec.erb
123
124
  - lib/hanami/rspec/generators/slice/view_spec.erb
125
+ - lib/hanami/rspec/generators/support_db.rb
126
+ - lib/hanami/rspec/generators/support_db_cleaning.rb
124
127
  - lib/hanami/rspec/generators/support_features.rb
125
128
  - lib/hanami/rspec/generators/support_operations.rb
126
129
  - lib/hanami/rspec/generators/support_requests.rb
@@ -151,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
154
  - !ruby/object:Gem::Version
152
155
  version: '0'
153
156
  requirements: []
154
- rubygems_version: 3.5.16
157
+ rubygems_version: 3.5.22
155
158
  signing_key:
156
159
  specification_version: 4
157
160
  summary: Hanami RSpec