Skip to content

Commit

Permalink
Add t.foreign_key tests
Browse files Browse the repository at this point in the history
  • Loading branch information
winebarrel committed Feb 10, 2021
1 parent 42432c1 commit c328cc2
Show file tree
Hide file tree
Showing 3 changed files with 178 additions and 0 deletions.
68 changes: 68 additions & 0 deletions spec/mysql/fk/migrate_change_fk_spec.rb
Expand Up @@ -57,6 +57,74 @@
}
end

context 'when change fk using `t.foreign_key`' do
let(:actual_dsl) do
erbh(<<-ERB)
create_table "parent", id: :integer, force: :cascade do |t|
end
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
t.foreign_key "parent", name: "child_ibfk_1", on_delete: :cascade
end
ERB
end

let(:sorted_actual_dsl) do
erbh(<<-ERB)
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
end
create_table "parent", id: :integer, force: :cascade do |t|
end
add_foreign_key "child", "parent", name: "child_ibfk_1", on_delete: :cascade
ERB
end

let(:expected_dsl) do
erbh(<<-ERB)
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
end
create_table "parent", id: :integer, force: :cascade do |t|
end
add_foreign_key "child", "parent", name: "child_ibfk_1"
ERB
end

let(:expected_dsl_using_t_foreign_key) do
erbh(<<-ERB)
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
t.foreign_key "parent", name: "child_ibfk_1"
end
create_table "parent", id: :integer, force: :cascade do |t|
end
ERB
end

before { subject.diff(actual_dsl).migrate }

subject { client }

it {
delta = subject.diff(expected_dsl_using_t_foreign_key)
expect(delta.differ?).to be_truthy
expect(subject.dump).to match_fuzzy sorted_actual_dsl
delta.migrate
expect(subject.dump).to match_ruby expected_dsl
}
end

context 'when change fk without name' do
let(:actual_dsl) do
erbh(<<-ERB)
Expand Down
55 changes: 55 additions & 0 deletions spec/mysql/fk/migrate_create_fk_spec.rb
Expand Up @@ -43,6 +43,61 @@
}
end

context 'when create fk using `t.foreign_key`' do
let(:actual_dsl) do
erbh(<<-ERB)
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
end
create_table "parent", id: :integer, force: :cascade do |t|
end
ERB
end

let(:expected_dsl) do
erbh(actual_dsl + <<-ERB)
add_foreign_key "child", "parent", name: "child_ibfk_1"
ERB
end

let(:expected_dsl_using_t_foreign_key) do
erbh(<<-ERB)
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
t.foreign_key "parent", name: "child_ibfk_1"
end
create_table "parent", id: :integer, force: :cascade do |t|
end
ERB
end

before { subject.diff(actual_dsl).migrate }
subject { client }

it {
delta = subject.diff(expected_dsl_using_t_foreign_key)
expect(delta.differ?).to be_truthy
expect(subject.dump).to match_ruby actual_dsl
delta.migrate
expect(subject.dump).to match_ruby expected_dsl
}

it {
delta = client(bulk_change: true).diff(expected_dsl_using_t_foreign_key)
expect(delta.differ?).to be_truthy
expect(subject.dump).to match_ruby actual_dsl
expect(delta.script).to match_fuzzy <<-RUBY
add_foreign_key("child", "parent", **{:name=>"child_ibfk_1"})
RUBY
delta.migrate
expect(subject.dump).to match_ruby expected_dsl
}
end

context 'when create fk when create table' do
let(:dsl) do
erbh(<<-ERB)
Expand Down
55 changes: 55 additions & 0 deletions spec/mysql/fk/migrate_drop_fk_spec.rb
Expand Up @@ -57,6 +57,61 @@
}
end

context 'when drop fk using `t.foreign_key`' do
let(:actual_dsl) do
erbh(<<-ERB)
create_table "parent", id: :integer, force: :cascade do |t|
end
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
t.foreign_key "parent", name: "child_ibfk_1"
end
ERB
end

let(:sorted_actual_dsl) do
expected_dsl + <<-RUBY
add_foreign_key "child", "parent", name: "child_ibfk_1"
RUBY
end

let(:expected_dsl) do
erbh(<<-ERB)
create_table "child", force: :cascade do |t|
t.integer "parent_id"
t.index ["parent_id"], name: "par_id"
end
create_table "parent", id: :integer, force: :cascade do |t|
end
ERB
end

before { subject.diff(actual_dsl).migrate }
subject { client }

it {
delta = subject.diff(expected_dsl)
expect(delta.differ?).to be_truthy
expect(subject.dump).to match_fuzzy sorted_actual_dsl
delta.migrate
expect(subject.dump).to match_ruby expected_dsl
}

it {
delta = client(bulk_change: true).diff(expected_dsl)
expect(delta.differ?).to be_truthy
expect(subject.dump).to match_fuzzy sorted_actual_dsl
expect(delta.script).to match_fuzzy <<-RUBY
remove_foreign_key("child", name: "child_ibfk_1")
RUBY
delta.migrate
expect(subject.dump).to match_ruby expected_dsl
}
end

context 'when drop fk when drop table' do
let(:dsl) do
erbh(<<-ERB)
Expand Down

0 comments on commit c328cc2

Please sign in to comment.