Sha256: dae557624646275e6fe14524b5bd6dd09d69cd6b49dfc7fb0076f5dc10e16466
Contents?: true
Size: 1.63 KB
Versions: 3
Compression:
Stored size: 1.63 KB
Contents
require "spec_helper" describe Object, ".static_facade" do it "creates a class method that instantiates and runs that instance method" do klass = Class.new do static_facade :fooable?, :foo def fooable? foo end end assert klass.fooable?(true) refute klass.fooable?(false) end it "doesn't require attributes" do klass = Class.new do static_facade :fooable? def fooable? true end end assert klass.fooable? end it "accepts multiple method names" do klass = Class.new do static_facade [ :fooable?, :barable? ], :foo def fooable? foo end def barable? not foo end end assert klass.fooable?(true) assert klass.barable?(false) end it "passes along any block to the instance method" do klass = Class.new do static_facade :foo def foo yield end end assert klass.foo { :bar } == :bar end it "does not blow up when the class method is called with an empty hash" do klass = Class.new do static_facade :foo, :value def foo end end refute_raises_anything { klass.foo({}) } end it "does not emit warnings when the initializer is overridden with more keyword arguments" do superklass = Class.new do static_facade :something, [ :foo!, :bar! ] def something end end klass = Class.new(superklass) do def initialize(extra:, **rest) super(**rest) @extra = extra end end refute_warnings_emitted { klass.something(foo: 1, bar: 2, extra: "yay") } end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
attr_extras-7.0.0 | spec/attr_extras/static_facade_spec.rb |
attr_extras-6.2.5 | spec/attr_extras/static_facade_spec.rb |
attr_extras-6.2.4 | spec/attr_extras/static_facade_spec.rb |