Clean up about page (#1282)
* Add InstancePresenter to expose site details * Clean up about controller, use instance presenterth-downstream
parent
b92480bc01
commit
41b79ae693
@ -0,0 +1,28 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class InstancePresenter
|
||||
delegate(
|
||||
:closed_registrations_message,
|
||||
:contact_email,
|
||||
:open_registrations,
|
||||
:site_description,
|
||||
:site_extended_description,
|
||||
to: Setting
|
||||
)
|
||||
|
||||
def contact_account
|
||||
Account.find_local(Setting.site_contact_username)
|
||||
end
|
||||
|
||||
def user_count
|
||||
Rails.cache.fetch('user_count') { User.count }
|
||||
end
|
||||
|
||||
def status_count
|
||||
Rails.cache.fetch('local_status_count') { Status.local.count }
|
||||
end
|
||||
|
||||
def domain_count
|
||||
Rails.cache.fetch('distinct_domain_count') { Account.distinct.count(:domain) }
|
||||
end
|
||||
end
|
@ -0,0 +1,30 @@
|
||||
= simple_form_for(new_user, url: user_registration_path) do |f|
|
||||
= f.simple_fields_for :account do |account_fields|
|
||||
= account_fields.input :username,
|
||||
autofocus: true,
|
||||
placeholder: t('simple_form.labels.defaults.username'),
|
||||
required: true,
|
||||
input_html: { 'aria-label' => t('simple_form.labels.defaults.username') }
|
||||
|
||||
= f.input :email,
|
||||
placeholder: t('simple_form.labels.defaults.email'),
|
||||
required: true,
|
||||
input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }
|
||||
= f.input :password,
|
||||
autocomplete: "off",
|
||||
placeholder: t('simple_form.labels.defaults.password'),
|
||||
required: true,
|
||||
input_html: { 'aria-label' => t('simple_form.labels.defaults.password') }
|
||||
= f.input :password_confirmation,
|
||||
autocomplete: "off",
|
||||
placeholder: t('simple_form.labels.defaults.confirm_password'),
|
||||
required: true,
|
||||
input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password') }
|
||||
|
||||
.actions
|
||||
= f.button :button, t('about.get_started'), type: :submit
|
||||
|
||||
.info
|
||||
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
||||
·
|
||||
= link_to t('about.about_this'), about_more_path
|
@ -0,0 +1,74 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe InstancePresenter do
|
||||
let(:instance_presenter) { InstancePresenter.new }
|
||||
|
||||
it "delegates site_description to Setting" do
|
||||
Setting.site_description = "Site desc"
|
||||
|
||||
expect(instance_presenter.site_description).to eq "Site desc"
|
||||
end
|
||||
|
||||
it "delegates site_extended_description to Setting" do
|
||||
Setting.site_extended_description = "Extended desc"
|
||||
|
||||
expect(instance_presenter.site_extended_description).to eq "Extended desc"
|
||||
end
|
||||
|
||||
it "delegates open_registrations to Setting" do
|
||||
Setting.open_registrations = false
|
||||
|
||||
expect(instance_presenter.open_registrations).to eq false
|
||||
end
|
||||
|
||||
it "delegates closed_registrations_message to Setting" do
|
||||
Setting.closed_registrations_message = "Closed message"
|
||||
|
||||
expect(instance_presenter.closed_registrations_message).to eq "Closed message"
|
||||
end
|
||||
|
||||
it "delegates contact_email to Setting" do
|
||||
Setting.contact_email = "admin@example.com"
|
||||
|
||||
expect(instance_presenter.contact_email).to eq "admin@example.com"
|
||||
end
|
||||
|
||||
describe "contact_account" do
|
||||
it "returns the account for the site contact username" do
|
||||
Setting.site_contact_username = "aaa"
|
||||
account = Fabricate(:account, username: "aaa")
|
||||
|
||||
expect(instance_presenter.contact_account).to eq(account)
|
||||
end
|
||||
end
|
||||
|
||||
describe "user_count" do
|
||||
it "returns the number of site users" do
|
||||
cache = double
|
||||
allow(Rails).to receive(:cache).and_return(cache)
|
||||
allow(cache).to receive(:fetch).with("user_count").and_return(123)
|
||||
|
||||
expect(instance_presenter.user_count).to eq(123)
|
||||
end
|
||||
end
|
||||
|
||||
describe "status_count" do
|
||||
it "returns the number of local statuses" do
|
||||
cache = double
|
||||
allow(Rails).to receive(:cache).and_return(cache)
|
||||
allow(cache).to receive(:fetch).with("local_status_count").and_return(234)
|
||||
|
||||
expect(instance_presenter.status_count).to eq(234)
|
||||
end
|
||||
end
|
||||
|
||||
describe "domain_count" do
|
||||
it "returns the number of known domains" do
|
||||
cache = double
|
||||
allow(Rails).to receive(:cache).and_return(cache)
|
||||
allow(cache).to receive(:fetch).with("distinct_domain_count").and_return(345)
|
||||
|
||||
expect(instance_presenter.domain_count).to eq(345)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in new issue