Sha256: fae8a507fdf6808ddf44acc1f9fcc86aa57d86c602501ad8c82060b39ec7f9bf

Contents?: true

Size: 1.6 KB

Versions: 83

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/ruby'

RSpec.describe ::EacRubyUtils::Ruby do
  describe '#on_replace_objects' do
    let(:stub_class) do
      ::Class.new do
        def self.my_class_method
          'Original'
        end

        def my_instance_method
          'Original'
        end
      end
    end

    let(:stub_instance) { stub_class.new }

    let(:replace_block) do
      ::Proc.new { 'Replaced' }
    end

    describe '#my_instance_method' do
      let(:before) { stub_instance.my_instance_method }
      let(:inside) do
        described_class.on_replace_objects do |replacer|
          replacer.replace_instance_method(stub_class, :my_instance_method, &replace_block)
          stub_instance.my_instance_method
        end
      end
      let(:after) { stub_instance.my_instance_method }

      before do
        before
        inside
        after
      end

      it { expect(before).to eq('Original') }
      it { expect(inside).to eq('Replaced') }
      it { expect(after).to eq('Original') }
    end

    describe '#replace_self_method' do
      let(:before) { stub_class.my_class_method }
      let(:inside) do
        described_class.on_replace_objects do |replacer|
          replacer.replace_self_method(stub_class, :my_class_method, &replace_block)
          stub_class.my_class_method
        end
      end
      let(:after) { stub_class.my_class_method }

      before do
        before
        inside
        after
      end

      it { expect(before).to eq('Original') }
      it { expect(inside).to eq('Replaced') }
      it { expect(after).to eq('Original') }
    end
  end
end

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
eac_tools-0.76.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.76.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.75.2 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.75.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.75.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.74.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.74.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.73.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.72.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.70.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.70.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.69.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.69.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.68.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.67.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.67.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.66.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.65.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.65.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb
eac_tools-0.64.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb