spec/draper/helper_proxy_spec.rb in draper-1.0.0 vs spec/draper/helper_proxy_spec.rb in draper-1.1.0
- old
+ new
@@ -1,12 +1,42 @@
require 'spec_helper'
-describe Draper::HelperProxy do
- subject(:helper_proxy) { Draper::HelperProxy.new }
- let(:view_context) { Object.new }
- before { helper_proxy.stub(:view_context).and_return(view_context) }
+module Draper
+ describe HelperProxy do
+ describe "#initialize" do
+ it "sets the view context" do
+ view_context = double
+ helper_proxy = HelperProxy.new(view_context)
- it "proxies methods to the view context" do
- view_context.should_receive(:foo).with("bar")
- helper_proxy.foo("bar")
+ expect(helper_proxy.send(:view_context)).to be view_context
+ end
+ end
+
+ describe "#method_missing" do
+ protect_class HelperProxy
+
+ it "proxies methods to the view context" do
+ view_context = double
+ helper_proxy = HelperProxy.new(view_context)
+
+ view_context.stub(:foo).and_return{|arg| arg}
+ expect(helper_proxy.foo(:passed)).to be :passed
+ end
+
+ it "passes blocks" do
+ view_context = double
+ helper_proxy = HelperProxy.new(view_context)
+
+ view_context.stub(:foo).and_return{|&block| block.call}
+ expect(helper_proxy.foo{:yielded}).to be :yielded
+ end
+
+ it "defines the method for better performance" do
+ helper_proxy = HelperProxy.new(double(foo: "bar"))
+
+ expect(HelperProxy.instance_methods).not_to include :foo
+ helper_proxy.foo
+ expect(HelperProxy.instance_methods).to include :foo
+ end
+ end
end
end