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

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: 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