~cytrogen/masto-fe

3df665fd236832fc336ff3ccfaee99a557422176 — Matt Jankowski 2 years ago 8b636a2
Fix Lint/ConstantDefinitionInBlock cop (#24763)

M .rubocop_todo.yml => .rubocop_todo.yml +0 -13
@@ 106,19 106,6 @@ Lint/AmbiguousOperatorPrecedence:
  Exclude:
    - 'config/initializers/rack_attack.rb'

# Configuration parameters: AllowedMethods.
# AllowedMethods: enums
Lint/ConstantDefinitionInBlock:
  Exclude:
    - 'spec/controllers/api/base_controller_spec.rb'
    - 'spec/controllers/application_controller_spec.rb'
    - 'spec/controllers/concerns/accountable_concern_spec.rb'
    - 'spec/controllers/concerns/signature_verification_spec.rb'
    - 'spec/lib/activitypub/adapter_spec.rb'
    - 'spec/lib/connection_pool/shared_connection_pool_spec.rb'
    - 'spec/lib/connection_pool/shared_timed_stack_spec.rb'
    - 'spec/models/concerns/remotable_spec.rb'

# Configuration parameters: AllowComments, AllowEmptyLambdas.
Lint/EmptyBlock:
  Exclude:

M spec/controllers/api/base_controller_spec.rb => spec/controllers/api/base_controller_spec.rb +6 -8
@@ 74,7 74,11 @@ describe Api::BaseController do
  end

  describe 'error handling' do
    ERRORS_WITH_CODES = {
    before do
      routes.draw { get 'error' => 'api/base#error' }
    end

    {
      ActiveRecord::RecordInvalid => 422,
      Mastodon::ValidationError => 422,
      ActiveRecord::RecordNotFound => 404,


@@ 82,13 86,7 @@ describe Api::BaseController do
      HTTP::Error => 503,
      OpenSSL::SSL::SSLError => 503,
      Mastodon::NotPermittedError => 403,
    }

    before do
      routes.draw { get 'error' => 'api/base#error' }
    end

    ERRORS_WITH_CODES.each do |error, code|
    }.each do |error, code|
      it "Handles error class of #{error}" do
        expect(FakeService).to receive(:new).and_raise(error)


M spec/controllers/application_controller_spec.rb => spec/controllers/application_controller_spec.rb +7 -5
@@ 223,14 223,16 @@ describe ApplicationController, type: :controller do
  end

  describe 'cache_collection' do
    class C < ApplicationController
      public :cache_collection
    subject do
      Class.new(ApplicationController) do
        public :cache_collection
      end
    end

    shared_examples 'receives :with_includes' do |fabricator, klass|
      it 'uses raw if it is not an ActiveRecord::Relation' do
        record = Fabricate(fabricator)
        expect(C.new.cache_collection([record], klass)).to eq [record]
        expect(subject.new.cache_collection([record], klass)).to eq [record]
      end
    end



@@ 241,13 243,13 @@ describe ApplicationController, type: :controller do
        record = Fabricate(fabricator)
        relation = klass.none
        allow(relation).to receive(:cache_ids).and_return([record])
        expect(C.new.cache_collection(relation, klass)).to eq [record]
        expect(subject.new.cache_collection(relation, klass)).to eq [record]
      end
    end

    it 'returns raw unless class responds to :with_includes' do
      raw = Object.new
      expect(C.new.cache_collection(raw, Object)).to eq raw
      expect(subject.new.cache_collection(raw, Object)).to eq raw
    end

    context 'Status' do

M spec/controllers/concerns/accountable_concern_spec.rb => spec/controllers/concerns/accountable_concern_spec.rb +8 -6
@@ 3,18 3,20 @@
require 'rails_helper'

RSpec.describe AccountableConcern do
  class Hoge
    include AccountableConcern
    attr_reader :current_account
  let(:hoge_class) do
    Class.new do
      include AccountableConcern
      attr_reader :current_account

    def initialize(current_account)
      @current_account = current_account
      def initialize(current_account)
        @current_account = current_account
      end
    end
  end

  let(:user)   { Fabricate(:account) }
  let(:target) { Fabricate(:account) }
  let(:hoge)   { Hoge.new(user) }
  let(:hoge)   { hoge_class.new(user) }

  describe '#log_action' do
    it 'creates Admin::ActionLog' do

M spec/controllers/concerns/signature_verification_spec.rb => spec/controllers/concerns/signature_verification_spec.rb +9 -7
@@ 3,14 3,16 @@
require 'rails_helper'

describe ApplicationController, type: :controller do
  class WrappedActor
    attr_reader :wrapped_account
  let(:wrapped_actor_class) do
    Class.new do
      attr_reader :wrapped_account

    def initialize(wrapped_account)
      @wrapped_account = wrapped_account
    end
      def initialize(wrapped_account)
        @wrapped_account = wrapped_account
      end

    delegate :uri, :keypair, to: :wrapped_account
      delegate :uri, :keypair, to: :wrapped_account
    end
  end

  controller do


@@ 93,7 95,7 @@ describe ApplicationController, type: :controller do
    end

    context 'with a valid actor that is not an Account' do
      let(:actor) { WrappedActor.new(author) }
      let(:actor) { wrapped_actor_class.new(author) }

      before do
        get :success

M spec/lib/activitypub/adapter_spec.rb => spec/lib/activitypub/adapter_spec.rb +34 -26
@@ 3,43 3,51 @@
require 'rails_helper'

RSpec.describe ActivityPub::Adapter do
  class TestObject < ActiveModelSerializers::Model
    attributes :foo
  end
  before do
    test_object_class = Class.new(ActiveModelSerializers::Model) do
      attributes :foo
    end
    stub_const('TestObject', test_object_class)

  class TestWithBasicContextSerializer < ActivityPub::Serializer
    attributes :foo
  end
    test_with_basic_context_serializer = Class.new(ActivityPub::Serializer) do
      attributes :foo
    end
    stub_const('TestWithBasicContextSerializer', test_with_basic_context_serializer)

  class TestWithNamedContextSerializer < ActivityPub::Serializer
    context :security
    attributes :foo
  end
    test_with_named_context_serializer = Class.new(ActivityPub::Serializer) do
      context :security
      attributes :foo
    end
    stub_const('TestWithNamedContextSerializer', test_with_named_context_serializer)

  class TestWithNestedNamedContextSerializer < ActivityPub::Serializer
    attributes :foo
    test_with_nested_named_context_serializer = Class.new(ActivityPub::Serializer) do
      attributes :foo

    has_one :virtual_object, key: :baz, serializer: TestWithNamedContextSerializer
      has_one :virtual_object, key: :baz, serializer: TestWithNamedContextSerializer

    def virtual_object
      object
      def virtual_object
        object
      end
    end
  end
    stub_const('TestWithNestedNamedContextSerializer', test_with_nested_named_context_serializer)

  class TestWithContextExtensionSerializer < ActivityPub::Serializer
    context_extensions :sensitive
    attributes :foo
  end
    test_with_context_extension_serializer = Class.new(ActivityPub::Serializer) do
      context_extensions :sensitive
      attributes :foo
    end
    stub_const('TestWithContextExtensionSerializer', test_with_context_extension_serializer)

  class TestWithNestedContextExtensionSerializer < ActivityPub::Serializer
    context_extensions :manually_approves_followers
    attributes :foo
    test_with_nested_context_extension_serializer = Class.new(ActivityPub::Serializer) do
      context_extensions :manually_approves_followers
      attributes :foo

    has_one :virtual_object, key: :baz, serializer: TestWithContextExtensionSerializer
      has_one :virtual_object, key: :baz, serializer: TestWithContextExtensionSerializer

    def virtual_object
      object
      def virtual_object
        object
      end
    end
    stub_const('TestWithNestedContextExtensionSerializer', test_with_nested_context_extension_serializer)
  end

  describe '#serializable_hash' do

M spec/lib/connection_pool/shared_connection_pool_spec.rb => spec/lib/connection_pool/shared_connection_pool_spec.rb +9 -7
@@ 3,22 3,24 @@
require 'rails_helper'

describe ConnectionPool::SharedConnectionPool do
  class MiniConnection
    attr_reader :site
  subject { described_class.new(size: 5, timeout: 5) { |site| mini_connection_class.new(site) } }

    def initialize(site)
      @site = site
  let(:mini_connection_class) do
    Class.new do
      attr_reader :site

      def initialize(site)
        @site = site
      end
    end
  end

  subject { described_class.new(size: 5, timeout: 5) { |site| MiniConnection.new(site) } }

  describe '#with' do
    it 'runs a block with a connection' do
      block_run = false

      subject.with('foo') do |connection|
        expect(connection).to be_a MiniConnection
        expect(connection).to be_a mini_connection_class
        block_run = true
      end


M spec/lib/connection_pool/shared_timed_stack_spec.rb => spec/lib/connection_pool/shared_timed_stack_spec.rb +15 -13
@@ 3,30 3,32 @@
require 'rails_helper'

describe ConnectionPool::SharedTimedStack do
  class MiniConnection
    attr_reader :site
  subject { described_class.new(5) { |site| mini_connection_class.new(site) } }

    def initialize(site)
      @site = site
  let(:mini_connection_class) do
    Class.new do
      attr_reader :site

      def initialize(site)
        @site = site
      end
    end
  end

  subject { described_class.new(5) { |site| MiniConnection.new(site) } }

  describe '#push' do
    it 'keeps the connection in the stack' do
      subject.push(MiniConnection.new('foo'))
      subject.push(mini_connection_class.new('foo'))
      expect(subject.size).to eq 1
    end
  end

  describe '#pop' do
    it 'returns a connection' do
      expect(subject.pop('foo')).to be_a MiniConnection
      expect(subject.pop('foo')).to be_a mini_connection_class
    end

    it 'returns the same connection that was pushed in' do
      connection = MiniConnection.new('foo')
      connection = mini_connection_class.new('foo')
      subject.push(connection)
      expect(subject.pop('foo')).to be connection
    end


@@ 36,8 38,8 @@ describe ConnectionPool::SharedTimedStack do
    end

    it 'repurposes a connection for a different site when maximum amount is reached' do
      5.times { subject.push(MiniConnection.new('foo')) }
      expect(subject.pop('bar')).to be_a MiniConnection
      5.times { subject.push(mini_connection_class.new('foo')) }
      expect(subject.pop('bar')).to be_a mini_connection_class
    end
  end



@@ 47,14 49,14 @@ describe ConnectionPool::SharedTimedStack do
    end

    it 'returns false when there are connections on the stack' do
      subject.push(MiniConnection.new('foo'))
      subject.push(mini_connection_class.new('foo'))
      expect(subject.empty?).to be false
    end
  end

  describe '#size' do
    it 'returns the number of connections on the stack' do
      2.times { subject.push(MiniConnection.new('foo')) }
      2.times { subject.push(mini_connection_class.new('foo')) }
      expect(subject.size).to eq 2
    end
  end

M spec/models/concerns/remotable_spec.rb => spec/models/concerns/remotable_spec.rb +24 -25
@@ 3,48 3,47 @@
require 'rails_helper'

RSpec.describe Remotable do
  class Foo
    def initialize
      @attrs = {}
    end
  let(:foo_class) do
    Class.new do
      def initialize
        @attrs = {}
      end

    def [](arg)
      @attrs[arg]
    end
      def [](arg)
        @attrs[arg]
      end

    def []=(arg1, arg2)
      @attrs[arg1] = arg2
    end
      def []=(arg1, arg2)
        @attrs[arg1] = arg2
      end

    def hoge=(arg); end
      def hoge=(arg); end

    def hoge_file_name; end
      def hoge_file_name; end

    def hoge_file_name=(arg); end
      def hoge_file_name=(arg); end

    def has_attribute?(arg); end
      def has_attribute?(arg); end

    def self.attachment_definitions
      { hoge: nil }
    end
  end

  before do
    class Foo
      include Remotable

      remotable_attachment :hoge, 1.kilobyte
      def self.attachment_definitions
        { hoge: nil }
      end
    end
  end

  let(:attribute_name) { "#{hoge}_remote_url".to_sym }
  let(:code)           { 200 }
  let(:file)           { 'filename="foo.txt"' }
  let(:foo)            { Foo.new }
  let(:foo)            { foo_class.new }
  let(:headers)        { { 'content-disposition' => file } }
  let(:hoge)           { :hoge }
  let(:url)            { 'https://google.com' }

  before do
    foo_class.include described_class
    foo_class.remotable_attachment :hoge, 1.kilobyte
  end

  it 'defines a method #hoge_remote_url=' do
    expect(foo).to respond_to(:hoge_remote_url=)
  end