Skip to content

Commit

Permalink
Merge pull request #3519 from nebulab/spaghetticode/rename-name-with-…
Browse files Browse the repository at this point in the history
…suffix

Replace `Spree::Event#name_with_suffix` with `adapter#normalize_name`
  • Loading branch information
spaghetticode authored Feb 27, 2020
2 parents 24c2479 + 72c4445 commit d25e389
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 8 deletions.
14 changes: 8 additions & 6 deletions core/lib/spree/event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ module Event
# @order.finalize!
# end
def fire(event_name, opts = {})
adapter.fire name_with_suffix(event_name.to_s), opts do
adapter.fire normalize_name(event_name), opts do
yield opts if block_given?
end
end
Expand All @@ -30,7 +30,8 @@ def fire(event_name, opts = {})
# every time the subscribed event is fired.
#
# @param [String] event_name the name of the event. The suffix ".spree"
# will be added automatically if not present
# will be added automatically if not present, when using the default
# adapter for ActiveSupportNotifications.
#
# @return a subscription object that can be used as reference in order
# to remove the subscription
Expand All @@ -43,7 +44,7 @@ def fire(event_name, opts = {})
#
# @see Spree::Event#unsubscribe
def subscribe(event_name, &block)
name = name_with_suffix(event_name)
name = normalize_name(event_name)
listener_names << name
adapter.subscribe(name, &block)
end
Expand All @@ -61,7 +62,7 @@ def subscribe(event_name, &block)
# @example Unsubscribe an event by name with explicit prefix
# Spree::Event.unsubscribe('order_finalized.spree')
def unsubscribe(subscriber)
name_or_subscriber = subscriber.is_a?(String) ? name_with_suffix(subscriber) : subscriber
name_or_subscriber = subscriber.is_a?(String) ? normalize_name(subscriber) : subscriber
adapter.unsubscribe(name_or_subscriber)
end

Expand Down Expand Up @@ -95,6 +96,7 @@ def adapter
#
# @see Spree::Event::Configuration#suffix
def suffix
Spree::Deprecation.warn "This method is deprecated and will be removed. Please use Event::Adapters::ActiveSupportNotifications#suffix"
Spree::Config.events.suffix
end

Expand All @@ -106,8 +108,8 @@ def subscribers

private

def name_with_suffix(name)
name.end_with?(suffix) ? name : [name, suffix].join
def normalize_name(name)
adapter.normalize_name(name)
end

def listener_names
Expand Down
16 changes: 16 additions & 0 deletions core/lib/spree/event/adapters/active_support_notifications.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,22 @@ def listeners_for(names)
memo[name] = listeners if listeners.present?
end
end

# Normalizes the event name according to this specific adapter rules.
# @param [String, Symbol] event_name the event name, with or without the
# .spree" suffix)
def normalize_name(event_name)
name = event_name.to_s
name.end_with?(suffix) ? name : [name, suffix].join
end

# The suffix used for namespacing event names, defaults to
# `.spree`
#
# @see Spree::Event::Configuration#suffix
def suffix
Spree::Config.events.suffix
end
end
end
end
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# frozen_string_literal: true

require 'spec_helper'
require 'spree/event'

module Spree
module Event
module Adapters
RSpec.describe ActiveSupportNotifications do
describe "#normalize_name" do
subject { described_class.normalize_name(event_name) }

context "when event name is a string" do
let(:event_name) { "foo" }

it "adds the suffix to the event name" do
expect(subject).to eql "foo.spree"
end
end
end
end
end
end
end
3 changes: 1 addition & 2 deletions core/spec/lib/spree/event_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# frozen_string_literal: true

require 'spec_helper'
require 'spree/event'
require 'rails_helper'

RSpec.describe Spree::Event do
let(:subscription_name) { 'foo_bar' }
Expand Down

0 comments on commit d25e389

Please sign in to comment.