Add range column to RepositoryColumn

This commit is contained in:
Urban Rotnik 2019-11-19 12:10:38 +01:00
parent fe4aa12ced
commit 2a20ad68a3
4 changed files with 37 additions and 5 deletions

View file

@ -15,12 +15,11 @@ class RepositoryColumn < ApplicationRecord
auto_strip_attributes :name, nullify: false
validates :name,
presence: true,
length: { maximum: Constants::NAME_MAX_LENGTH },
uniqueness: { scope: :repository_id, case_sensitive: true }
validates :created_by, presence: true
validates :repository, presence: true
validates :data_type, presence: true
validates :name, :data_type, :repository, :created_by, presence: true
validates :range, inclusion: { in: [true, false] }, if: :repository_date_time_value?
validates :range, absence: true, unless: :repository_date_time_value?
after_create :update_repository_table_states_with_new_column
around_destroy :update_repository_table_states_with_removed_column
@ -33,6 +32,13 @@ class RepositoryColumn < ApplicationRecord
where('repository_columns.name ILIKE ?', "%#{query}%")
end
# Add enum check method with underscores (eg repository_list_value)
data_types.each do |k, _|
define_method "#{k.underscore}?" do
public_send "#{k}?"
end
end
def update_repository_table_states_with_new_column
service = RepositoryTableStateColumnUpdateService.new
service.update_states_with_new_column(repository)

View file

@ -0,0 +1,7 @@
# frozen_string_literal: true
class AddRangeToRepositoryColumn < ActiveRecord::Migration[6.0]
def change
add_column :repository_columns, :range, :boolean
end
end

View file

@ -1202,7 +1202,11 @@ CREATE TABLE public.repository_columns (
data_type integer NOT NULL,
created_at timestamp without time zone,
updated_at timestamp without time zone,
<<<<<<< HEAD
delimiter character varying
=======
range boolean
>>>>>>> eedcec279... Add range column to RepositoryColumn
);
@ -6853,6 +6857,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20191007144622'),
('20191009146101'),
('20191105143702'),
('20191115143747');
('20191115143747'),
('20191118150111');

View file

@ -48,5 +48,19 @@ describe RepositoryColumn, type: :model do
describe '#data_type' do
it { is_expected.to validate_presence_of :data_type }
end
describe '#range' do
it do
allow(subject).to receive(:repository_date_time_value?).and_return(true)
expect(subject).to allow_value([true, false]).for(:range)
end
it do
allow(subject).to receive(:repository_date_time_value?).and_return(false)
expect(subject).to allow_value(nil).for(:range)
end
end
end
end