Bladeren bron

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.
master
Joël Quenneville 7 jaren geleden
committed by Eugen
bovenliggende
commit
1cf9e14a41
2 gewijzigde bestanden met toevoegingen van 72 en 2 verwijderingen
  1. +9
    -2
      app/helpers/stream_entries_helper.rb
  2. +63
    -0
      spec/helpers/stream_entries_helper_spec.rb

+ 9
- 2
app/helpers/stream_entries_helper.rb Bestand weergeven

@@ -1,6 +1,9 @@
# frozen_string_literal: true

module StreamEntriesHelper
EMBEDDED_CONTROLLER = 'stream_entries'.freeze
EMBEDDED_ACTION = 'embed'.freeze

def display_name(account)
account.display_name.presence || account.username
end
@@ -10,7 +13,11 @@ module StreamEntriesHelper
end

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

def style_classes(status, is_predecessor, is_successor, include_threads)
@@ -58,6 +65,6 @@ module StreamEntriesHelper
end

def embedded_view?
params[:controller] == 'stream_entries' && params[:action] == 'embed'
params[:controller] == EMBEDDED_CONTROLLER && params[:action] == EMBEDDED_ACTION
end
end

+ 63
- 0
spec/helpers/stream_entries_helper_spec.rb Bestand weergeven

@@ -15,6 +15,69 @@ RSpec.describe StreamEntriesHelper, type: :helper do
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
it do
status = double(reblog?: false)


Laden…
Annuleren
Opslaan