Skip to content

Commit

Permalink
discovered issue running specs on mysql. new version of mysqld consid…
Browse files Browse the repository at this point in the history
…ers uniqueness to be case sensitive, so added case insensitivity flag to models and specs. Also added indexes for these
  • Loading branch information
briri committed Jun 14, 2022
1 parent 2502032 commit d54c68a
Show file tree
Hide file tree
Showing 12 changed files with 32 additions and 9 deletions.
2 changes: 1 addition & 1 deletion app/models/department.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class Department < ApplicationRecord

validates :name, presence: { message: PRESENCE_MESSAGE },
uniqueness: { message: UNIQUENESS_MESSAGE,
scope: :org_id }
scope: :org_id, case_sensitive: false }

validates :name, uniqueness: { message: UNIQUENESS_MESSAGE,
scope: :org_id }
Expand Down
3 changes: 2 additions & 1 deletion app/models/org.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ class Org < ApplicationRecord
# ===============

validates :name, presence: { message: PRESENCE_MESSAGE },
uniqueness: { message: UNIQUENESS_MESSAGE }
uniqueness: { message: UNIQUENESS_MESSAGE,
case_sensitive: false }

validates :is_other, inclusion: { in: BOOLEAN_VALUES,
message: PRESENCE_MESSAGE }
Expand Down
3 changes: 2 additions & 1 deletion app/models/perm.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ def lazy_load(name)
# ===============

validates :name, presence: { message: PRESENCE_MESSAGE },
uniqueness: { message: UNIQUENESS_MESSAGE }
uniqueness: { message: UNIQUENESS_MESSAGE,
case_sensitive: false }

# =================
# = Class methods =
Expand Down
3 changes: 2 additions & 1 deletion app/models/question_format.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ class QuestionFormat < ApplicationRecord
# ===============

validates :title, presence: { message: PRESENCE_MESSAGE },
uniqueness: { message: UNIQUENESS_MESSAGE }
uniqueness: { message: UNIQUENESS_MESSAGE,
case_sensitive: false }

validates :description, presence: { message: PRESENCE_MESSAGE }

Expand Down
3 changes: 2 additions & 1 deletion app/models/region.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ class Region < ApplicationRecord
# ===============

validates :name, presence: { message: PRESENCE_MESSAGE },
uniqueness: { message: UNIQUENESS_MESSAGE }
uniqueness: { message: UNIQUENESS_MESSAGE,
case_sensitive: false }

validates :description, presence: true

Expand Down
9 changes: 9 additions & 0 deletions db/migrate/20220614181654_add_uniqueness_indexes.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class AddUniquenessIndexes < ActiveRecord::Migration[6.1]
def change
add_index :departments, %i[name org_id], unique: true
add_index :orgs, :name, unique: true
add_index :perms, :name, unique: true
add_index :question_formats, :title, unique: true
add_index :regions, :abbreviation, unique: true
end
end
5 changes: 5 additions & 0 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["org_id"], name: "index_departments_on_org_id"
t.index ["name", "org_id"], name: "index_departments_on_name_org_id"
end

create_table "exported_plans", id: :integer, force: :cascade do |t|
Expand Down Expand Up @@ -275,13 +276,15 @@
t.text "api_create_plan_email_body"
t.index ["language_id"], name: "fk_rails_5640112cab"
t.index ["region_id"], name: "fk_rails_5a6adf6bab"
t.index ["name"], name: "index_orgs_on_name"
t.string "helpdesk_email"
end

create_table "perms", id: :integer, force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["name"], name: "index_perms_on_names"
end

create_table "phases", id: :integer, force: :cascade do |t|
Expand Down Expand Up @@ -355,6 +358,7 @@
t.datetime "updated_at", null: false
t.boolean "option_based", default: false
t.integer "formattype", default: 0
t.index ["title"], name: "index_perms_on_titles"
end

create_table "question_options", id: :integer, force: :cascade do |t|
Expand Down Expand Up @@ -396,6 +400,7 @@
t.string "description"
t.string "name"
t.integer "super_region_id"
t.index ["abbreviation"], name: "index_regions_on_abbreviations"
end

create_table "related_identifiers", force: :cascade do |t|
Expand Down
1 change: 1 addition & 0 deletions spec/models/department_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
subject = create(:department, org_id: org.id)
expect(subject).to validate_uniqueness_of(:name)
.scoped_to(:org_id)
.case_insensitive
.with_message('must be unique')
end
end
Expand Down
3 changes: 2 additions & 1 deletion spec/models/org_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@

it {
subject.name = 'DMP Company'
is_expected.to validate_uniqueness_of(:name).with_message('must be unique')
is_expected.to validate_uniqueness_of(:name).case_insensitive
.with_message('must be unique')
}

it { is_expected.to allow_values(true, false).for(:is_other) }
Expand Down
3 changes: 2 additions & 1 deletion spec/models/perm_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ def recreate_all
it { is_expected.to validate_presence_of(:name) }

it {
is_expected.to validate_uniqueness_of(:name).with_message('must be unique')
is_expected.to validate_uniqueness_of(:name).case_insensitive
.with_message('must be unique')
}
end

Expand Down
3 changes: 2 additions & 1 deletion spec/models/question_format_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
it { is_expected.to validate_presence_of(:title) }

it {
is_expected.to validate_uniqueness_of(:title).with_message('must be unique')
is_expected.to validate_uniqueness_of(:title).case_insensitive
.with_message('must be unique')
}

it { is_expected.to validate_presence_of(:description) }
Expand Down
3 changes: 2 additions & 1 deletion spec/models/region_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
it { is_expected.to validate_presence_of(:abbreviation) }

it {
is_expected.to validate_uniqueness_of(:abbreviation).with_message('must be unique')
is_expected.to validate_uniqueness_of(:abbreviation).case_insensitive
.with_message('must be unique')
}

it { is_expected.to validate_presence_of(:description) }
Expand Down

0 comments on commit d54c68a

Please sign in to comment.