Sha256: dce7aeb18aeec5a8f849f788345b12004d6c1734e03df865d14c53fa2bb984b6
Contents?: true
Size: 1.97 KB
Versions: 4
Compression:
Stored size: 1.97 KB
Contents
require_relative '../test_helper' DuckPuncher.punch! Object, only: :punch class DuckPuncherTest < MiniTest::Test def setup @subject = Animal.new @kaia = Kaia.new end def teardown DuckPuncher.deregister Animal, Kaia, Dog end def test_punch! refute_respond_to @kaia, :talk refute_respond_to @kaia.punch, :talk DuckPuncher.register Kaia, CustomPunch DuckPuncher.punch! Kaia, only: :talk assert_respond_to @kaia, :talk assert_respond_to @kaia.punch, :talk end def test_punch_all! DuckPuncher.() expected_methods = DuckPuncher::Ducks.list.values.m(:to_a).flatten.m(:mod).m(:local_methods).flatten assert expected_methods.size > 1 good_ducks = DuckPuncher::Ducks.list.select { |_, ducks| ducks.all? { |duck| (duck.mod.local_methods - duck.target.instance_methods(:false)).size.zero? } } assert good_ducks.size > 5 end def test_call DuckPuncher.() expected_methods = DuckPuncher::Ducks.list.values.m(:to_a).flatten.m(:mod).m(:local_methods).flatten assert expected_methods.size > 1 good_ducks = DuckPuncher::Ducks.list.select { |_, ducks| # Assert that all methods were copied over ducks.all? { |duck| (duck.mod.local_methods - duck.target.instance_methods(:false)).size.zero? } } assert good_ducks.size > 5 end def test_register_with_multiple_mods refute_respond_to @subject, :talk refute_respond_to @subject, :wobble refute_respond_to @subject.punch, :talk refute_respond_to @subject.punch, :wobble DuckPuncher.register Animal, CustomPunch, CustomPunch3 assert_respond_to @subject.punch, :talk assert_respond_to @subject.punch, :wobble end def test_deregister refute_respond_to @subject, :talk refute_respond_to @subject.punch, :talk DuckPuncher.register Animal, CustomPunch assert_respond_to @subject.punch, :talk refute_respond_to @subject, :talk DuckPuncher.deregister Animal refute_respond_to @subject.punch, :talk end end
Version data entries
4 entries across 4 versions & 1 rubygems