summaryrefslogtreecommitdiff
path: root/spec/ruby/core/refinement/import_methods_spec.rb
blob: 1c526f5822b338ac1f1f2dc9022597ee0260eb37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require_relative '../../spec_helper'

describe "Refinement#import_methods" do
  ruby_version_is "3.1" do
    context "when methods are defined in Ruby code" do
      it "imports methods" do
        str_utils = Module.new do
          def indent(level)
            " " * level + self
          end
        end

        Module.new do
          refine String do
            import_methods str_utils
            "foo".indent(3).should == "   foo"
          end
        end
      end
    end

    context "when methods are not defined in Ruby code" do
      it "raises ArgumentError" do
        Module.new do
          refine String do
            -> {
              import_methods Kernel
            }.should raise_error(ArgumentError)
          end
        end
      end
    end
  end
end