# frozen_string_literal: truerequire"minitest/mock"moduleActiveSupportmoduleTestingmoduleMethodCallAssertions# :nodoc:privatedefassert_called(object,method_name,message=nil,times: 1,returns: nil,&block)times_called=0object.stub(method_name,proc{times_called+=1;returns},&block)error="Expected #{method_name} to be called #{times} times, "\"but was called #{times_called} times"error="#{message}.\n#{error}"ifmessageassert_equaltimes,times_called,errorenddefassert_called_with(object,method_name,args,returns: nil,&block)mock=Minitest::Mock.newifargs.all?(Array)args.each{|arg|mock.expect(:call,returns,arg)}elsemock.expect(:call,returns,args)endobject.stub(method_name,mock,&block)mock.verifyenddefassert_not_called(object,method_name,message=nil,&block)assert_called(object,method_name,message,times: 0,&block)enddefassert_called_on_instance_of(klass,method_name,message=nil,times: 1,returns: nil)times_called=0klass.define_method("stubbed_#{method_name}")do|*|times_called+=1returnsendklass.alias_method"original_#{method_name}",method_nameklass.alias_methodmethod_name,"stubbed_#{method_name}"yielderror="Expected #{method_name} to be called #{times} times, but was called #{times_called} times"error="#{message}.\n#{error}"ifmessageassert_equaltimes,times_called,errorensureklass.alias_methodmethod_name,"original_#{method_name}"klass.undef_method"original_#{method_name}"klass.undef_method"stubbed_#{method_name}"enddefassert_not_called_on_instance_of(klass,method_name,message=nil,&block)assert_called_on_instance_of(klass,method_name,message,times: 0,&block)enddefstub_any_instance(klass,instance: klass.new)klass.stub(:new,instance){yieldinstance}endendendend