Skip to content

Commit

Permalink
Normalize add_foreign_key options
Browse files Browse the repository at this point in the history
  • Loading branch information
winebarrel committed Aug 5, 2018
1 parent edfc0a1 commit f9ea689
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
3 changes: 0 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ rvm:
- 2.3.6
- 2.4.3
- 2.5.0
before_install:
- gem update --system
- gem install bundler
before_script:
- sudo service mysql stop
- sudo service postgresql stop
Expand Down
2 changes: 2 additions & 0 deletions lib/ridgepole/dsl_parser/context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ def add_foreign_key(from_table, to_table, options = {})
from_table = from_table.to_s
to_table = to_table.to_s
options[:name] = options[:name].to_s if options[:name]
options[:primary_key] = options[:primary_key].to_s if options[:primary_key]
options[:column] = options[:column].to_s if options[:column]
@__definition[from_table] ||= {}
@__definition[from_table][:foreign_keys] ||= {}
idx = options[:name] || [from_table, to_table]
Expand Down
2 changes: 1 addition & 1 deletion ridgepole.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
spec.add_development_dependency 'erbh', '>= 0.1.2'
spec.add_development_dependency 'hash_modern_inspect', '>= 0.1.1'
spec.add_development_dependency 'hash_order_helper', '>= 0.1.6'
spec.add_development_dependency 'mysql2', '~> 0.3.20'
spec.add_development_dependency 'mysql2'
spec.add_development_dependency 'pg'
spec.add_development_dependency 'rake'
spec.add_development_dependency 'rspec', '>= 3.0.0'
Expand Down
45 changes: 45 additions & 0 deletions spec/mysql/fk/migrate_change_fk2_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
describe 'Ridgepole::Client#diff -> migrate' do
context 'when change fk' do
let(:actual_dsl) do
erbh(<<-ERB)
create_table "users", id: false, force: :cascade do |t|
t.bigint :my_original_id, null: false
t.index %i[my_original_id], unique: true
end
create_table "lessons", force: :cascade do |t|
t.bigint :user_id2, null: false
t.index %i[user_id2], name: :index_lessons_on_user_id2
end
add_foreign_key :lessons, :users, primary_key: :my_original_id, column: :user_id2
ERB
end

let(:expected_dsl) do
erbh(<<-ERB)
create_table "lessons", force: :cascade do |t|
t.bigint "user_id2", null: false
t.index ["user_id2"], name: "index_lessons_on_user_id2", <%= i cond(5.0, using: :btree) %>
end
create_table "users", id: false, force: :cascade do |t|
t.bigint "my_original_id", null: false
t.index ["my_original_id"], name: "index_users_on_my_original_id", unique: true, <%= i cond(5.0, using: :btree) %>
end
add_foreign_key "lessons", "users", primary_key: "my_original_id", column: "user_id2"
ERB
end

before { subject.diff(actual_dsl).migrate }

subject { client }

it {
expect(subject.diff(actual_dsl).differ?).to be_falsey
expect(subject.diff(expected_dsl).differ?).to be_falsey
expect(subject.dump).to match_ruby expected_dsl
}
end
end

0 comments on commit f9ea689

Please sign in to comment.