test/tc_service_point.rb in needle-1.1.0 vs test/tc_service_point.rb in needle-1.2.0

- old
+ new

@@ -14,10 +14,11 @@ # ============================================================================= #++ $:.unshift "../lib" +require 'needle' require 'needle/interceptor' require 'needle/pipeline/interceptor' require 'needle/service-point' require 'test/unit' @@ -37,17 +38,30 @@ succ.call( *args ) end def <=>( item ) priority <=> item.priority end + def reset! + end end class Container + def initialize( descended=true ) + @descended = descended + end + def root self end + def non_public_services_exist? + true + end + + def non_public_services_exist=( flag ) + end + def []( name ) case name when :service_models { :mock => [ :mock ] } when :pipeline_elements @@ -56,10 +70,14 @@ end def fullname "container" end + + def descended_from?( c ) + @descended + end end class Interceptor def initialize( point, opts ) end @@ -138,8 +156,39 @@ interceptor = Needle::Interceptor.new.with { Interceptor } point.interceptor interceptor inst = point.instance assert_instance_of Needle::InterceptorChainBuilder::InterceptedServiceProxy, inst + end + + def test_interceptor_after_instance + reg = Needle::Registry.new + reg.define.foo { "hello" } + + events = [] + reg.intercept( :foo ).doing do |ch,ctx| + events << "first" + ch.process_next ctx + end + reg.intercept( :foo ).doing do |ch,ctx| + events << "second" + ch.process_next ctx + end + + obj1 = reg.foo + obj1.length + assert_equal [ "first", "second" ], events + + events = [] + reg.intercept( :foo ).doing do |ch,ctx| + events << "third" + ch.process_next ctx + end + + obj2 = reg.foo + obj2.length + assert_equal [ "first", "second", "third" ], events + + assert_not_same obj1, obj2 end end