Skip to content

Commit 9d5295b

Browse files
committed
Way better schema support! Thanks to @ianic! Fixes #61
1 parent 05dda4f commit 9d5295b

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
require 'cases/sqlserver_helper'
2+
3+
class SchemaTestSqlserver < ActiveRecord::TestCase
4+
5+
def setup
6+
@connection = ActiveRecord::Base.connection
7+
end
8+
9+
def read_schema_name(table_name)
10+
@connection.instance_eval { unqualify_table_schema(table_name) }
11+
end
12+
13+
context 'When table is in non-dbo schema' do
14+
15+
should "have only one identity column" do
16+
columns = @connection.columns("test.sql_server_schema_identity")
17+
assert_equal 2, columns.size
18+
assert_equal 1, columns.select{|column| column.is_identity? }.size
19+
end
20+
21+
should "read only column properties for table in specific schema" do
22+
test_columns = @connection.columns("test.sql_server_schema_columns")
23+
dbo_columns = @connection.columns("dbo.sql_server_schema_columns")
24+
columns = @connection.columns("sql_server_schema_columns") # This returns table from dbo schema
25+
assert_equal 7, test_columns.size
26+
assert_equal 2, dbo_columns.size
27+
assert_equal 2, columns.size
28+
assert_equal 1, test_columns.select{|column| column.is_identity? }.size
29+
assert_equal 1, dbo_columns.select{|column| column.is_identity? }.size
30+
assert_equal 1, columns.select{|column| column.is_identity? }.size
31+
end
32+
33+
should "return schema name in all cases" do
34+
assert_nil read_schema_name("table")
35+
assert_equal "schema1", read_schema_name("schema1.table")
36+
assert_equal "schema2", read_schema_name("database.schema2.table")
37+
assert_equal "schema3", read_schema_name("server.database.schema3.table")
38+
assert_equal "schema3", read_schema_name("[server].[database].[schema3].[table]")
39+
end
40+
41+
should "return correct varchar and nvarchar column limit (length) when table is in non dbo schema" do
42+
columns = @connection.columns("test.sql_server_schema_columns")
43+
assert_equal 255, columns.find{|c| c.name == 'name'}.limit
44+
assert_equal 1000, columns.find{|c| c.name == 'description'}.limit
45+
assert_equal 255, columns.find{|c| c.name == 'n_name'}.limit
46+
assert_equal 1000, columns.find{|c| c.name == 'n_description'}.limit
47+
end
48+
49+
end
50+
51+
end
52+

0 commit comments

Comments
 (0)