dinja 1.1.0 → 1.2.0

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: eba7d19ae81a5192bbb8ab526bea179925725b9d5456dac7e9bc13c37514b14d
4
- data.tar.gz: 6eefe11fbbae21a16bfb136f8397abf8deb0b5730ef3d550a5a1313a174e115d
3
+ metadata.gz: 3c740560e98de13900ebd205727ab8ab3db61e383e999338ad7af62bd60fa7d4
4
+ data.tar.gz: 6d52ab750f704ebec9637ab85ce557af9f6fd75066d0c4072c35e8dd0485d0a8
5
5
  SHA512:
6
- metadata.gz: ddedf291a45f72f8a1c7d19f4f5a2382db610f7be92cc1bc094bbee1d849c83cdfb0e846462ec4b007e00d59e3d8f3554d90e04fac6197dc9d65cc36ff6914de
7
- data.tar.gz: 9e90a12d6ed02de1d601121fedaea9dda765df448c46b520a6aca919b6dc65f2a2a123db3ee3829c7f474cf1af2ea9ecea024747591547caadacd6f8d18ce10a
6
+ metadata.gz: f4619b5dab77e5e102d2501394a039475744a758e830cfa7f21ec35c6b99af4a0419807f6cf97896d7a70f1cb72c54f02e25242180da7cc7104348b35d8f594b
7
+ data.tar.gz: b5766618c4379604aecc6619d8d726a369353f1e11633a60998e6a9c295b2d205547a40095e859250fa2e1653958f694ad2c0b787e0d7078ba9e412a979fe7ef
data/README.md CHANGED
@@ -94,7 +94,7 @@ module MyGem
94
94
  def container
95
95
  @container ||= Dinja::Container.new
96
96
  end
97
-
97
+
98
98
  def setup
99
99
  # ...other stuff here
100
100
 
@@ -123,6 +123,46 @@ my_dependency.name
123
123
  # => "foobar"
124
124
  ```
125
125
 
126
+ ### RSpec
127
+
128
+ If you need to mock resolution calls to a container, you can do as following.
129
+
130
+ In `spec/rails_helper.rb` or `spec/spec_helper.rb`:
131
+
132
+ ```ruby
133
+ require "dinja/rspec"
134
+ include Dinja::RSpec
135
+ ```
136
+
137
+ In `config/dependencies.rb`:
138
+
139
+ ```ruby
140
+ register("my_service") do |name|
141
+ OpenStruct.new(name: name)
142
+ end
143
+ ```
144
+
145
+ In `spec/my_app/my_model_spec.rb`:
146
+
147
+ ```ruby
148
+ RSpec.describe MyApp::MyModel do
149
+ subject(:my_model) { described_class.new }
150
+
151
+ it "calls my service" do
152
+ my_service = dinja_mock!("my_service")
153
+
154
+ allow(my_service)
155
+ .to receive(:call)
156
+ .and_return true
157
+
158
+ my_model.call_service
159
+
160
+ expect(my_service).to have_received(:call)
161
+ end
162
+ end
163
+
164
+ ```
165
+
126
166
  ## Development
127
167
 
128
168
  To release a new version, update the version number in `lib/dinja/version.rb`, update the changelog, commit the files and create a git tag starting with `v`, and push it to the repository.
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ Dinja.loader.inflector.inflect(
4
+ "rspec" => "RSpec",
5
+ )
data/lib/dinja.rb CHANGED
@@ -15,8 +15,12 @@ module Dinja
15
15
  def setup
16
16
  @loader = Zeitwerk::Loader.for_gem
17
17
 
18
- # Do not eager load Railtie
18
+ # Register inflections
19
+ require root.join("config/inflections.rb")
20
+
21
+ # Do not eager load integrations
19
22
  loader.do_not_eager_load(root.join("lib/dinja/railtie.rb"))
23
+ loader.do_not_eager_load(root.join("lib/dinja/rspec.rb"))
20
24
 
21
25
  loader.setup
22
26
  loader.eager_load
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dinja
4
+ module RSpec
5
+ def dinja_mock!(key, *args)
6
+ mock = instance_double(key)
7
+
8
+ allow_any_instance_of(Dinja::Container)
9
+ .to receive(:resolve)
10
+ .and_call_original
11
+
12
+ allow_any_instance_of(Dinja::Container)
13
+ .to receive(:resolve)
14
+ .with(key, *args)
15
+ .and_return mock
16
+
17
+ mock
18
+ end
19
+ end
20
+ end
data/lib/dinja/version.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Dinja
4
4
  module Version
5
5
  MAJOR = 1
6
- MINOR = 1
6
+ MINOR = 2
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dinja
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Dejonckheere
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-28 00:00:00.000000000 Z
11
+ date: 2021-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -217,9 +217,11 @@ files:
217
217
  - Gemfile
218
218
  - LICENSE.md
219
219
  - README.md
220
+ - config/inflections.rb
220
221
  - lib/dinja.rb
221
222
  - lib/dinja/container.rb
222
223
  - lib/dinja/railtie.rb
224
+ - lib/dinja/rspec.rb
223
225
  - lib/dinja/version.rb
224
226
  homepage: https://github.com/floriandejonckheere/dinja
225
227
  licenses: