forked from fedi/mastodon
Test embedded_view related code in a helper (#2282)
The two methods `StreamEntriesHelper#stream_link_target` and `StreamEntriesHelper#acct` are based on checking whether we are running in an embedded view. This adds some test helper code to make the testing easier. We extracted some "magic strings" to constants to lower the coupling in the specs.
This commit is contained in:
parent
0c2fe22bc1
commit
1cf9e14a41
|
@ -1,6 +1,9 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module StreamEntriesHelper
|
module StreamEntriesHelper
|
||||||
|
EMBEDDED_CONTROLLER = 'stream_entries'.freeze
|
||||||
|
EMBEDDED_ACTION = 'embed'.freeze
|
||||||
|
|
||||||
def display_name(account)
|
def display_name(account)
|
||||||
account.display_name.presence || account.username
|
account.display_name.presence || account.username
|
||||||
end
|
end
|
||||||
|
@ -10,7 +13,11 @@ module StreamEntriesHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def acct(account)
|
def acct(account)
|
||||||
"@#{account.acct}#{embedded_view? && account.local? ? "@#{Rails.configuration.x.local_domain}" : ''}"
|
if embedded_view? && account.local?
|
||||||
|
"@#{account.acct}@#{Rails.configuration.x.local_domain}"
|
||||||
|
else
|
||||||
|
"@#{account.acct}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def style_classes(status, is_predecessor, is_successor, include_threads)
|
def style_classes(status, is_predecessor, is_successor, include_threads)
|
||||||
|
@ -58,6 +65,6 @@ module StreamEntriesHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def embedded_view?
|
def embedded_view?
|
||||||
params[:controller] == 'stream_entries' && params[:action] == 'embed'
|
params[:controller] == EMBEDDED_CONTROLLER && params[:action] == EMBEDDED_ACTION
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,6 +15,69 @@ RSpec.describe StreamEntriesHelper, type: :helper do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#stream_link_target' do
|
||||||
|
it 'returns nil if it is not an embedded view' do
|
||||||
|
set_not_embedded_view
|
||||||
|
|
||||||
|
expect(helper.stream_link_target).to be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns _blank if it is an embedded view' do
|
||||||
|
set_embedded_view
|
||||||
|
|
||||||
|
expect(helper.stream_link_target).to eq '_blank'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#acct' do
|
||||||
|
it 'is fully qualified for embedded local accounts' do
|
||||||
|
allow(Rails.configuration.x).to receive(:local_domain).and_return('local_domain')
|
||||||
|
set_embedded_view
|
||||||
|
account = Account.new(domain: nil, username: 'user')
|
||||||
|
|
||||||
|
acct = helper.acct(account)
|
||||||
|
|
||||||
|
expect(acct).to eq '@user@local_domain'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'is fully qualified for embedded foreign accounts' do
|
||||||
|
set_embedded_view
|
||||||
|
account = Account.new(domain: 'foreign_server.com', username: 'user')
|
||||||
|
|
||||||
|
acct = helper.acct(account)
|
||||||
|
|
||||||
|
expect(acct).to eq '@user@foreign_server.com'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'is fully qualified for non embedded foreign accounts' do
|
||||||
|
set_not_embedded_view
|
||||||
|
account = Account.new(domain: 'foreign_server.com', username: 'user')
|
||||||
|
|
||||||
|
acct = helper.acct(account)
|
||||||
|
|
||||||
|
expect(acct).to eq '@user@foreign_server.com'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'is the shortname for non embedded local accounts' do
|
||||||
|
set_not_embedded_view
|
||||||
|
account = Account.new(domain: nil, username: 'user')
|
||||||
|
|
||||||
|
acct = helper.acct(account)
|
||||||
|
|
||||||
|
expect(acct).to eq '@user'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_not_embedded_view
|
||||||
|
params[:controller] = "not_#{StreamEntriesHelper::EMBEDDED_CONTROLLER}"
|
||||||
|
params[:action] = "not_#{StreamEntriesHelper::EMBEDDED_ACTION}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_embedded_view
|
||||||
|
params[:controller] = StreamEntriesHelper::EMBEDDED_CONTROLLER
|
||||||
|
params[:action] = StreamEntriesHelper::EMBEDDED_ACTION
|
||||||
|
end
|
||||||
|
|
||||||
describe '#style_classes' do
|
describe '#style_classes' do
|
||||||
it do
|
it do
|
||||||
status = double(reblog?: false)
|
status = double(reblog?: false)
|
||||||
|
|
Loading…
Reference in a new issue