diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bde528332..8e5d4b457 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -22,8 +22,9 @@ module ApplicationHelper end def object_path(object, opts = {}) + return "" if object.nil? object = object.person if object.is_a? User - eval("#{object.class.to_s.underscore}_path(object, opts)") + eval("#{object.class.name.underscore}_path(object, opts)") end def object_fields(object) @@ -77,10 +78,11 @@ module ApplicationHelper end def person_image_link(person, opts = {}) + return "" if person.nil? if opts[:to] == :photos link_to person_image_tag(person), person_photos_path(person) else - link_to person_image_tag(person), object_path(person) + link_to person_image_tag(person), person_path(person) end end diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 9e7cb7f4c..3d7f6ee9c 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -18,6 +18,30 @@ describe ApplicationHelper do person_url(@user).should == "/users/#{@user.id}" end + describe "#object_path" do + it "returns an empty string if object is nil" do + object_path(nil).should == "" + end + it "returns person path if it's a person" do + object_path(@person).should == person_path(@person) + end + it "returns person path if it's a user" do + object_path(@user).should == person_path(@user.person) + end + end + + describe "#person_image_link" do + it "returns an empty string if person is nil" do + person_image_link(nil).should == "" + end + it "returns a link containing the person's photo" do + person_image_link(@person).should include(image_or_default(@person)) + end + it "returns a link to the person's profile" do + person_image_link(@person).should include("href=\"#{person_path(@person)}\"") + end + end + describe "markdownify" do describe "autolinks" do it "should not allow basic XSS/HTML" do