arel 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +26 -0
- data/History.txt +18 -0
- data/Manifest.txt +31 -30
- data/README.markdown +7 -99
- data/Rakefile +3 -2
- data/arel.gemspec +18 -11
- data/lib/arel.rb +2 -1
- data/lib/arel/attributes/attribute.rb +1 -174
- data/lib/arel/crud.rb +2 -2
- data/lib/arel/delete_manager.rb +4 -4
- data/lib/arel/insert_manager.rb +8 -8
- data/lib/arel/nodes/exists.rb +2 -6
- data/lib/arel/nodes/sql_literal.rb +1 -0
- data/lib/arel/predications.rb +177 -0
- data/lib/arel/select_manager.rb +17 -11
- data/lib/arel/table.rb +4 -0
- data/lib/arel/tree_manager.rb +4 -3
- data/lib/arel/update_manager.rb +8 -8
- data/lib/arel/visitors.rb +4 -0
- data/lib/arel/visitors/dot.rb +3 -3
- data/lib/arel/visitors/join_sql.rb +2 -0
- data/lib/arel/visitors/mysql.rb +14 -0
- data/lib/arel/visitors/oracle.rb +31 -1
- data/lib/arel/visitors/order_clauses.rb +2 -0
- data/lib/arel/visitors/sqlite.rb +11 -0
- data/lib/arel/visitors/to_sql.rb +8 -11
- data/lib/arel/visitors/visitor.rb +19 -0
- data/{spec/attributes/attribute_spec.rb → test/attributes/test_attribute.rb} +84 -84
- data/test/helper.rb +13 -0
- data/{spec/nodes/count_spec.rb → test/nodes/test_count.rb} +3 -3
- data/{spec/nodes/delete_statement_spec.rb → test/nodes/test_delete_statement.rb} +3 -4
- data/{spec/nodes/equality_spec.rb → test/nodes/test_equality.rb} +10 -8
- data/{spec/nodes/insert_statement_spec.rb → test/nodes/test_insert_statement.rb} +6 -6
- data/{spec/nodes/or_spec.rb → test/nodes/test_or.rb} +6 -4
- data/test/nodes/test_select_core.rb +22 -0
- data/{spec/nodes/select_statement_spec.rb → test/nodes/test_select_statement.rb} +3 -4
- data/test/nodes/test_sql_literal.rb +52 -0
- data/{spec/nodes/sum_spec.rb → test/nodes/test_sum.rb} +2 -2
- data/{spec/nodes/update_statement_spec.rb → test/nodes/test_update_statement.rb} +6 -6
- data/{spec → test}/support/fake_record.rb +4 -2
- data/{spec/activerecord_compat_spec.rb → test/test_activerecord_compat.rb} +3 -3
- data/{spec/attributes_spec.rb → test/test_attributes.rb} +7 -7
- data/{spec/crud_spec.rb → test/test_crud.rb} +4 -4
- data/{spec/delete_manager_spec.rb → test/test_delete_manager.rb} +5 -16
- data/{spec/insert_manager_spec.rb → test/test_insert_manager.rb} +15 -31
- data/{spec/select_manager_spec.rb → test/test_select_manager.rb} +95 -77
- data/{spec/table_spec.rb → test/test_table.rb} +38 -32
- data/{spec/update_manager_spec.rb → test/test_update_manager.rb} +9 -21
- data/{spec/visitors/join_sql_spec.rb → test/visitors/test_join_sql.rb} +3 -3
- data/test/visitors/test_mysql.rb +27 -0
- data/{spec/visitors/oracle_spec.rb → test/visitors/test_oracle.rb} +26 -10
- data/{spec/visitors/postgres_spec.rb → test/visitors/test_postgres.rb} +2 -2
- data/test/visitors/test_sqlite.rb +18 -0
- data/{spec/visitors/to_sql_spec.rb → test/visitors/test_to_sql.rb} +25 -18
- metadata +101 -43
- data/spec/nodes/select_core_spec.rb +0 -21
- data/spec/nodes/sql_literal_spec.rb +0 -26
- data/spec/spec.opts +0 -3
- data/spec/spec_helper.rb +0 -18
- data/spec/support/check.rb +0 -6
- data/spec/support/matchers.rb +0 -4
- data/spec/support/matchers/be_like.rb +0 -24
- data/spec/support/shared/tree_manager_shared.rb +0 -9
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'helper'
|
2
2
|
|
3
3
|
module Arel
|
4
4
|
describe Table do
|
@@ -6,23 +6,30 @@ module Arel
|
|
6
6
|
@relation = Table.new(:users)
|
7
7
|
end
|
8
8
|
|
9
|
+
describe 'skip' do
|
10
|
+
it 'should add an offset' do
|
11
|
+
sm = @relation.skip 2
|
12
|
+
sm.to_sql.must_be_like "SELECT FROM \"users\" OFFSET 2"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
9
16
|
describe 'primary_key' do
|
10
17
|
it 'should return an attribute' do
|
11
|
-
|
18
|
+
@relation.primary_key.name.must_equal :id
|
12
19
|
end
|
13
20
|
end
|
14
21
|
|
15
22
|
describe 'select_manager' do
|
16
23
|
it 'should return an empty select manager' do
|
17
24
|
sm = @relation.select_manager
|
18
|
-
sm.to_sql.
|
25
|
+
sm.to_sql.must_be_like 'SELECT'
|
19
26
|
end
|
20
27
|
end
|
21
28
|
|
22
29
|
describe 'having' do
|
23
30
|
it 'adds a having clause' do
|
24
31
|
mgr = @relation.having @relation[:id].eq(10)
|
25
|
-
mgr.to_sql.
|
32
|
+
mgr.to_sql.must_be_like %{
|
26
33
|
SELECT FROM "users" HAVING "users"."id" = 10
|
27
34
|
}
|
28
35
|
end
|
@@ -31,7 +38,7 @@ module Arel
|
|
31
38
|
describe 'backwards compat' do
|
32
39
|
describe 'joins' do
|
33
40
|
it 'returns nil' do
|
34
|
-
|
41
|
+
@relation.joins(nil).must_equal nil
|
35
42
|
end
|
36
43
|
end
|
37
44
|
|
@@ -39,7 +46,7 @@ module Arel
|
|
39
46
|
it 'noops on nil' do
|
40
47
|
mgr = @relation.join nil
|
41
48
|
|
42
|
-
mgr.to_sql.
|
49
|
+
mgr.to_sql.must_be_like %{ SELECT FROM "users" }
|
43
50
|
end
|
44
51
|
|
45
52
|
it 'takes a second argument for join type' do
|
@@ -47,7 +54,7 @@ module Arel
|
|
47
54
|
predicate = @relation[:id].eq(right[:id])
|
48
55
|
mgr = @relation.join(right, Nodes::OuterJoin).on(predicate)
|
49
56
|
|
50
|
-
mgr.to_sql.
|
57
|
+
mgr.to_sql.must_be_like %{
|
51
58
|
SELECT FROM "users"
|
52
59
|
LEFT OUTER JOIN "users" "users_2"
|
53
60
|
ON "users"."id" = "users_2"."id"
|
@@ -59,7 +66,7 @@ module Arel
|
|
59
66
|
describe 'group' do
|
60
67
|
it 'should create a group' do
|
61
68
|
manager = @relation.group @relation[:id]
|
62
|
-
manager.to_sql.
|
69
|
+
manager.to_sql.must_be_like %{
|
63
70
|
SELECT FROM "users" GROUP BY "users"."id"
|
64
71
|
}
|
65
72
|
end
|
@@ -67,13 +74,12 @@ module Arel
|
|
67
74
|
|
68
75
|
describe 'alias' do
|
69
76
|
it 'should create a node that proxies to a table' do
|
70
|
-
|
77
|
+
@relation.aliases.must_equal []
|
71
78
|
|
72
79
|
node = @relation.alias
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
check node[:id].relation.should != node
|
80
|
+
@relation.aliases.must_equal [node]
|
81
|
+
node.name.must_equal 'users_2'
|
82
|
+
node[:id].relation.must_equal node
|
77
83
|
end
|
78
84
|
end
|
79
85
|
|
@@ -81,30 +87,30 @@ module Arel
|
|
81
87
|
it 'takes :columns' do
|
82
88
|
columns = Table.engine.connection.columns("users")
|
83
89
|
@relation = Table.new(:users, :columns => columns)
|
84
|
-
|
85
|
-
|
90
|
+
@relation.columns.first.name.must_equal :id
|
91
|
+
@relation.engine.must_equal Table.engine
|
86
92
|
end
|
87
93
|
|
88
94
|
it 'should accept an engine' do
|
89
95
|
rel = Table.new :users, 'foo'
|
90
|
-
|
96
|
+
rel.engine.must_equal 'foo'
|
91
97
|
end
|
92
98
|
|
93
99
|
it 'should accept a hash' do
|
94
100
|
rel = Table.new :users, :engine => 'foo'
|
95
|
-
|
101
|
+
rel.engine.must_equal 'foo'
|
96
102
|
end
|
97
103
|
|
98
104
|
it 'ignores as if it equals name' do
|
99
105
|
rel = Table.new :users, :as => 'users'
|
100
|
-
rel.table_alias.
|
106
|
+
rel.table_alias.must_be_nil
|
101
107
|
end
|
102
108
|
end
|
103
109
|
|
104
110
|
describe 'order' do
|
105
111
|
it "should take an order" do
|
106
112
|
manager = @relation.order "foo"
|
107
|
-
manager.to_sql.
|
113
|
+
manager.to_sql.must_be_like %{ SELECT FROM "users" ORDER BY foo }
|
108
114
|
end
|
109
115
|
end
|
110
116
|
|
@@ -112,19 +118,19 @@ module Arel
|
|
112
118
|
it "should add a limit" do
|
113
119
|
manager = @relation.take 1
|
114
120
|
manager.project SqlLiteral.new '*'
|
115
|
-
manager.to_sql.
|
121
|
+
manager.to_sql.must_be_like %{ SELECT * FROM "users" LIMIT 1 }
|
116
122
|
end
|
117
123
|
end
|
118
124
|
|
119
125
|
describe 'project' do
|
120
126
|
it 'can project' do
|
121
127
|
manager = @relation.project SqlLiteral.new '*'
|
122
|
-
manager.to_sql.
|
128
|
+
manager.to_sql.must_be_like %{ SELECT * FROM "users" }
|
123
129
|
end
|
124
130
|
|
125
131
|
it 'takes multiple parameters' do
|
126
132
|
manager = @relation.project SqlLiteral.new('*'), SqlLiteral.new('*')
|
127
|
-
manager.to_sql.
|
133
|
+
manager.to_sql.must_be_like %{ SELECT *, * FROM "users" }
|
128
134
|
end
|
129
135
|
end
|
130
136
|
|
@@ -132,8 +138,8 @@ module Arel
|
|
132
138
|
it "returns a tree manager" do
|
133
139
|
manager = @relation.where @relation[:id].eq 1
|
134
140
|
manager.project @relation[:id]
|
135
|
-
manager.
|
136
|
-
manager.to_sql.
|
141
|
+
manager.must_be_kind_of TreeManager
|
142
|
+
manager.to_sql.must_be_like %{
|
137
143
|
SELECT "users"."id"
|
138
144
|
FROM "users"
|
139
145
|
WHERE "users"."id" = 1
|
@@ -144,31 +150,31 @@ module Arel
|
|
144
150
|
describe 'columns' do
|
145
151
|
it 'returns a list of columns' do
|
146
152
|
columns = @relation.columns
|
147
|
-
|
148
|
-
columns.map { |x| x.name.to_s }.sort.
|
153
|
+
columns.length.must_equal 4
|
154
|
+
columns.map { |x| x.name.to_s }.sort.must_equal %w{ created_at bool name id }.sort
|
149
155
|
end
|
150
156
|
end
|
151
157
|
|
152
158
|
it "should have a name" do
|
153
|
-
@relation.name.
|
159
|
+
@relation.name.must_equal :users
|
154
160
|
end
|
155
161
|
|
156
162
|
it "should have an engine" do
|
157
|
-
@relation.engine.
|
163
|
+
@relation.engine.must_equal Table.engine
|
158
164
|
end
|
159
165
|
|
160
166
|
describe '[]' do
|
161
|
-
describe 'when given a
|
167
|
+
describe 'when given a Symbol' do
|
162
168
|
it "manufactures an attribute if the symbol names an attribute within the relation" do
|
163
169
|
column = @relation[:id]
|
164
|
-
|
165
|
-
column.
|
170
|
+
column.name.must_equal :id
|
171
|
+
column.must_be_kind_of Attributes::Integer
|
166
172
|
end
|
167
173
|
end
|
168
174
|
|
169
175
|
describe 'when table does not exist' do
|
170
176
|
it 'returns nil' do
|
171
|
-
@relation[:foooo].
|
177
|
+
@relation[:foooo].must_be_nil
|
172
178
|
end
|
173
179
|
end
|
174
180
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'helper'
|
2
2
|
|
3
3
|
module Arel
|
4
4
|
describe 'update manager' do
|
@@ -14,7 +14,7 @@ module Arel
|
|
14
14
|
um = Arel::UpdateManager.new Table.engine
|
15
15
|
um.table table
|
16
16
|
um.set [[table[:name], nil]]
|
17
|
-
um.to_sql.
|
17
|
+
um.to_sql.must_be_like %{ UPDATE "users" SET "name" = NULL }
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'takes a string' do
|
@@ -22,7 +22,7 @@ module Arel
|
|
22
22
|
um = Arel::UpdateManager.new Table.engine
|
23
23
|
um.table table
|
24
24
|
um.set Nodes::SqlLiteral.new "foo = bar"
|
25
|
-
um.to_sql.
|
25
|
+
um.to_sql.must_be_like %{ UPDATE "users" SET foo = bar }
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'takes a list of lists' do
|
@@ -30,7 +30,7 @@ module Arel
|
|
30
30
|
um = Arel::UpdateManager.new Table.engine
|
31
31
|
um.table table
|
32
32
|
um.set [[table[:id], 1], [table[:name], 'hello']]
|
33
|
-
um.to_sql.
|
33
|
+
um.to_sql.must_be_like %{
|
34
34
|
UPDATE "users" SET "id" = 1, "name" = 'hello'
|
35
35
|
}
|
36
36
|
end
|
@@ -38,7 +38,7 @@ module Arel
|
|
38
38
|
it 'chains' do
|
39
39
|
table = Table.new(:users)
|
40
40
|
um = Arel::UpdateManager.new Table.engine
|
41
|
-
um.set([[table[:id], 1], [table[:name], 'hello']]).
|
41
|
+
um.set([[table[:id], 1], [table[:name], 'hello']]).must_equal um
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -46,12 +46,12 @@ module Arel
|
|
46
46
|
it 'generates an update statement' do
|
47
47
|
um = Arel::UpdateManager.new Table.engine
|
48
48
|
um.table Table.new(:users)
|
49
|
-
um.to_sql.
|
49
|
+
um.to_sql.must_be_like %{ UPDATE "users" }
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'chains' do
|
53
53
|
um = Arel::UpdateManager.new Table.engine
|
54
|
-
um.table(Table.new(:users)).
|
54
|
+
um.table(Table.new(:users)).must_equal um
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -61,7 +61,7 @@ module Arel
|
|
61
61
|
um = Arel::UpdateManager.new Table.engine
|
62
62
|
um.table table
|
63
63
|
um.where table[:id].eq(1)
|
64
|
-
um.to_sql.
|
64
|
+
um.to_sql.must_be_like %{
|
65
65
|
UPDATE "users" WHERE "users"."id" = 1
|
66
66
|
}
|
67
67
|
end
|
@@ -70,20 +70,8 @@ module Arel
|
|
70
70
|
table = Table.new :users
|
71
71
|
um = Arel::UpdateManager.new Table.engine
|
72
72
|
um.table table
|
73
|
-
um.where(table[:id].eq(1)).
|
73
|
+
um.where(table[:id].eq(1)).must_equal um
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
77
|
-
describe "TreeManager" do
|
78
|
-
subject do
|
79
|
-
table = Table.new :users
|
80
|
-
Arel::UpdateManager.new(Table.engine).tap do |manager|
|
81
|
-
manager.table table
|
82
|
-
manager.where table[:id].eq(1)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
it_should_behave_like "TreeManager"
|
87
|
-
end
|
88
76
|
end
|
89
77
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'helper'
|
2
2
|
|
3
3
|
module Arel
|
4
4
|
module Visitors
|
@@ -12,7 +12,7 @@ module Arel
|
|
12
12
|
t = Table.new :users
|
13
13
|
join = Nodes::InnerJoin.new t, t, Nodes::On.new(t[:id])
|
14
14
|
j2 = Nodes::InnerJoin.new join, t, Nodes::On.new(t[:id])
|
15
|
-
@visitor.accept(j2).
|
15
|
+
@visitor.accept(j2).must_be_like %{
|
16
16
|
INNER JOIN "users" ON "users"."id"
|
17
17
|
INNER JOIN "users" ON "users"."id"
|
18
18
|
}
|
@@ -24,7 +24,7 @@ module Arel
|
|
24
24
|
t = Table.new :users
|
25
25
|
join = Nodes::OuterJoin.new t, t, Nodes::On.new(t[:id])
|
26
26
|
j2 = Nodes::OuterJoin.new join, t, Nodes::On.new(t[:id])
|
27
|
-
@visitor.accept(j2).
|
27
|
+
@visitor.accept(j2).must_be_like %{
|
28
28
|
LEFT OUTER JOIN "users" ON "users"."id"
|
29
29
|
LEFT OUTER JOIN "users" ON "users"."id"
|
30
30
|
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module Arel
|
4
|
+
module Visitors
|
5
|
+
describe 'the mysql visitor' do
|
6
|
+
before do
|
7
|
+
@visitor = MySQL.new Table.engine
|
8
|
+
end
|
9
|
+
|
10
|
+
###
|
11
|
+
# :'(
|
12
|
+
# http://dev.mysql.com/doc/refman/5.0/en/select.html#id3482214
|
13
|
+
it 'defaults limit to 18446744073709551615' do
|
14
|
+
stmt = Nodes::SelectStatement.new
|
15
|
+
stmt.offset = Nodes::Offset.new(1)
|
16
|
+
sql = @visitor.accept(stmt)
|
17
|
+
sql.must_be_like "SELECT FROM DUAL LIMIT 18446744073709551615 OFFSET 1"
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'uses DUAL for empty from' do
|
21
|
+
stmt = Nodes::SelectStatement.new
|
22
|
+
sql = @visitor.accept(stmt)
|
23
|
+
sql.must_be_like "SELECT FROM DUAL"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'helper'
|
2
2
|
|
3
3
|
module Arel
|
4
4
|
module Visitors
|
@@ -14,7 +14,7 @@ module Arel
|
|
14
14
|
stmt.cores.first.projections << Nodes::SqlLiteral.new(select)
|
15
15
|
stmt.orders << Nodes::SqlLiteral.new('foo')
|
16
16
|
sql = @visitor.accept(stmt)
|
17
|
-
sql.
|
17
|
+
sql.must_be_like %{
|
18
18
|
SELECT #{select} ORDER BY alias_0__
|
19
19
|
}
|
20
20
|
end
|
@@ -28,7 +28,7 @@ module Arel
|
|
28
28
|
|
29
29
|
sql = @visitor.accept(stmt)
|
30
30
|
sql2 = @visitor.accept(stmt)
|
31
|
-
|
31
|
+
sql.must_equal sql2
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'splits orders with commas' do
|
@@ -38,7 +38,7 @@ module Arel
|
|
38
38
|
stmt.cores.first.projections << Nodes::SqlLiteral.new(select)
|
39
39
|
stmt.orders << Nodes::SqlLiteral.new('foo, bar')
|
40
40
|
sql = @visitor.accept(stmt)
|
41
|
-
sql.
|
41
|
+
sql.must_be_like %{
|
42
42
|
SELECT #{select} ORDER BY alias_0__, alias_1__
|
43
43
|
}
|
44
44
|
end
|
@@ -49,7 +49,7 @@ module Arel
|
|
49
49
|
stmt = Nodes::SelectStatement.new
|
50
50
|
stmt.limit = 10
|
51
51
|
sql = @visitor.accept stmt
|
52
|
-
sql.
|
52
|
+
sql.must_be_like %{ SELECT WHERE ROWNUM <= 10 }
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'is idempotent' do
|
@@ -58,7 +58,7 @@ module Arel
|
|
58
58
|
stmt.limit = 10
|
59
59
|
sql = @visitor.accept stmt
|
60
60
|
sql2 = @visitor.accept stmt
|
61
|
-
|
61
|
+
sql.must_equal sql2
|
62
62
|
end
|
63
63
|
|
64
64
|
it 'creates a subquery when there is order_by' do
|
@@ -66,7 +66,7 @@ module Arel
|
|
66
66
|
stmt.orders << Nodes::SqlLiteral.new('foo')
|
67
67
|
stmt.limit = 10
|
68
68
|
sql = @visitor.accept stmt
|
69
|
-
sql.
|
69
|
+
sql.must_be_like %{
|
70
70
|
SELECT * FROM (SELECT ORDER BY foo) WHERE ROWNUM <= 10
|
71
71
|
}
|
72
72
|
end
|
@@ -76,7 +76,7 @@ module Arel
|
|
76
76
|
stmt.cores.first.projections << Nodes::SqlLiteral.new('DISTINCT id')
|
77
77
|
stmt.limit = 10
|
78
78
|
sql = @visitor.accept stmt
|
79
|
-
sql.
|
79
|
+
sql.must_be_like %{
|
80
80
|
SELECT * FROM (SELECT DISTINCT id) WHERE ROWNUM <= 10
|
81
81
|
}
|
82
82
|
end
|
@@ -86,7 +86,7 @@ module Arel
|
|
86
86
|
stmt.limit = 10
|
87
87
|
stmt.offset = Nodes::Offset.new(10)
|
88
88
|
sql = @visitor.accept stmt
|
89
|
-
sql.
|
89
|
+
sql.must_be_like %{
|
90
90
|
SELECT * FROM (
|
91
91
|
SELECT raw_sql_.*, rownum raw_rnum_
|
92
92
|
FROM (SELECT ) raw_sql_
|
@@ -102,9 +102,25 @@ module Arel
|
|
102
102
|
stmt.offset = Nodes::Offset.new(10)
|
103
103
|
sql = @visitor.accept stmt
|
104
104
|
sql2 = @visitor.accept stmt
|
105
|
-
|
105
|
+
sql.must_equal sql2
|
106
106
|
end
|
107
107
|
end
|
108
|
+
|
109
|
+
describe 'only offset' do
|
110
|
+
it 'creates a select from subquery with rownum condition' do
|
111
|
+
stmt = Nodes::SelectStatement.new
|
112
|
+
stmt.offset = Nodes::Offset.new(10)
|
113
|
+
sql = @visitor.accept stmt
|
114
|
+
sql.must_be_like %{
|
115
|
+
SELECT * FROM (
|
116
|
+
SELECT raw_sql_.*, rownum raw_rnum_
|
117
|
+
FROM (SELECT ) raw_sql_
|
118
|
+
)
|
119
|
+
WHERE raw_rnum_ > 10
|
120
|
+
}
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
108
124
|
end
|
109
125
|
end
|
110
126
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'helper'
|
2
2
|
|
3
3
|
module Arel
|
4
4
|
module Visitors
|
@@ -8,7 +8,7 @@ module Arel
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'should produce a lock value' do
|
11
|
-
@visitor.accept(Nodes::Lock.new).
|
11
|
+
@visitor.accept(Nodes::Lock.new).must_be_like %{
|
12
12
|
FOR UPDATE
|
13
13
|
}
|
14
14
|
end
|