diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 17:34:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-20 17:34:42 +0300 |
commit | 9f46488805e86b1bc341ea1620b866016c2ce5ed (patch) | |
tree | f9748c7e287041e37d6da49e0a29c9511dc34768 /spec/rubocop/cop/migration/add_limit_to_string_columns_spec.rb | |
parent | dfc92d081ea0332d69c8aca2f0e745cb48ae5e6d (diff) |
Add latest changes from gitlab-org/gitlab@13-0-stable-ee
Diffstat (limited to 'spec/rubocop/cop/migration/add_limit_to_string_columns_spec.rb')
-rw-r--r-- | spec/rubocop/cop/migration/add_limit_to_string_columns_spec.rb | 268 |
1 files changed, 0 insertions, 268 deletions
diff --git a/spec/rubocop/cop/migration/add_limit_to_string_columns_spec.rb b/spec/rubocop/cop/migration/add_limit_to_string_columns_spec.rb deleted file mode 100644 index 97a3ae8f2bc..00000000000 --- a/spec/rubocop/cop/migration/add_limit_to_string_columns_spec.rb +++ /dev/null @@ -1,268 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' -require 'rubocop' -require 'rubocop/rspec/support' - -require_relative '../../../../rubocop/cop/migration/add_limit_to_string_columns' - -describe RuboCop::Cop::Migration::AddLimitToStringColumns do - include CopHelper - - subject(:cop) { described_class.new } - - context 'in migration' do - before do - allow(cop).to receive(:in_migration?).and_return(true) - - inspect_source(migration) - end - - context 'when creating a table' do - context 'with string columns and limit' do - let(:migration) do - %q( - class CreateUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - create_table :users do |t| - t.string :username, null: false, limit: 255 - t.timestamps_with_timezone null: true - end - end - end - ) - end - - it 'register no offense' do - expect(cop.offenses.size).to eq(0) - end - - context 'with limit in a different position' do - let(:migration) do - %q( - class CreateUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - create_table :users do |t| - t.string :username, limit: 255, null: false - t.timestamps_with_timezone null: true - end - end - end - ) - end - - it 'registers an offense' do - expect(cop.offenses.size).to eq(0) - end - end - end - - context 'with string columns and no limit' do - let(:migration) do - %q( - class CreateUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - create_table :users do |t| - t.string :username, null: false - t.timestamps_with_timezone null: true - end - end - end - ) - end - - it 'registers an offense' do - expect(cop.offenses.size).to eq(1) - expect(cop.offenses.first.message) - .to eq('String columns should have a limit constraint. 255 is suggested') - end - end - - context 'with no string columns' do - let(:migration) do - %q( - class CreateMilestoneReleases < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - create_table :milestone_releases do |t| - t.integer :milestone_id - t.integer :release_id - end - end - end - ) - end - - it 'register no offense' do - expect(cop.offenses.size).to eq(0) - end - end - end - - context 'when adding columns' do - context 'with string columns with limit' do - let(:migration) do - %q( - class AddEmailToUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - add_column :users, :email, :string, limit: 255 - end - end - ) - end - - it 'registers no offense' do - expect(cop.offenses.size).to eq(0) - end - - context 'with limit in a different position' do - let(:migration) do - %q( - class AddEmailToUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - add_column :users, :email, :string, limit: 255, default: 'example@email.com' - end - end - ) - end - - it 'registers no offense' do - expect(cop.offenses.size).to eq(0) - end - end - end - - context 'with string columns with no limit' do - let(:migration) do - %q( - class AddEmailToUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - add_column :users, :email, :string - end - end - ) - end - - it 'registers offense' do - expect(cop.offenses.size).to eq(1) - expect(cop.offenses.first.message) - .to eq('String columns should have a limit constraint. 255 is suggested') - end - end - - context 'with no string columns' do - let(:migration) do - %q( - class AddEmailToUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - add_column :users, :active, :boolean, default: false - end - end - ) - end - - it 'registers no offense' do - expect(cop.offenses.size).to eq(0) - end - end - end - - context 'with add_column_with_default' do - context 'with a limit' do - let(:migration) do - %q( - class AddRuleTypeToApprovalMergeRequestRules < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - add_column_with_default(:approval_merge_request_rules, :rule_type, :string, limit: 2, default: 1) - end - end - ) - end - - it 'registers no offense' do - expect(cop.offenses.size).to eq(0) - end - end - - context 'without a limit' do - let(:migration) do - %q( - class AddRuleTypeToApprovalMergeRequestRules < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - add_column_with_default(:approval_merge_request_rules, :rule_type, :string, default: 1) - end - end - ) - end - - it 'registers an offense' do - expect(cop.offenses.size).to eq(1) - end - end - end - - context 'with methods' do - let(:migration) do - %q( - class AddEmailToUsers < ActiveRecord::Migration[5.2] - DOWNTIME = false - - def change - add_column_if_table_not_exists :users, :first_name, :string, limit: 255 - search_namespace(user_name) - end - - def add_column_if_not_exists(table, name, *args) - add_column(table, name, *args) unless column_exists?(table, name) - end - - def search_namespace(username) - Uniquify.new.string(username) do |str| - query = "SELECT id FROM namespaces WHERE parent_id IS NULL AND path='#{str}' LIMIT 1" - connection.exec_query(query) - end - end - end - ) - end - - it 'registers no offense' do - expect(cop.offenses.size).to eq(0) - end - end - end - - context 'outside of migrations' do - let(:active_record_model) do - %q( - class User < ApplicationRecord - end - ) - end - - it 'registers no offense' do - inspect_source(active_record_model) - - expect(cop.offenses.size).to eq(0) - end - end -end |