spec/spec_helper.rb in sub_diff-1.1.0 vs spec/spec_helper.rb in sub_diff-1.1.1

- old
+ new

@@ -1,80 +1,15 @@ -begin - if ENV['CODECLIMATE_REPO_TOKEN'] - require 'codeclimate-test-reporter' - CodeClimate::TestReporter.start - else - require 'simplecov' - SimpleCov.start { add_filter('/vendor/bundle/') } - end -rescue LoadError - # Ignore when testing with Ruby 1.8.7 +if ENV['CODECLIMATE_REPO_TOKEN'] + require 'codeclimate-test-reporter' + CodeClimate::TestReporter.start +else + require 'simplecov' + SimpleCov.start { add_filter('/vendor/bundle/') } end require File.expand_path('../../lib/sub_diff', __FILE__) RSpec.configure do |config| config.filter_run :focus config.raise_errors_for_deprecations! config.run_all_when_everything_filtered = true -end - -# RSpec matcher to spec delegations. -# Forked from https://gist.github.com/ssimeonov/5942729 with fixes -# for arity + custom prefix. -# -# Usage: -# -# describe Post do -# it { should delegate(:name).to(:author).with_prefix } # post.author_name -# it { should delegate(:name).to(:author).with_prefix(:any) } # post.any_name -# it { should delegate(:month).to(:created_at) } -# it { should delegate(:year).to(:created_at) } -# it { should delegate(:something).to(:'@instance_var') } -# end -RSpec::Matchers.define :delegate do |method| - match do |delegator| - @prefix ||= nil - @method = @prefix ? :"#{@prefix}_#{method}" : method - @delegator = delegator - - if @to.to_s[0] == '@' - # Delegation to an instance variable - old_value = @delegator.instance_variable_get(@to) - begin - @delegator.instance_variable_set(@to, receiver_double(method)) - @delegator.send(@method) == :called - ensure - @delegator.instance_variable_set(@to, old_value) - end - elsif @delegator.respond_to?(@to, true) - unless [0,-1].include?(@delegator.method(@to).arity) - raise "#{@delegator}'s' #{@to} method does not have zero or -1 arity (it expects parameters)" - end - allow(@delegator).to receive(@to).and_return(receiver_double(method)) - @delegator.send(@method) == :called - else - raise "#{@delegator} does not respond to #{@to}" - end - end - - description do - "delegate :#{@method} to its #{@to}#{@prefix ? ' with prefix' : ''}" - end - - failure_message do |text| - "expected #{@delegator} to delegate :#{@method} to its #{@to}#{@prefix ? ' with prefix' : ''}" - end - - failure_message_when_negated do |text| - "expected #{@delegator} not to delegate :#{@method} to its #{@to}#{@prefix ? ' with prefix' : ''}" - end - - chain(:to) { |receiver| @to = receiver } - chain(:with_prefix) { |prefix| @prefix = prefix || @to } - - def receiver_double(method) - double('receiver').tap do |receiver| - allow(receiver).to receive(method).and_return(:called) - end - end end