Remove previous landing page (#19300)
This commit is contained in:
		@@ -5,16 +5,13 @@ class AboutController < ApplicationController
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  layout 'public'
 | 
					  layout 'public'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_action :require_open_federation!, only: [:show, :more]
 | 
					  before_action :require_open_federation!, only: [:more]
 | 
				
			||||||
  before_action :set_body_classes, only: :show
 | 
					  before_action :set_body_classes, only: :show
 | 
				
			||||||
  before_action :set_instance_presenter
 | 
					  before_action :set_instance_presenter
 | 
				
			||||||
  before_action :set_expires_in, only: [:more]
 | 
					  before_action :set_expires_in, only: [:more]
 | 
				
			||||||
  before_action :set_registration_form_time, only: :show
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  skip_before_action :require_functional!, only: [:more]
 | 
					  skip_before_action :require_functional!, only: [:more]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def show; end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def more
 | 
					  def more
 | 
				
			||||||
    flash.now[:notice] = I18n.t('about.instance_actor_flash') if params[:instance_actor]
 | 
					    flash.now[:notice] = I18n.t('about.instance_actor_flash') if params[:instance_actor]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +0,0 @@
 | 
				
			|||||||
.simple_form
 | 
					 | 
				
			||||||
  %p.lead= t('about.logged_in_as_html', username: content_tag(:strong, current_account.username))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  .actions
 | 
					 | 
				
			||||||
    = link_to t('about.continue_to_web'), root_url, class: 'button button-primary'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.form-footer
 | 
					 | 
				
			||||||
  %ul.no-list
 | 
					 | 
				
			||||||
    %li= link_to t('about.get_apps'), 'https://joinmastodon.org/apps', target: '_blank', rel: 'noopener noreferrer'
 | 
					 | 
				
			||||||
    %li= link_to t('auth.logout'), destroy_user_session_path, data: { method: :delete }
 | 
					 | 
				
			||||||
@@ -1,22 +0,0 @@
 | 
				
			|||||||
- unless omniauth_only?
 | 
					 | 
				
			||||||
  = simple_form_for(new_user, url: user_session_path, namespace: 'login') do |f|
 | 
					 | 
				
			||||||
    .fields-group
 | 
					 | 
				
			||||||
      - if use_seamless_external_login?
 | 
					 | 
				
			||||||
        = f.input :email, placeholder: t('simple_form.labels.defaults.username_or_email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.username_or_email') }, hint: false
 | 
					 | 
				
			||||||
      - else
 | 
					 | 
				
			||||||
        = f.input :email, placeholder: t('simple_form.labels.defaults.email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }, hint: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      = f.input :password, placeholder: t('simple_form.labels.defaults.password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.password') }, hint: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .actions
 | 
					 | 
				
			||||||
      = f.button :button, t('auth.login'), type: :submit, class: 'button button-primary'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    %p.hint.subtle-hint= link_to t('auth.trouble_logging_in'), new_user_password_path
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- if Devise.mappings[:user].omniauthable? and User.omniauth_providers.any?
 | 
					 | 
				
			||||||
  .simple_form.alternative-login
 | 
					 | 
				
			||||||
    %h4= omniauth_only? ? t('auth.log_in_with') : t('auth.or_log_in_with')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .actions
 | 
					 | 
				
			||||||
      - User.omniauth_providers.each do |provider|
 | 
					 | 
				
			||||||
        = provider_sign_in_link(provider)
 | 
					 | 
				
			||||||
@@ -1,37 +0,0 @@
 | 
				
			|||||||
- disabled = closed_registrations? || omniauth_only? || current_account.present?
 | 
					 | 
				
			||||||
- show_message = disabled && (current_user.present? || @instance_presenter.closed_registrations_message.present?)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.simple_form__overlay-area{ class: show_message ? 'simple_form__overlay-area__blurred' : '' }
 | 
					 | 
				
			||||||
  = simple_form_for(new_user, url: user_registration_path, namespace: 'registration', html: { novalidate: false }) do |f|
 | 
					 | 
				
			||||||
    %p.lead= t('about.federation_hint_html', instance: content_tag(:strong, site_hostname))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .fields-group
 | 
					 | 
				
			||||||
      = f.simple_fields_for :account do |account_fields|
 | 
					 | 
				
			||||||
        = account_fields.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: false, disabled: disabled
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' }, hint: false, disabled: disabled
 | 
					 | 
				
			||||||
      = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'new-password', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false, disabled: disabled
 | 
					 | 
				
			||||||
      = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'new-password' }, hint: false, disabled: disabled
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' }, hint: false, disabled: disabled
 | 
					 | 
				
			||||||
      = f.input :website, as: :url, placeholder: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: 'Website'), :autocomplete => 'off' }, hint: false, disabled: disabled
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - if approved_registrations?
 | 
					 | 
				
			||||||
      .fields-group
 | 
					 | 
				
			||||||
        = f.simple_fields_for :invite_request do |invite_request_fields|
 | 
					 | 
				
			||||||
          = invite_request_fields.input :text, as: :text, wrapper: :with_block_label, required: Setting.require_invite_text
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .fields-group
 | 
					 | 
				
			||||||
      = f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.checkbox_agreement_html', rules_path: about_more_path, terms_path: terms_path), required: true, disabled: disabled
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .actions
 | 
					 | 
				
			||||||
      = f.button :button, sign_up_message, type: :submit, class: 'button button-primary', disabled: disabled
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  - if show_message
 | 
					 | 
				
			||||||
    .simple_form__overlay-area__overlay
 | 
					 | 
				
			||||||
      .simple_form__overlay-area__overlay__content.rich-formatting
 | 
					 | 
				
			||||||
        .block-icon= fa_icon 'warning'
 | 
					 | 
				
			||||||
        - if current_account.present?
 | 
					 | 
				
			||||||
          = t('about.logout_before_registering')
 | 
					 | 
				
			||||||
        - else
 | 
					 | 
				
			||||||
          = @instance_presenter.closed_registrations_message.html_safe
 | 
					 | 
				
			||||||
@@ -1,69 +0,0 @@
 | 
				
			|||||||
- content_for :page_title do
 | 
					 | 
				
			||||||
  = site_hostname
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- content_for :header_tags do
 | 
					 | 
				
			||||||
  %link{ rel: 'canonical', href: about_url }/
 | 
					 | 
				
			||||||
  = render partial: 'shared/og'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.landing
 | 
					 | 
				
			||||||
  .landing__brand
 | 
					 | 
				
			||||||
    = link_to root_url, class: 'brand' do
 | 
					 | 
				
			||||||
      = logo_as_symbol(:wordmark)
 | 
					 | 
				
			||||||
      %span.brand__tagline=t 'about.tagline'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  .landing__grid
 | 
					 | 
				
			||||||
    .landing__grid__column.landing__grid__column-registration
 | 
					 | 
				
			||||||
      .box-widget
 | 
					 | 
				
			||||||
        = render 'registration'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      .directory
 | 
					 | 
				
			||||||
        .directory__tag
 | 
					 | 
				
			||||||
          = link_to web_path do
 | 
					 | 
				
			||||||
            %h4
 | 
					 | 
				
			||||||
              = fa_icon 'globe fw'
 | 
					 | 
				
			||||||
              = t('about.see_whats_happening')
 | 
					 | 
				
			||||||
              %small= t('about.browse_public_posts')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        .directory__tag
 | 
					 | 
				
			||||||
          = link_to 'https://joinmastodon.org/apps', target: '_blank', rel: 'noopener noreferrer' do
 | 
					 | 
				
			||||||
            %h4
 | 
					 | 
				
			||||||
              = fa_icon 'tablet fw'
 | 
					 | 
				
			||||||
              = t('about.get_apps')
 | 
					 | 
				
			||||||
              %small= t('about.apps_platforms')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .landing__grid__column.landing__grid__column-login
 | 
					 | 
				
			||||||
      .box-widget
 | 
					 | 
				
			||||||
        - if current_user.present?
 | 
					 | 
				
			||||||
          = render 'logged_in'
 | 
					 | 
				
			||||||
        - else
 | 
					 | 
				
			||||||
          = render 'login'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      .hero-widget
 | 
					 | 
				
			||||||
        .hero-widget__img
 | 
					 | 
				
			||||||
          = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        .hero-widget__text
 | 
					 | 
				
			||||||
          %p
 | 
					 | 
				
			||||||
            = @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html')
 | 
					 | 
				
			||||||
            = link_to about_more_path do
 | 
					 | 
				
			||||||
              = t('about.learn_more')
 | 
					 | 
				
			||||||
              = fa_icon 'angle-double-right'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        .hero-widget__footer
 | 
					 | 
				
			||||||
          .hero-widget__footer__column
 | 
					 | 
				
			||||||
            %h4= t 'about.administered_by'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            = account_link_to @instance_presenter.contact.account
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          .hero-widget__footer__column
 | 
					 | 
				
			||||||
            %h4= t 'about.server_stats'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            .hero-widget__counters__wrapper
 | 
					 | 
				
			||||||
              .hero-widget__counter
 | 
					 | 
				
			||||||
                %strong= friendly_number_to_human @instance_presenter.user_count
 | 
					 | 
				
			||||||
                %span= t 'about.user_count_after', count: @instance_presenter.user_count
 | 
					 | 
				
			||||||
              .hero-widget__counter
 | 
					 | 
				
			||||||
                %strong= friendly_number_to_human @instance_presenter.active_user_count
 | 
					 | 
				
			||||||
                %span
 | 
					 | 
				
			||||||
                  = t 'about.active_count_after'
 | 
					 | 
				
			||||||
                  %abbr{ title: t('about.active_footnote') } *
 | 
					 | 
				
			||||||
@@ -3,38 +3,25 @@ en:
 | 
				
			|||||||
  about:
 | 
					  about:
 | 
				
			||||||
    about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!'
 | 
					    about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!'
 | 
				
			||||||
    about_this: About
 | 
					    about_this: About
 | 
				
			||||||
    active_count_after: active
 | 
					 | 
				
			||||||
    active_footnote: Monthly Active Users (MAU)
 | 
					 | 
				
			||||||
    administered_by: 'Administered by:'
 | 
					    administered_by: 'Administered by:'
 | 
				
			||||||
    api: API
 | 
					    api: API
 | 
				
			||||||
    apps: Mobile apps
 | 
					    apps: Mobile apps
 | 
				
			||||||
    apps_platforms: Use Mastodon from iOS, Android and other platforms
 | 
					 | 
				
			||||||
    browse_public_posts: Browse a live stream of public posts on Mastodon
 | 
					 | 
				
			||||||
    contact: Contact
 | 
					    contact: Contact
 | 
				
			||||||
    contact_missing: Not set
 | 
					    contact_missing: Not set
 | 
				
			||||||
    contact_unavailable: N/A
 | 
					    contact_unavailable: N/A
 | 
				
			||||||
    continue_to_web: Continue to web app
 | 
					 | 
				
			||||||
    documentation: Documentation
 | 
					    documentation: Documentation
 | 
				
			||||||
    federation_hint_html: With an account on %{instance} you'll be able to follow people on any Mastodon server and beyond.
 | 
					 | 
				
			||||||
    get_apps: Try a mobile app
 | 
					 | 
				
			||||||
    hosted_on: Mastodon hosted on %{domain}
 | 
					    hosted_on: Mastodon hosted on %{domain}
 | 
				
			||||||
    instance_actor_flash: |
 | 
					    instance_actor_flash: |
 | 
				
			||||||
      This account is a virtual actor used to represent the server itself and not any individual user.
 | 
					      This account is a virtual actor used to represent the server itself and not any individual user.
 | 
				
			||||||
      It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block.
 | 
					      It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block.
 | 
				
			||||||
    learn_more: Learn more
 | 
					 | 
				
			||||||
    logged_in_as_html: You are currently logged in as %{username}.
 | 
					 | 
				
			||||||
    logout_before_registering: You are already logged in.
 | 
					 | 
				
			||||||
    privacy_policy: Privacy Policy
 | 
					    privacy_policy: Privacy Policy
 | 
				
			||||||
    rules: Server rules
 | 
					    rules: Server rules
 | 
				
			||||||
    rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:'
 | 
					    rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:'
 | 
				
			||||||
    see_whats_happening: See what's happening
 | 
					 | 
				
			||||||
    server_stats: 'Server stats:'
 | 
					 | 
				
			||||||
    source_code: Source code
 | 
					    source_code: Source code
 | 
				
			||||||
    status_count_after:
 | 
					    status_count_after:
 | 
				
			||||||
      one: post
 | 
					      one: post
 | 
				
			||||||
      other: posts
 | 
					      other: posts
 | 
				
			||||||
    status_count_before: Who published
 | 
					    status_count_before: Who published
 | 
				
			||||||
    tagline: Decentralized social network
 | 
					 | 
				
			||||||
    unavailable_content: Moderated servers
 | 
					    unavailable_content: Moderated servers
 | 
				
			||||||
    unavailable_content_description:
 | 
					    unavailable_content_description:
 | 
				
			||||||
      domain: Server
 | 
					      domain: Server
 | 
				
			||||||
@@ -1049,7 +1036,6 @@ en:
 | 
				
			|||||||
      redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
 | 
					      redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
 | 
				
			||||||
      view_strikes: View past strikes against your account
 | 
					      view_strikes: View past strikes against your account
 | 
				
			||||||
    too_fast: Form submitted too fast, try again.
 | 
					    too_fast: Form submitted too fast, try again.
 | 
				
			||||||
    trouble_logging_in: Trouble logging in?
 | 
					 | 
				
			||||||
    use_security_key: Use security key
 | 
					    use_security_key: Use security key
 | 
				
			||||||
  authorize_follow:
 | 
					  authorize_follow:
 | 
				
			||||||
    already_following: You are already following this account
 | 
					    already_following: You are already following this account
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -641,7 +641,7 @@ Rails.application.routes.draw do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  get '/web/(*any)', to: 'home#index', as: :web
 | 
					  get '/web/(*any)', to: 'home#index', as: :web
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get '/about',        to: 'about#show'
 | 
					  get '/about',        to: redirect('/')
 | 
				
			||||||
  get '/about/more',   to: 'about#more'
 | 
					  get '/about/more',   to: 'about#more'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get '/privacy-policy', to: 'privacy#show', as: :privacy_policy
 | 
					  get '/privacy-policy', to: 'privacy#show', as: :privacy_policy
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,20 +3,6 @@ require 'rails_helper'
 | 
				
			|||||||
RSpec.describe AboutController, type: :controller do
 | 
					RSpec.describe AboutController, type: :controller do
 | 
				
			||||||
  render_views
 | 
					  render_views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe 'GET #show' do
 | 
					 | 
				
			||||||
    before do
 | 
					 | 
				
			||||||
      get :show
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it 'assigns @instance_presenter' do
 | 
					 | 
				
			||||||
      expect(assigns(:instance_presenter)).to be_kind_of InstancePresenter
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it 'returns http success' do
 | 
					 | 
				
			||||||
      expect(response).to have_http_status(200)
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  describe 'GET #more' do
 | 
					  describe 'GET #more' do
 | 
				
			||||||
    before do
 | 
					    before do
 | 
				
			||||||
      get :more
 | 
					      get :more
 | 
				
			||||||
@@ -30,12 +16,4 @@ RSpec.describe AboutController, type: :controller do
 | 
				
			|||||||
      expect(response).to have_http_status(200)
 | 
					      expect(response).to have_http_status(200)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					 | 
				
			||||||
  describe 'helper_method :new_user' do
 | 
					 | 
				
			||||||
    it 'returns a new User' do
 | 
					 | 
				
			||||||
      user = @controller.view_context.new_user
 | 
					 | 
				
			||||||
      expect(user).to be_kind_of User
 | 
					 | 
				
			||||||
      expect(user.account).to be_kind_of Account
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,30 +10,30 @@ describe 'Localization' do
 | 
				
			|||||||
  it 'uses a specific region when provided' do
 | 
					  it 'uses a specific region when provided' do
 | 
				
			||||||
    headers = { 'Accept-Language' => 'zh-HK' }
 | 
					    headers = { 'Accept-Language' => 'zh-HK' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    get "/about", headers: headers
 | 
					    get "/auth/sign_in", headers: headers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(response.body).to include(
 | 
					    expect(response.body).to include(
 | 
				
			||||||
      I18n.t('about.tagline', locale: 'zh-HK')
 | 
					      I18n.t('auth.login', locale: 'zh-HK')
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it 'falls back to a locale when region missing' do
 | 
					  it 'falls back to a locale when region missing' do
 | 
				
			||||||
    headers = { 'Accept-Language' => 'es-FAKE' }
 | 
					    headers = { 'Accept-Language' => 'es-FAKE' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    get "/about", headers: headers
 | 
					    get "/auth/sign_in", headers: headers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(response.body).to include(
 | 
					    expect(response.body).to include(
 | 
				
			||||||
      I18n.t('about.tagline', locale: 'es')
 | 
					      I18n.t('auth.login', locale: 'es')
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it 'falls back to english when locale is missing' do
 | 
					  it 'falls back to english when locale is missing' do
 | 
				
			||||||
    headers = { 'Accept-Language' => '12-FAKE' }
 | 
					    headers = { 'Accept-Language' => '12-FAKE' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    get "/about", headers: headers
 | 
					    get "/auth/sign_in", headers: headers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    expect(response.body).to include(
 | 
					    expect(response.body).to include(
 | 
				
			||||||
      I18n.t('about.tagline', locale: 'en')
 | 
					      I18n.t('auth.login', locale: 'en')
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
# frozen_string_literal: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
require 'rails_helper'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe 'about/show.html.haml', without_verify_partial_doubles: true do
 | 
					 | 
				
			||||||
  before do
 | 
					 | 
				
			||||||
    allow(view).to receive(:site_hostname).and_return('example.com')
 | 
					 | 
				
			||||||
    allow(view).to receive(:site_title).and_return('example site')
 | 
					 | 
				
			||||||
    allow(view).to receive(:new_user).and_return(User.new)
 | 
					 | 
				
			||||||
    allow(view).to receive(:use_seamless_external_login?).and_return(false)
 | 
					 | 
				
			||||||
    allow(view).to receive(:current_account).and_return(nil)
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  it 'has valid open graph tags' do
 | 
					 | 
				
			||||||
    assign(:instance_presenter, InstancePresenter.new)
 | 
					 | 
				
			||||||
    render
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    header_tags = view.content_for(:header_tags)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    expect(header_tags).to match(%r{<meta content=".+" property="og:title" />})
 | 
					 | 
				
			||||||
    expect(header_tags).to match(%r{<meta content="website" property="og:type" />})
 | 
					 | 
				
			||||||
    expect(header_tags).to match(%r{<meta content=".+" property="og:image" />})
 | 
					 | 
				
			||||||
    expect(header_tags).to match(%r{<meta content="http://.+" property="og:url" />})
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user