Skip to content

Commit 708558f

Browse files
committed
Added test case and updated changelog
1 parent 8327c58 commit 708558f

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@
1717
- [#1320](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1320) Fix SQL statement to calculate `updated_at` when upserting.
1818
- [#1327](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1327) Fix multiple `nil` identity columns for merge insert.
1919
- [#1338](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1338) Fix `insert_all`/`upsert_all` for table names containing numbers.
20+
- [#1345](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1345) Maintain index options during `change_column` operations.
2021

2122
Please check [8-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/8-0-stable/CHANGELOG.md) for previous changes.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# frozen_string_literal: true
2+
3+
require "cases/helper_sqlserver"
4+
5+
class ChangeColumnIndexTestSqlServer < ActiveRecord::TestCase
6+
class CreateClientsWithUniqueIndex < ActiveRecord::Migration[8.0]
7+
def up
8+
create_table :clients do |t|
9+
t.string :name, limit: 15
10+
end
11+
add_index :clients, :name, unique: true
12+
end
13+
14+
def down
15+
drop_table :clients
16+
end
17+
end
18+
19+
class ChangeClientsNameLength < ActiveRecord::Migration[8.0]
20+
def up
21+
change_column :clients, :name, :string, limit: 30
22+
end
23+
end
24+
25+
before do
26+
CreateClientsWithUniqueIndex.new.up
27+
end
28+
29+
after do
30+
CreateClientsWithUniqueIndex.new.down
31+
end
32+
33+
def test_index_uniqueness_is_maintained_after_column_change
34+
indexes = ActiveRecord::Base.connection.indexes("clients")
35+
columns = ActiveRecord::Base.connection.columns("clients")
36+
assert_equal columns.find { |column| column.name == "name" }.limit, 15
37+
assert_equal indexes.size, 1
38+
assert_equal indexes.first.name, "index_clients_on_name"
39+
assert indexes.first.unique
40+
41+
ChangeClientsNameLength.new.up
42+
43+
indexes = ActiveRecord::Base.connection.indexes("clients")
44+
columns = ActiveRecord::Base.connection.columns("clients")
45+
assert_equal columns.find { |column| column.name == "name" }.limit, 30
46+
assert_equal indexes.size, 1
47+
assert_equal indexes.first.name, "index_clients_on_name"
48+
assert indexes.first.unique
49+
end
50+
end

0 commit comments

Comments
 (0)