Skip to content

Commit

Permalink
Add postgrep diff_spec
Browse files Browse the repository at this point in the history
  • Loading branch information
Genki Sugawara committed Apr 12, 2015
1 parent 6a51a49 commit 806600f
Showing 1 changed file with 153 additions and 0 deletions.
153 changes: 153 additions & 0 deletions spec/postgresql/diff/diff_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
if postgresql?
describe 'Ridgepole::Client.diff' do
context 'when change column' do
let(:actual_dsl) {
<<-RUBY
create_table "clubs", force: :cascade do |t|
t.string "name", limit: 255, default: "", null: false
end
add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
create_table "departments", primary_key: "dept_no", force: :cascade do |t|
t.string "dept_name", limit: 40, null: false
end
add_index "departments", ["dept_name"], name: "idx_dept_name", unique: true, using: :btree
create_table "dept_emp", id: false, force: :cascade do |t|
t.integer "emp_no", null: false
t.string "dept_no", limit: 4, null: false
t.date "from_date", null: false
t.date "to_date", null: false
end
add_index "dept_emp", ["dept_no"], name: "idx_dept_emp_dept_no", using: :btree
add_index "dept_emp", ["emp_no"], name: "idx_dept_emp_emp_no", using: :btree
create_table "dept_manager", id: false, force: :cascade do |t|
t.string "dept_no", limit: 4, null: false
t.integer "emp_no", null: false
t.date "from_date", null: false
t.date "to_date", null: false
end
add_index "dept_manager", ["dept_no"], name: "idx_dept_manager_dept_no", using: :btree
add_index "dept_manager", ["emp_no"], name: "idx_dept_manager_emp_no", using: :btree
create_table "employee_clubs", force: :cascade do |t|
t.integer "emp_no", null: false
t.integer "club_id", null: false
end
add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_employee_clubs_emp_no_club_id", using: :btree
create_table "employees", primary_key: "emp_no", force: :cascade do |t|
t.date "birth_date", null: false
t.string "first_name", limit: 14, null: false
t.string "last_name", limit: 16, null: false
t.date "hire_date", null: false
end
create_table "salaries", id: false, force: :cascade do |t|
t.integer "emp_no", null: false
t.integer "salary", null: false
t.date "from_date", null: false
t.date "to_date", null: false
end
add_index "salaries", ["emp_no"], name: "idx_salaries_emp_no", using: :btree
create_table "titles", id: false, force: :cascade do |t|
t.integer "emp_no", null: false
t.string "title", limit: 50, null: false
t.date "from_date", null: false
t.date "to_date"
end
add_index "titles", ["emp_no"], name: "idx_titles_emp_no", using: :btree
RUBY
}

let(:expected_dsl) {
<<-RUBY
create_table "clubs", force: :cascade do |t|
t.string "name", limit: 255, default: "", null: false
end
add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
create_table "departments", primary_key: "dept_no", force: :cascade do |t|
t.string "dept_name", limit: 40, null: false
end
add_index "departments", ["dept_name"], name: "idx_dept_name", unique: true, using: :btree
create_table "dept_emp", id: false, force: :cascade do |t|
t.integer "emp_no", null: false
t.string "dept_no", limit: 4, null: false
t.date "from_date", null: false
t.date "to_date", null: false
end
add_index "dept_emp", ["dept_no"], name: "idx_dept_emp_dept_no", using: :btree
add_index "dept_emp", ["emp_no"], name: "idx_dept_emp_emp_no", using: :btree
create_table "dept_manager", id: false, force: :cascade do |t|
t.string "dept_no", limit: 4, null: false
t.integer "emp_no", null: false
t.date "from_date", null: false
t.date "to_date", null: false
end
add_index "dept_manager", ["dept_no"], name: "idx_dept_manager_dept_no", using: :btree
add_index "dept_manager", ["emp_no"], name: "idx_dept_manager_emp_no", using: :btree
create_table "employee_clubs", force: :cascade do |t|
t.integer "emp_no", null: false
t.integer "club_id", null: true
end
add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_employee_clubs_emp_no_club_id", using: :btree
create_table "employees", primary_key: "emp_no", force: :cascade do |t|
t.date "birth_date", null: false
t.string "first_name", limit: 14, null: false
t.string "last_name", limit: 20, default: "XXX", null: false
t.date "hire_date", null: false
end
create_table "salaries", id: false, force: :cascade do |t|
t.integer "emp_no", null: false
t.integer "salary", null: false
t.date "from_date", null: false
t.date "to_date", null: false
end
add_index "salaries", ["emp_no"], name: "idx_salaries_emp_no", using: :btree
create_table "titles", id: false, force: :cascade do |t|
t.integer "emp_no", null: false
t.string "title", limit: 50, null: false
t.date "from_date", null: false
t.date "to_date"
end
add_index "titles", ["emp_no"], name: "idx_titles_emp_no", using: :btree
RUBY
}

subject { Ridgepole::Client }

it {
delta = subject.diff(actual_dsl, expected_dsl, enable_mysql_unsigned: true)
expect(delta.differ?).to be_truthy
expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
change_column("employee_clubs", "club_id", :integer, {:null=>true, :default=>nil})
change_column("employees", "last_name", :string, {:limit=>20, :default=>"XXX", :null=>false})
RUBY
}
end
end
end

0 comments on commit 806600f

Please sign in to comment.