1
0
Fork 0

Add column OrgUnit#short_name

This commit is contained in:
Alex Kotov 2019-10-01 03:32:04 +05:00
parent 5cfd1147db
commit 87437b18aa
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
5 changed files with 81 additions and 2 deletions

View file

@ -23,6 +23,8 @@ class OrgUnit < ApplicationRecord
# Validations #
###############
validates :short_name, good_small_text: true, uniqueness: true
validates :name, good_small_text: true, uniqueness: true
validates :parent,

View file

@ -7,7 +7,8 @@ class CreateOrgUnits < ActiveRecord::Migration[6.0]
create_table :org_units do |t|
t.timestamps null: false
t.string :name, null: false, index: { unique: true }
t.string :short_name, null: false, index: { unique: true }
t.string :name, null: false, index: { unique: true }
t.references :kind,
null: false,
@ -20,6 +21,10 @@ class CreateOrgUnits < ActiveRecord::Migration[6.0]
foreign_key: { to_table: :org_units }
end
add_constraint :org_units, :short_name, <<~SQL
is_good_small_text(short_name)
SQL
add_constraint :org_units, :name, <<~SQL
is_good_small_text(name)
SQL

View file

@ -506,10 +506,12 @@ CREATE TABLE public.org_units (
id bigint NOT NULL,
created_at timestamp(6) without time zone NOT NULL,
updated_at timestamp(6) without time zone NOT NULL,
short_name character varying NOT NULL,
name character varying NOT NULL,
kind_id bigint NOT NULL,
parent_id bigint,
CONSTRAINT name CHECK (public.is_good_small_text((name)::text))
CONSTRAINT name CHECK (public.is_good_small_text((name)::text)),
CONSTRAINT short_name CHECK (public.is_good_small_text((short_name)::text))
);
@ -1346,6 +1348,13 @@ CREATE UNIQUE INDEX index_org_units_on_name ON public.org_units USING btree (nam
CREATE INDEX index_org_units_on_parent_id ON public.org_units USING btree (parent_id);
--
-- Name: index_org_units_on_short_name; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX index_org_units_on_short_name ON public.org_units USING btree (short_name);
--
-- Name: index_passports_on_federal_subject_id; Type: INDEX; Schema: public; Owner: -
--

View file

@ -2,6 +2,7 @@
FactoryBot.define do
factory :some_root_org_unit, class: OrgUnit do
short_name { name }
name { Faker::Company.unique.name }
association :kind, factory: :some_root_org_unit_kind

View file

@ -41,4 +41,66 @@ RSpec.describe OrgUnit do
end
end
end
describe '#short_name' do
def allow_value(*)
super.for :short_name
end
it { is_expected.to validate_presence_of :short_name }
it { is_expected.to validate_uniqueness_of :short_name }
it do
is_expected.to \
validate_length_of(:short_name)
.is_at_least(1)
.is_at_most(255)
end
it { is_expected.not_to allow_value nil }
it { is_expected.not_to allow_value '' }
it { is_expected.not_to allow_value ' ' }
it { is_expected.to allow_value Faker::Name.name }
it { is_expected.to allow_value Faker::Name.first_name }
it { is_expected.to allow_value 'Foo Bar' }
it { is_expected.not_to allow_value ' Foo' }
it { is_expected.not_to allow_value 'Foo ' }
it { is_expected.not_to allow_value "\tFoo" }
it { is_expected.not_to allow_value "Foo\t" }
it { is_expected.not_to allow_value "\nFoo" }
it { is_expected.not_to allow_value "Foo\n" }
end
describe '#name' do
def allow_value(*)
super.for :name
end
it { is_expected.to validate_presence_of :name }
it { is_expected.to validate_uniqueness_of :name }
it do
is_expected.to \
validate_length_of(:name)
.is_at_least(1)
.is_at_most(255)
end
it { is_expected.not_to allow_value nil }
it { is_expected.not_to allow_value '' }
it { is_expected.not_to allow_value ' ' }
it { is_expected.to allow_value Faker::Name.name }
it { is_expected.to allow_value Faker::Name.first_name }
it { is_expected.to allow_value 'Foo Bar' }
it { is_expected.not_to allow_value ' Foo' }
it { is_expected.not_to allow_value 'Foo ' }
it { is_expected.not_to allow_value "\tFoo" }
it { is_expected.not_to allow_value "Foo\t" }
it { is_expected.not_to allow_value "\nFoo" }
it { is_expected.not_to allow_value "Foo\n" }
end
end