diaspora/spec/helpers/people_helper_spec.rb
cmrd Senya d200e92aeb Fix up the meaning of the name parameter in mentions
The desktop frontend now treats the "name" parameter of mention as
a string to display unconditionally. But the Diaspora::Mentionable
renders mentions the different way: "name" is treated as a fallback
string which is rendered only if the person's name is unavailable.
This reflects on the mobile version ATM. This patch makes it behave
the same way as the current desktop version does.
2016-08-11 13:19:48 +03:00

110 lines
3.5 KiB
Ruby

# Copyright (c) 2010-2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
require 'spec_helper'
describe PeopleHelper, :type => :helper do
before do
@user = alice
@person = FactoryGirl.create(:person)
end
describe "#birthday_format" do
it "contains the birth year if available" do
birthday = Date.new 2016, 3, 5
expect(birthday_format(birthday)).to include "2016"
end
it "does not contain the birth year if placeholder year is used" do
birthday = Date.new 1004, 3, 5
expect(birthday_format(birthday)).not_to include "1004"
end
end
describe "#person_image_link" do
it "returns an empty string if person is nil" do
expect(person_image_link(nil)).to eq("")
end
it "returns a link containing the person's photo" do
expect(person_image_link(@person)).to include(@person.profile.image_url)
end
it "returns a link to the person's profile" do
expect(person_image_link(@person)).to include(person_path(@person))
end
end
describe "#person_image_tag" do
it "returns an empty string if person is nil" do
expect(person_image_tag(nil)).to eq("")
end
it "should not allow basic XSS/HTML" do
@person.profile.first_name = "I'm <h1>Evil"
@person.profile.last_name = "I'm <h1>Evil"
expect(person_image_tag(@person)).not_to include("<h1>")
end
end
describe '#person_link' do
before do
@person = FactoryGirl.create(:person)
end
it 'includes the name of the person if they have a first name' do
expect(person_link(@person)).to include @person.profile.first_name
end
it 'uses diaspora handle if the person has no first or last name' do
@person.profile.first_name = nil
@person.profile.last_name = nil
expect(person_link(@person)).to include @person.diaspora_handle
end
it 'uses diaspora handle if first name and first name are rails#blank?' do
@person.profile.first_name = " "
@person.profile.last_name = " "
expect(person_link(@person)).to include @person.diaspora_handle
end
it "should not allow basic XSS/HTML" do
@person.profile.first_name = "I'm <h1>Evil"
@person.profile.last_name = "I'm <h1>Evil"
expect(person_link(@person)).not_to include("<h1>")
end
it 'links by id for a local user' do
expect(person_link(@user.person)).to include "href='#{person_path(@user.person)}'"
end
it "recognizes the 'display_name' option" do
display_name = "string used as a name"
expect(person_link(@person, display_name: display_name)).to match(%r{<a [^>]+>#{display_name}</a>})
end
end
describe '#local_or_remote_person_path' do
before do
@user = FactoryGirl.create(:user)
end
it "links by id if there is a period in the user's username" do
@user.username = "invalid.username"
expect(@user.save(:validate => false)).to eq(true)
person = @user.person
person.diaspora_handle = "#{@user.username}@#{AppConfig.pod_uri.authority}"
person.save!
expect(local_or_remote_person_path(@user.person)).to eq(person_path(@user.person))
end
it 'links by username for a local user' do
expect(local_or_remote_person_path(@user.person)).to eq(user_profile_path(:username => @user.username))
end
it 'links by id for a remote person' do
expect(local_or_remote_person_path(@person)).to eq(person_path(@person))
end
end
end