Skip to content

Commit 3f766bc

Browse files
authored
Various fixes for CI to pass (#1392)
1 parent 9845cf4 commit 3f766bc

7 files changed

Lines changed: 32 additions & 23 deletions

File tree

Gemfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ end
6262

6363
group :development do
6464
gem "minitest-spec-rails"
65-
gem "mocha"
6665
gem "pry-byebug", platform: [:mri, :mingw, :x64_mingw]
6766
end
6867

lib/arel/visitors/sqlserver.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,9 @@ def table_From_Statement(o)
376376
if Arel::Table === core.from
377377
core.from
378378
elsif Arel::Nodes::SqlLiteral === core.from
379-
Arel::Table.new(core.from)
379+
Arel::Table.new(name: core.from)
380380
elsif Arel::Nodes::JoinSource === core.source
381-
(Arel::Nodes::SqlLiteral === core.source.left) ? Arel::Table.new(core.source.left, @engine) : core.source.left.left
381+
(Arel::Nodes::SqlLiteral === core.source.left) ? Arel::Table.new(name: core.source.left) : core.source.left.left
382382
end
383383
end
384384

test/cases/coerced_tests.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2491,6 +2491,17 @@ def test_in_order_of_with_unknown_enum_key_does_not_match_nulls_coerced
24912491
Book.where(author_id: nil, name: nil).delete_all
24922492
Book.lease_connection.add_index(:books, [:author_id, :name], unique: true)
24932493
end
2494+
2495+
# Need to remove index as SQL Server considers NULLs on a unique-index to be equal unlike PostgreSQL/MySQL/SQLite.
2496+
coerce_tests! :test_in_order_of_with_column_from_cte
2497+
def test_in_order_of_with_column_from_cte_coerced
2498+
connection.remove_index(:books, column: [:author_id, :name])
2499+
2500+
original_test_in_order_of_with_column_from_cte
2501+
ensure
2502+
Book.where(author_id: nil, name: nil).delete_all
2503+
Book.lease_connection.add_index(:books, [:author_id, :name], unique: true)
2504+
end
24942505
end
24952506

24962507
class QueryLogsTest < ActiveRecord::TestCase
@@ -2715,7 +2726,7 @@ class TableMetadataTest < ActiveSupport::TestCase
27152726
# Adapter returns an object that is subclass of what is expected in the original test.
27162727
coerce_tests! %r{#associated_table creates the right type caster for joined table with different association name}
27172728
def associated_table_creates_the_right_type_caster_for_joined_table_with_different_association_name_coerced
2718-
base_table_metadata = TableMetadata.new(AuditRequiredDeveloper, Arel::Table.new("developers"))
2729+
base_table_metadata = TableMetadata.new(AuditRequiredDeveloper, Arel::Table.new(name: "developers"))
27192730

27202731
associated_table_metadata = base_table_metadata.associated_table("audit_logs")
27212732

test/cases/dbconsole_test_sqlserver.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# frozen_string_literal: true
22

3+
require "cases/helper_sqlserver"
4+
35
class DbConsole < ActiveRecord::TestCase
46
subject { ActiveRecord::ConnectionAdapters::SQLServerAdapter }
57

68
it "uses sqlcmd to connect to database" do
7-
subject.expects(:find_cmd_and_exec).with("sqlcmd", "-d", "db", "-U", "user", "-P", "secret", "-C", "-S",
8-
"tcp:localhost,1433")
9-
10-
config = make_db_config(adapter: "sqlserver", database: "db", username: "user", password: "secret",
11-
host: "localhost", port: 1433, trust_server_certificate: true)
9+
assert_called_with(subject, :find_cmd_and_exec, ["sqlcmd", "-d", "db", "-U", "user", "-P", "secret", "-C", "-S", "tcp:localhost,1433"]) do
10+
config = make_db_config(adapter: "sqlserver", database: "db", username: "user", password: "secret", host: "localhost", port: 1433, trust_server_certificate: true)
1211

13-
subject.dbconsole(config)
12+
subject.dbconsole(config)
13+
end
1414
end
1515

1616
private

test/cases/fully_qualified_identifier_test_sqlserver.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
class FullyQualifiedIdentifierTestSQLServer < ActiveRecord::TestCase
66
describe "local server" do
77
it "should use table name in select projections" do
8-
table = Arel::Table.new(:table)
8+
table = Arel::Table.new(name: :table)
99
expected_sql = "SELECT [table].[name] FROM [table]"
1010
assert_equal expected_sql, table.project(table[:name]).to_sql
1111
end
@@ -21,39 +21,39 @@ class FullyQualifiedIdentifierTestSQLServer < ActiveRecord::TestCase
2121
end
2222

2323
it "should use fully qualified table name in select from clause" do
24-
table = Arel::Table.new(:table)
24+
table = Arel::Table.new(name: :table)
2525
expected_sql = "SELECT * FROM [my.server].[db].[schema].[table]"
2626
assert_equal expected_sql, table.project(Arel.star).to_sql
2727
end
2828

2929
it "should not use fully qualified table name in select projections" do
30-
table = Arel::Table.new(:table)
30+
table = Arel::Table.new(name: :table)
3131
expected_sql = "SELECT [table].[name] FROM [my.server].[db].[schema].[table]"
3232
assert_equal expected_sql, table.project(table[:name]).to_sql
3333
end
3434

3535
it "should not use fully qualified table name in where clause" do
36-
table = Arel::Table.new(:table)
36+
table = Arel::Table.new(name: :table)
3737
expected_sql = "SELECT * FROM [my.server].[db].[schema].[table] WHERE [table].[id] = 42"
3838
quietly { assert_equal expected_sql, table.project(Arel.star).where(table[:id].eq(42)).to_sql }
3939
end
4040

4141
it "should not use fully qualified table name in order clause" do
42-
table = Arel::Table.new(:table)
42+
table = Arel::Table.new(name: :table)
4343
expected_sql = "SELECT * FROM [my.server].[db].[schema].[table] ORDER BY [table].[name]"
4444
assert_equal expected_sql, table.project(Arel.star).order(table[:name]).to_sql
4545
end
4646

4747
it "should use fully qualified table name in insert statement" do
4848
manager = Arel::InsertManager.new
49-
manager.into Arel::Table.new(:table)
49+
manager.into Arel::Table.new(name: :table)
5050
manager.values = manager.create_values [Arel.sql("*")]
5151
expected_sql = "INSERT INTO [my.server].[db].[schema].[table] VALUES (*)"
5252
quietly { assert_equal expected_sql, manager.to_sql }
5353
end
5454

5555
it "should use fully qualified table name in update statement" do
56-
table = Arel::Table.new(:table)
56+
table = Arel::Table.new(name: :table)
5757
manager = Arel::UpdateManager.new
5858
manager.table(table).where(table[:id].eq(42))
5959
manager.set([[table[:name], "Bob"]])
@@ -62,7 +62,7 @@ class FullyQualifiedIdentifierTestSQLServer < ActiveRecord::TestCase
6262
end
6363

6464
it "should use fully qualified table name in delete statement" do
65-
table = Arel::Table.new(:table)
65+
table = Arel::Table.new(name: :table)
6666
manager = Arel::DeleteManager.new
6767
manager.from(table).where(table[:id].eq(42))
6868
expected_sql = "DELETE FROM [my.server].[db].[schema].[table] WHERE [table].[id] = 42"

test/cases/helper_sqlserver.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
require "support/coerceable_test_sqlserver"
1515
require "support/connection_reflection"
1616
require "support/query_assertions"
17-
require "mocha/minitest"
1817

1918
Minitest.after_run do
2019
puts "\n\n"

test/cases/lateral_test_sqlserver.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class LateralTestSQLServer < ActiveRecord::TestCase
88
fixtures :posts, :authors
99

1010
it "uses OUTER APPLY for OUTER JOIN LATERAL" do
11-
post = Arel::Table.new(:posts)
12-
author = Arel::Table.new(:authors)
11+
post = Arel::Table.new(name: :posts)
12+
author = Arel::Table.new(name: :authors)
1313
subselect = post.project(Arel.star).take(1).where(post[:author_id].eq(author[:id])).where(post[:id].eq(42))
1414

1515
one = Arel::Nodes::Quoted.new(1)
@@ -22,8 +22,8 @@ class LateralTestSQLServer < ActiveRecord::TestCase
2222
end
2323

2424
it "uses CROSS APPLY for INNER JOIN LATERAL" do
25-
post = Arel::Table.new(:posts)
26-
author = Arel::Table.new(:authors)
25+
post = Arel::Table.new(name: :posts)
26+
author = Arel::Table.new(name: :authors)
2727
subselect = post.project(Arel.star).take(1).where(post[:author_id].eq(author[:id])).where(post[:id].eq(42))
2828

2929
sql = author.project(Arel.star).where(author[:name].matches("David")).join(subselect.lateral.as("bar")).to_sql

0 commit comments

Comments
 (0)