Skip to content

Commit

Permalink
Specs
Browse files Browse the repository at this point in the history
  • Loading branch information
Rustam Ibragimov committed Nov 6, 2017
1 parent 9cbf68d commit a2e4f23
Show file tree
Hide file tree
Showing 45 changed files with 1,017 additions and 239 deletions.
2 changes: 0 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

- Renamed configuration object: EvilEvents::Config.config => EvilEvents::Config.options

## [0.1.1] - 2017-10-29
### [Added]
- Serialization of event ids: support for using :id key in JSON/Hash serialization/deserialization.
1 change: 0 additions & 1 deletion lib/evil_events.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ module EvilEvents
require_relative 'evil_events/config'
require_relative 'evil_events/event'
require_relative 'evil_events/serializer'
require_relative 'evil_events/adapters'
require_relative 'evil_events/emitter'
require_relative 'evil_events/subscriber_mixin'
require_relative 'evil_events/dispatcher_mixin'
Expand Down
24 changes: 0 additions & 24 deletions lib/evil_events/adapters.rb

This file was deleted.

4 changes: 2 additions & 2 deletions lib/evil_events/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module EvilEvents
# @since 0.1.0
module Config
require_relative 'config/adapters'
require_relative 'config/types_setup'
require_relative 'config/types'

class << self
# @see EvilEvents::Core::Config
Expand All @@ -26,7 +26,7 @@ def configure
# @api public
# @since 0.2.0
def setup_types
yield(Config::TypesSetup) if block_given?
yield(Config::Types) if block_given?
end

# @see EvilEvents::Config::adapters
Expand Down
6 changes: 3 additions & 3 deletions lib/evil_events/config/adapters.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@

module EvilEvents::Config
# @api public
# @since 0.1.0
# @since 0.2.0
module Adapters
class << self
# @see EvilEvents::Core::System
# @api public
# @since 0.1.0
# @since 0.2.0
def register(adapter_name, adapter_object)
EvilEvents::Core::Bootstrap[:event_system].register_adapter(adapter_name, adapter_object)
end

# @see EvilEvents::Core::System
# @api public
# @since 0.1.0
# @since 0.2.0
def resolve(adapter_name)
EvilEvents::Core::Bootstrap[:event_system].resolve_adapter(adapter_name)
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,22 @@
module EvilEvents::Config
# @api public
# @since 0.2.0
module TypesSetup
module Types
class << self

# @see EvilEvents::Core::System
# @api public
# @since 0.2.0
def define_converter(type, &block)
EvilEvents::Core::Bootstrap[:event_system].register_converter(type, &block)
def define_converter(type, &coercer)
EvilEvents::Core::Bootstrap[:event_system].register_converter(type, coercer)
end

# @see EvilEvents::Core::System
# @api public
# @since 0.2.0
def resolve_type(type)
EvilEvents::Core::Bootstrap[:event_system].resolve_type(type)
def resolve_type(type, **options)
EvilEvents::Core::Bootstrap[:event_system].resolve_type(type, **options)
end
alias_method :[], :resolve_type
end
end
end
1 change: 1 addition & 0 deletions lib/evil_events/core.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ module EvilEvents
# @api private
# @since 0.1.0
module Core
require_relative 'core/error'
require_relative 'core/activity_logger'
require_relative 'core/broadcasting'
require_relative 'core/events'
Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/broadcasting/emitter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module EvilEvents::Core::Broadcasting
# @since 0.1.0
class Emitter
# @since 0.1.0
EmitterError = Class.new(StandardError)
EmitterError = Class.new(EvilEvents::Core::Error)
# @since 0.1.0
IncorrectEventError = Class.new(EmitterError)

Expand Down
6 changes: 6 additions & 0 deletions lib/evil_events/core/error.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

module EvilEvents::Core
# @since 0.2.0
Error = Class.new(StandardError)
end
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module EvilEvents::Core::Events::EventExtensions
# @since 0.1.0
module TypeAliasing
# @since 0.1.0
TypeAliasingError = Class.new(StandardError)
TypeAliasingError = Class.new(EvilEvents::Core::Error)
# @since 0.1.0
IncopatibleEventTypeError = Class.new(TypeAliasingError)
# @since 0.1.0
Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/events/event_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def create_class(event_type, &event_class_definitions)
klass.type(event_type)
klass.manage!
klass.evaluate(&event_class_definitions) if block_given?
rescue EvilEvents::Core::Events::ManagerRegistry::AlreadyManagedEventClassError
rescue StandardError
EvilEvents::Core::Bootstrap[:event_system].unregister_event_class(klass)
raise
end
Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/events/manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module EvilEvents::Core::Events
# @since 0.1.0
class Manager
# @since 0.1.0
ManagerError = Class.new(StandardError)
ManagerError = Class.new(EvilEvents::Core::Error)
# @since 0.1.0
InconsistentEventClassError = Class.new(ManagerError)
# @since 0.1.0
Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/events/manager/notifier.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class EvilEvents::Core::Events::Manager
# @since 0.1.0
module Notifier
# @since 0.1.0
NotifierError = Class.new(StandardError)
NotifierError = Class.new(EvilEvents::Core::Error)
# @since 0.1.0
InconsistentEventClassError = Class.new(NotifierError)

Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/events/manager_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module EvilEvents::Core::Events
# @since 0.1.0
module ManagerFactory
# @since 0.1.0
ManagerFactoryError = Class.new(StandardError)
ManagerFactoryError = Class.new(EvilEvents::Core::Error)
# @since 0.1.0
IncorrectEventClassError = Class.new(ManagerFactoryError)

Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/events/manager_registry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class ManagerRegistry
extend Forwardable

# @since 0.1.0
ManagerRegistryError = Class.new(StandardError)
ManagerRegistryError = Class.new(EvilEvents::Core::Error)
# @since 0.1.0
IncorrectManagerObjectError = Class.new(ManagerRegistryError)
# @since 0.1.0
Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/events/serializers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class Serializers
extend EvilEvents::Shared::DependencyContainer::Mixin

# @since 0.1.0
SerializersError = Class.new(StandardError)
SerializersError = Class.new(EvilEvents::Core::Error)
# @since 0.1.0
SerializationError = Class.new(SerializersError)
# @since 0.1.0
Expand Down
2 changes: 1 addition & 1 deletion lib/evil_events/core/system/mock.rb
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def managed_event?(event_class); end

# @see EvilEvents::Core::System
# @since 0.2.0
def register_converter(type, &block); end
def register_converter(type, coercer); end

# @see EvilEvents::Core::System
# @since 0.2.0
Expand Down
10 changes: 5 additions & 5 deletions lib/evil_events/core/system/type_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@ def initialize
end

# @param type [Symbol]
# @param block [Block]
# @return void
# @param coercer [Proc]
# @return [EvilEvents::Shared::Converter]
#
# @api private
# @since 0.2.0
def register_converter(type, &block)
converter.register(type, &block)
def register_converter(type, coercer)
converter.register(type, coercer)
end

# @param type [Symbol]
# @param options [Hash]
def resolve_type(type, **options)
converter.resolve(type, **options)
converter.resolve_type(type, **options)
end
end
end
11 changes: 5 additions & 6 deletions lib/evil_events/shared/type_converter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,23 @@ def initialize
end

# @param type_name [Symbol]
# @param callable [Nil,Mixed]
# @param convertion [Block]
# @return void
# @param coercer [Proc]
# @return [EvilEvents::Shared::TypeConverter::Converter]
#
# @see EvilEvents::Shared::TypeConverter::ConverterRegistry
#
# @api public
# @since 0.2.0
def register(type_name, &convertion)
registry.register(type_name, &convertion)
def register(type_name, coercer)
registry.register(type_name, coercer)
end

# @param type_name [Symbol]
# @param options [Hash]
# @return [EvilEvents::Shared::Types::Any]
#
# @since 0.2.0
def resolve(type_name, **options)
def resolve_type(type_name, **options)
registry.resolve(type_name).transform_to_type(**options)
end
end
Expand Down
15 changes: 8 additions & 7 deletions lib/evil_events/shared/type_converter/converter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,28 @@ class EvilEvents::Shared::TypeConverter
# @since 0.2.0
class Converter
# @since 0.2.0
attr_reader :convertion_proc
attr_reader :coercer

# @param type [Symbol]
# @param convertion_proc [proc]
# @param coercer [proc]
#
# @since 0.2.0
def initialize(convertion_proc)
@convertion_proc = convertion_proc
def initialize(coercer)
raise ArgumentError unless coercer.is_a?(Proc)

@coercer = coercer
end

# @param value
def convert(value)
convertion_proc.call(value)
coercer.call(value)
end

# @option :default [Mixed]
#
# @since 0.2.0
def transform_to_type(**options)
TypeBuilder.new.tap do |builder|
builder.append(:constructor, convertion_proc)
builder.append(:constructor, coercer)
builder.append(:default, options[:default]) if options.key?(:default)
end.result
end
Expand Down
12 changes: 7 additions & 5 deletions lib/evil_events/shared/type_converter/converter_registry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,19 @@ def initialize
end

# @param type_name [Symbol]
# @param convertion [proc]
# @param coercer [Proc]
# @raise ArgumentError
# @return void
# @return [Converter]
#
# @api public
# @since 0.2.0
def register(type_name, &convertion)
raise ArgumentError unless block_given?
def register(type_name, coercer)
raise ArgumentError unless type_name.is_a?(Symbol)
raise ArgumentError unless coercer.is_a?(Proc)

converters.register(type_name, Converter.new(convertion))
Converter.new(coercer).tap do |converter|
converters.register(type_name, converter)
end
end

# @param type [Mixed]
Expand Down
6 changes: 3 additions & 3 deletions lib/evil_events/shared/type_converter/type_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ def append(option, value)
type_atom.swap do |type|
case option
when :default
# NOTE: Dry::Types callable fallback (see Dry::Types::Default::Callable#evaulate)
default_value = value.is_a?(Proc) ? (->(t) { value.call }) : (proc { value })
# NOTE: Dry::Types callable wrapper (see Dry::Types::Default::Callable#evaulate)
default_value = value.is_a?(Proc) ? (->(_type) { value.call }) : (proc { value })
type.default(default_value)
when :constructor
type = type.constructor(value)
type.constructor(value)
else
type
end
Expand Down
Loading

0 comments on commit a2e4f23

Please sign in to comment.