require 'spec_helper' describe Cocoon do class TestClass < ActionView::Base end subject {TestClass.new} it { should respond_to(:link_to_add_association) } it { should respond_to(:link_to_remove_association) } context "link_to_add_association" do before(:each) do @tester = TestClass.new @post = Post.new @form_obj = stub(:object => @post) @tester.stub(:render_association).and_return('form') end context "without a block" do it "should accept a name" do result = @tester.link_to_add_association('add something', @form_obj, :comments) result.to_s.should == 'add something' end it "should accept html options and pass them to link_to" do result = @tester.link_to_add_association('add something', @form_obj, :comments, {:class => 'something silly'}) result.to_s.should == 'add something' end end context "with a block" do it "the block gives the link text" do result = @tester.link_to_add_association(@form_obj, :comments) do "some long name" end result.to_s.should == 'some long name' end it "should accept html options and pass them to link_to" do result = @tester.link_to_add_association(@form_obj, :comments, {:class => 'floppy disk'}) do "some long name" end result.to_s.should == 'some long name' end end context "with an irregular plural" do it "should use the correct plural" do result = @tester.link_to_add_association('add something', @form_obj, :people) result.to_s.should == 'add something' end end end context "link_to_remove_association" do before(:each) do @tester = TestClass.new @post = Post.new @form_obj = stub(:object => @post, :object_name => @post.class.name) end context "without a block" do it "should accept a name" do result = @tester.link_to_remove_association('remove something', @form_obj) result.to_s.should == "remove something" end it "should accept html options and pass them to link_to" do result = @tester.link_to_remove_association('remove something', @form_obj, {:class => 'add_some_class', :'data-something' => 'bla'}) result.to_s.should == "remove something" end end context "with a block" do it "the block gives the name" do result = @tester.link_to_remove_association(@form_obj) do "remove some long name" end result.to_s.should == "remove some long name" end it "should accept html options and pass them to link_to" do result = @tester.link_to_remove_association(@form_obj, {:class => 'add_some_class', :'data-something' => 'bla'}) do "remove some long name" end result.to_s.should == "remove some long name" end end end end