mongoid-rspec-callbacks-dazzl 1.0.0.pre.892077720 → 1.0.0.pre.892495119

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: 585f0cb59c2c16169b135b0c79eeb70d0e8c95e029a3d398ca6def97d8940df6
4
- data.tar.gz: cdc016cdd74429fcc87c426c9c1a5842dffea8ecbdcb1e96a903cf28bb86fcb0
3
+ metadata.gz: 3d5d7309afc9501cfe6867dcca64f286c5d0ae20e8a16bc18582a4dd29bf4f0c
4
+ data.tar.gz: fa1e1e3ec307422e0af1b6b7ec09de79706e8ed6f7c4324edee2a82e9bfe0202
5
5
  SHA512:
6
- metadata.gz: f6a26303ebc3ba30c741c2de3f1ba2a815edb55892b3d4d482dbe701120f7de99faecd6c13080fa54cef6ec43cabd12fe90b8d041c4ab0d0ee58bde49fcf705e
7
- data.tar.gz: 7033f8e9fea21b5cf2ca6c6997a76a7e20f8d102655ed649a2d70a6d151c39ece109e758a8f83ab3f7a928c75c72d2bf3abc0a57627016082ed44d87b8e7b53c
6
+ metadata.gz: 57b8400a7530eff80577b9ad9b21f727c84d2a7c3e40955cd898808f50d3ca1ffeb1944c4ea0b9465335d3bca6c539e43ebf2d35fa4fb69f593e3a82c572e36e
7
+ data.tar.gz: 49cb58da1ae06fdd36d17baf119da34779bda8abc351b60986b29439c68f90f631939f470cec22d5f80302c9f50d31acc6f5ea16e7f2e2462946043b5d0122f3
data/README.md CHANGED
@@ -63,3 +63,12 @@ describe User do
63
63
  :send_email_to_subscribers) }
64
64
  end
65
65
  ```
66
+
67
+ ## delegate Matchers
68
+
69
+ ```
70
+ describe User do
71
+ it { is_expected.to delegate(:name).to(:author) }
72
+ it { is_expected.to delegate(:day).to(:created_at).with_prefix(:date) }
73
+ end
74
+ ```
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mongoid
4
+ module Matchers
5
+ # Create an matcher for delegate method
6
+ #
7
+ # Usage:
8
+ #
9
+ # it { is_expected.to delegate(:name).to(:author) }
10
+ # it { is_expected.to delegate(:day).to(:created_at).with_prefix(:date) }
11
+ class HaveDelegateMatcher
12
+ # Set methods to look for
13
+ def initialize(*args)
14
+ @delegated = args[0]
15
+ @method = @delegated
16
+ end
17
+
18
+ def to(to)
19
+ @to = to
20
+ self
21
+ end
22
+
23
+ def with_prefix(prefix)
24
+ @prefix = prefix
25
+ @method = :"#{@prefix}_#{@method}"
26
+ self
27
+ end
28
+
29
+ def matches?(klass)
30
+ @delegator = klass
31
+ @delegator.methods.include?(@method)
32
+ end
33
+
34
+ def description
35
+ "delegate : #{@method}"
36
+ end
37
+
38
+ def failure_message
39
+ "expected #{@delegator} have delegator #{_method}"
40
+ end
41
+
42
+ def failure_message_when_negated
43
+ "expected #{@delegator} have not to delegator :#{@method} #{prefix?}"
44
+ end
45
+
46
+ private
47
+
48
+ def _method
49
+ if @prefix
50
+ ":#{@delegated} with prefix :#{@prefix}"
51
+ else
52
+ ":#{@delegated}"
53
+ end
54
+ end
55
+
56
+ def prefix?
57
+ @prefix ? ' with prefix' : ''
58
+ end
59
+ end
60
+
61
+ def delegate(*args)
62
+ p "Args : #{args}"
63
+ HaveDelegateMatcher.new(*args)
64
+ end
65
+ end
66
+ end
@@ -2,5 +2,6 @@
2
2
 
3
3
  require 'mongoid'
4
4
  require 'matchers/callbacks'
5
+ require 'matchers/delegates'
5
6
  require 'matchers/set_callbacks'
6
7
  require 'matchers/association_callbacks'
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Member do
6
+ it { is_expected.to delegate(:day).to(:created_at).with_prefix(:date) }
7
+ it { is_expected.to delegate(:lastday).to(:updated_at).with_prefix(:update) }
8
+ end
data/spec/spec_helper.rb CHANGED
@@ -15,7 +15,7 @@ end
15
15
 
16
16
  RSpec.configure do |config|
17
17
  # Stop when rspec fail
18
- config.fail_fast = false
18
+ config.fail_fast = true
19
19
 
20
20
  # Exclude spec broken
21
21
  config.filter_run_excluding broken: true
data/spec/studio_spec.rb CHANGED
@@ -5,4 +5,5 @@ require 'spec_helper'
5
5
  describe Studio do
6
6
  it { is_expected.to association_callback(:has_many, :remove, :after, :send_notification_subscribers) }
7
7
  it { is_expected.to association_callback(:has_many, :remove, :before, :send_notification_unsubscribers) }
8
+ it { is_expected.to delegate(:leader).to(:band) }
8
9
  end
@@ -8,6 +8,9 @@ class Band
8
8
  after_add: :send_email_to_subscribers
9
9
  }
10
10
 
11
+ has_many :members
12
+ has_one :leader, class_name: 'Musician'
13
+
11
14
  def send_email_to_subscribers
12
15
  true
13
16
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Member
4
+ include Mongoid::Document
5
+ include Mongoid::Timestamps
6
+
7
+ delegate :day, prefix: 'date', to: :created_at
8
+ delegate :lastday, prefix: 'update', to: :updated_at
9
+
10
+ belongs_to :band
11
+ belongs_to :leader, class_name: 'band'
12
+ end
@@ -10,6 +10,8 @@ class Studio
10
10
  after_remove: :send_email_to_unsubscribers
11
11
  }
12
12
 
13
+ delegate :leader, to: :band
14
+
13
15
  def send_notification_subscribers
14
16
  true
15
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-rspec-callbacks-dazzl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.892077720
4
+ version: 1.0.0.pre.892495119
5
5
  platform: ruby
6
6
  authors:
7
7
  - VAILLANT Jeremy
@@ -213,14 +213,17 @@ files:
213
213
  - Rakefile
214
214
  - lib/matchers/association_callbacks.rb
215
215
  - lib/matchers/callbacks.rb
216
+ - lib/matchers/delegates.rb
216
217
  - lib/matchers/set_callbacks.rb
217
218
  - lib/mongoid-rspec-callbacks-dazzl/info.rb
218
219
  - lib/mongoid_rspec_callbacks_dazzl.rb
219
220
  - spec/band_spec.rb
221
+ - spec/member_spec.rb
220
222
  - spec/profile_spec.rb
221
223
  - spec/spec_helper.rb
222
224
  - spec/studio_spec.rb
223
225
  - spec/support/models/band.rb
226
+ - spec/support/models/member.rb
224
227
  - spec/support/models/profile.rb
225
228
  - spec/support/models/studio.rb
226
229
  - spec/support/models/user.rb