Skip to content

Commit ea9debd

Browse files
committed
fix remaining specs
1 parent 6b29bad commit ea9debd

File tree

7 files changed

+62
-16
lines changed

7 files changed

+62
-16
lines changed

lib/mongoid-observers.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
require "rails/observers/active_model"
2+
23
require "mongoid"
34
require "mongoid/observers/config"
4-
require "mongoid/observers/composable"
5+
require "mongoid/observers/interceptable"
56
require "mongoid/observers/railtie" if defined? Rails
67
require "mongoid/observer"
78

lib/mongoid/observer.rb

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,6 @@ class Observer < ActiveModel::Observer
118118
# observer.add_observer!(Document)
119119
#
120120
# @param [ Class ] klass The child observer to add.
121-
#
122-
# @since 2.0.0.rc.8
123121
def add_observer!(klass)
124122
super and define_callbacks(klass)
125123
end
@@ -130,12 +128,10 @@ def add_observer!(klass)
130128
# observer.define_callbacks(Document)
131129
#
132130
# @param [ Class ] klass The model to define them on.
133-
#
134-
# @since 2.0.0.rc.8
135131
def define_callbacks(klass)
136132
observer = self
137133
observer_name = observer.class.name.underscore.gsub('/', '__')
138-
Mongoid::Interceptable::CALLBACKS.each do |callback|
134+
Mongoid::Interceptable.observables.each do |callback|
139135
next unless respond_to?(callback)
140136
callback_meth = :"_notify_#{observer_name}_for_#{callback}"
141137
unless klass.respond_to?(callback_meth)
@@ -178,8 +174,6 @@ class << self
178174
# end
179175
#
180176
# @param [ Array<Symbol> ] models The names of the models.
181-
#
182-
# @since 3.0.15
183177
def observe(*models)
184178
models.flatten!
185179
models.collect! do |model|

lib/mongoid/observers/composable.rb

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
module Mongoid
2+
module Interceptable
3+
include ActiveModel::Observing
4+
5+
class << self
6+
7+
# Get all callbacks that can be observed.
8+
#
9+
# @example Get the observables.
10+
# Interceptable.observables
11+
#
12+
# @return [ Array<Symbol> ] The names of the observables.
13+
def observables
14+
CALLBACKS + registered_observables
15+
end
16+
17+
# Get all registered callbacks that can be observed, not included in
18+
# Mongoid's defaults.
19+
#
20+
# @example Get the observables.
21+
# Interceptable.registered_observables
22+
#
23+
# @return [ Array<Symbol> ] The names of the registered observables.
24+
def registered_observables
25+
@registered_observables ||= []
26+
end
27+
end
28+
29+
module ClassMethods
30+
31+
# Set a custom callback as able to be observed.
32+
#
33+
# @example Set a custom callback as observable.
34+
# class Band
35+
# include Mongoid::Document
36+
#
37+
# define_model_callbacks :notification
38+
# observable :notification
39+
# end
40+
#
41+
# @param [ Array<Symbol> ] args The names of the observable callbacks.
42+
#
43+
# @since 3.0.1
44+
def observable(*args)
45+
observables = args.flat_map do |name|
46+
[ :"before_#{name}", :"after_#{name}", :"around_#{name}" ]
47+
end
48+
Interceptable.registered_observables.concat(observables).uniq
49+
end
50+
end
51+
end
52+
end

spec/app/models/actor.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
class Actor
22
include Mongoid::Document
33
field :name
4+
field :after_custom_count, type: Integer, default: 0
5+
6+
define_model_callbacks :custom
7+
observable :custom
48

59
def do_something
610
run_callbacks(:custom) do

spec/app/models/callback_recorder.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def reset
1414
@last_record = {}
1515
end
1616

17-
Mongoid::Interceptable::CALLBACKS.each do |callback|
17+
Mongoid::Interceptable.observables.each do |callback|
1818
define_method(callback) do |record, &block|
1919
@last_callback = callback
2020
@call_count[callback] += 1

spec/mongoid/observer_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ class BandObserver < Mongoid::Observer
201201
end
202202
end
203203

204-
context "when custom callbacks are being fired", :pending do
204+
context "when custom callbacks are being fired" do
205205

206206
let!(:actor) do
207207
Actor.create!
@@ -273,7 +273,7 @@ class BandObserver < Mongoid::Observer
273273
end
274274
end
275275

276-
context "when using a custom callback", :pending do
276+
context "when using a custom callback" do
277277

278278
let(:actor) do
279279
Actor.new

0 commit comments

Comments
 (0)