arel 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. data/.autotest +26 -0
  2. data/History.txt +18 -0
  3. data/Manifest.txt +31 -30
  4. data/README.markdown +7 -99
  5. data/Rakefile +3 -2
  6. data/arel.gemspec +18 -11
  7. data/lib/arel.rb +2 -1
  8. data/lib/arel/attributes/attribute.rb +1 -174
  9. data/lib/arel/crud.rb +2 -2
  10. data/lib/arel/delete_manager.rb +4 -4
  11. data/lib/arel/insert_manager.rb +8 -8
  12. data/lib/arel/nodes/exists.rb +2 -6
  13. data/lib/arel/nodes/sql_literal.rb +1 -0
  14. data/lib/arel/predications.rb +177 -0
  15. data/lib/arel/select_manager.rb +17 -11
  16. data/lib/arel/table.rb +4 -0
  17. data/lib/arel/tree_manager.rb +4 -3
  18. data/lib/arel/update_manager.rb +8 -8
  19. data/lib/arel/visitors.rb +4 -0
  20. data/lib/arel/visitors/dot.rb +3 -3
  21. data/lib/arel/visitors/join_sql.rb +2 -0
  22. data/lib/arel/visitors/mysql.rb +14 -0
  23. data/lib/arel/visitors/oracle.rb +31 -1
  24. data/lib/arel/visitors/order_clauses.rb +2 -0
  25. data/lib/arel/visitors/sqlite.rb +11 -0
  26. data/lib/arel/visitors/to_sql.rb +8 -11
  27. data/lib/arel/visitors/visitor.rb +19 -0
  28. data/{spec/attributes/attribute_spec.rb → test/attributes/test_attribute.rb} +84 -84
  29. data/test/helper.rb +13 -0
  30. data/{spec/nodes/count_spec.rb → test/nodes/test_count.rb} +3 -3
  31. data/{spec/nodes/delete_statement_spec.rb → test/nodes/test_delete_statement.rb} +3 -4
  32. data/{spec/nodes/equality_spec.rb → test/nodes/test_equality.rb} +10 -8
  33. data/{spec/nodes/insert_statement_spec.rb → test/nodes/test_insert_statement.rb} +6 -6
  34. data/{spec/nodes/or_spec.rb → test/nodes/test_or.rb} +6 -4
  35. data/test/nodes/test_select_core.rb +22 -0
  36. data/{spec/nodes/select_statement_spec.rb → test/nodes/test_select_statement.rb} +3 -4
  37. data/test/nodes/test_sql_literal.rb +52 -0
  38. data/{spec/nodes/sum_spec.rb → test/nodes/test_sum.rb} +2 -2
  39. data/{spec/nodes/update_statement_spec.rb → test/nodes/test_update_statement.rb} +6 -6
  40. data/{spec → test}/support/fake_record.rb +4 -2
  41. data/{spec/activerecord_compat_spec.rb → test/test_activerecord_compat.rb} +3 -3
  42. data/{spec/attributes_spec.rb → test/test_attributes.rb} +7 -7
  43. data/{spec/crud_spec.rb → test/test_crud.rb} +4 -4
  44. data/{spec/delete_manager_spec.rb → test/test_delete_manager.rb} +5 -16
  45. data/{spec/insert_manager_spec.rb → test/test_insert_manager.rb} +15 -31
  46. data/{spec/select_manager_spec.rb → test/test_select_manager.rb} +95 -77
  47. data/{spec/table_spec.rb → test/test_table.rb} +38 -32
  48. data/{spec/update_manager_spec.rb → test/test_update_manager.rb} +9 -21
  49. data/{spec/visitors/join_sql_spec.rb → test/visitors/test_join_sql.rb} +3 -3
  50. data/test/visitors/test_mysql.rb +27 -0
  51. data/{spec/visitors/oracle_spec.rb → test/visitors/test_oracle.rb} +26 -10
  52. data/{spec/visitors/postgres_spec.rb → test/visitors/test_postgres.rb} +2 -2
  53. data/test/visitors/test_sqlite.rb +18 -0
  54. data/{spec/visitors/to_sql_spec.rb → test/visitors/test_to_sql.rb} +25 -18
  55. metadata +101 -43
  56. data/spec/nodes/select_core_spec.rb +0 -21
  57. data/spec/nodes/sql_literal_spec.rb +0 -26
  58. data/spec/spec.opts +0 -3
  59. data/spec/spec_helper.rb +0 -18
  60. data/spec/support/check.rb +0 -6
  61. data/spec/support/matchers.rb +0 -4
  62. data/spec/support/matchers/be_like.rb +0 -24
  63. data/spec/support/shared/tree_manager_shared.rb +0 -9
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'helper'
2
2
 
3
3
  module Arel
4
4
  describe 'insert manager' do
@@ -13,13 +13,9 @@ module Arel
13
13
  table = Table.new(:users)
14
14
  manager = Arel::InsertManager.new Table.engine
15
15
 
16
- table[:id].column.extend(Module.new {
17
- def type; :boolean; end
18
- })
19
-
20
- manager.insert [[table[:id], false]]
21
- manager.to_sql.should be_like %{
22
- INSERT INTO "users" ("id") VALUES ('f')
16
+ manager.insert [[table[:bool], false]]
17
+ manager.to_sql.must_be_like %{
18
+ INSERT INTO "users" ("bool") VALUES ('f')
23
19
  }
24
20
  end
25
21
 
@@ -27,7 +23,7 @@ module Arel
27
23
  table = Table.new(:users)
28
24
  manager = Arel::InsertManager.new Table.engine
29
25
  manager.insert [[table[:id], nil]]
30
- manager.to_sql.should be_like %{
26
+ manager.to_sql.must_be_like %{
31
27
  INSERT INTO "users" ("id") VALUES (NULL)
32
28
  }
33
29
  end
@@ -37,12 +33,11 @@ module Arel
37
33
  manager = Arel::InsertManager.new Table.engine
38
34
 
39
35
  time = Time.now
40
- attribute = table[:id]
41
- attribute.column.type = :date
36
+ attribute = table[:created_at]
42
37
 
43
38
  manager.insert [[attribute, time]]
44
- manager.to_sql.should be_like %{
45
- INSERT INTO "users" ("id") VALUES (#{Table.engine.connection.quote time})
39
+ manager.to_sql.must_be_like %{
40
+ INSERT INTO "users" ("created_at") VALUES (#{Table.engine.connection.quote time})
46
41
  }
47
42
  end
48
43
 
@@ -51,7 +46,7 @@ module Arel
51
46
  manager = Arel::InsertManager.new Table.engine
52
47
  manager.into table
53
48
  manager.insert [[table[:id], 1], [table[:name], 'aaron']]
54
- manager.to_sql.should be_like %{
49
+ manager.to_sql.must_be_like %{
55
50
  INSERT INTO "users" ("id", "name") VALUES (1, 'aaron')
56
51
  }
57
52
  end
@@ -60,7 +55,7 @@ module Arel
60
55
  table = Table.new(:users)
61
56
  manager = Arel::InsertManager.new Table.engine
62
57
  manager.insert [[table[:id], 1], [table[:name], 'aaron']]
63
- manager.to_sql.should be_like %{
58
+ manager.to_sql.must_be_like %{
64
59
  INSERT INTO "users" ("id", "name") VALUES (1, 'aaron')
65
60
  }
66
61
  end
@@ -74,14 +69,14 @@ module Arel
74
69
  describe 'into' do
75
70
  it 'takes an engine' do
76
71
  manager = Arel::InsertManager.new Table.engine
77
- manager.into(Table.new(:users)).should == manager
72
+ manager.into(Table.new(:users)).must_equal manager
78
73
  end
79
74
 
80
75
  it 'converts to sql' do
81
76
  table = Table.new :users
82
77
  manager = Arel::InsertManager.new Table.engine
83
78
  manager.into table
84
- manager.to_sql.should be_like %{
79
+ manager.to_sql.must_be_like %{
85
80
  INSERT INTO "users"
86
81
  }
87
82
  end
@@ -93,7 +88,7 @@ module Arel
93
88
  manager = Arel::InsertManager.new Table.engine
94
89
  manager.into table
95
90
  manager.columns << table[:id]
96
- manager.to_sql.should be_like %{
91
+ manager.to_sql.must_be_like %{
97
92
  INSERT INTO "users" ("id")
98
93
  }
99
94
  end
@@ -106,7 +101,7 @@ module Arel
106
101
  manager.into table
107
102
 
108
103
  manager.values = Nodes::Values.new [1]
109
- manager.to_sql.should be_like %{
104
+ manager.to_sql.must_be_like %{
110
105
  INSERT INTO "users" VALUES (1)
111
106
  }
112
107
  end
@@ -121,21 +116,10 @@ module Arel
121
116
  manager.values = Nodes::Values.new [1, 'aaron']
122
117
  manager.columns << table[:id]
123
118
  manager.columns << table[:name]
124
- manager.to_sql.should be_like %{
119
+ manager.to_sql.must_be_like %{
125
120
  INSERT INTO "users" ("id", "name") VALUES (1, 'aaron')
126
121
  }
127
122
  end
128
123
  end
129
-
130
- describe "TreeManager" do
131
- subject do
132
- table = Table.new(:users)
133
- Arel::InsertManager.new(Table.engine).tap do |manager|
134
- manager.insert [[table[:id], nil]]
135
- end
136
- end
137
-
138
- it_should_behave_like "TreeManager"
139
- end
140
124
  end
141
125
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'helper'
2
2
 
3
3
  module Arel
4
4
  class EngineProxy
@@ -37,6 +37,18 @@ module Arel
37
37
 
38
38
  describe 'select manager' do
39
39
  describe 'backwards compatibility' do
40
+ describe 'project' do
41
+ it 'accepts symbols as sql literals' do
42
+ table = Table.new :users
43
+ manager = Arel::SelectManager.new Table.engine
44
+ manager.project :id
45
+ manager.from table
46
+ manager.to_sql.must_be_like %{
47
+ SELECT id FROM "users"
48
+ }
49
+ end
50
+ end
51
+
40
52
  describe 'order' do
41
53
  it 'accepts symbols' do
42
54
  table = Table.new :users
@@ -44,9 +56,7 @@ module Arel
44
56
  manager.project SqlLiteral.new '*'
45
57
  manager.from table
46
58
  manager.order :foo
47
- manager.to_sql.should be_like %{
48
- SELECT * FROM "users" ORDER BY foo
49
- }
59
+ manager.to_sql.must_be_like %{ SELECT * FROM "users" ORDER BY foo }
50
60
  end
51
61
  end
52
62
 
@@ -56,9 +66,7 @@ module Arel
56
66
  manager = Arel::SelectManager.new Table.engine
57
67
  manager.from table
58
68
  manager.group :foo
59
- manager.to_sql.should be_like %{
60
- SELECT FROM "users" GROUP BY foo
61
- }
69
+ manager.to_sql.must_be_like %{ SELECT FROM "users" GROUP BY foo }
62
70
  end
63
71
  end
64
72
 
@@ -70,7 +78,7 @@ module Arel
70
78
  manager.from table
71
79
  manager.from 'users'
72
80
  manager.project table['id']
73
- manager.to_sql.should be_like 'SELECT "users"."id" FROM users'
81
+ manager.to_sql.must_be_like 'SELECT "users"."id" FROM users'
74
82
  end
75
83
  end
76
84
 
@@ -79,7 +87,7 @@ module Arel
79
87
  table = Table.new :users
80
88
  mgr = table.from table
81
89
  mgr.having 'foo'
82
- mgr.to_sql.should be_like %{ SELECT FROM "users" HAVING foo }
90
+ mgr.to_sql.must_be_like %{ SELECT FROM "users" HAVING foo }
83
91
  end
84
92
  end
85
93
  end
@@ -90,8 +98,7 @@ module Arel
90
98
  mgr = table.from table
91
99
  m2 = mgr.clone
92
100
  m2.project "foo"
93
-
94
- check mgr.to_sql.should_not == m2.to_sql
101
+ mgr.to_sql.wont_equal m2.to_sql
95
102
  end
96
103
  end
97
104
 
@@ -100,7 +107,7 @@ module Arel
100
107
  table = Table.new :users, :engine => Table.engine, :as => 'foo'
101
108
  mgr = table.from table
102
109
  mgr.skip 10
103
- mgr.to_sql.should be_like %{ SELECT FROM "users" "foo" OFFSET 10 }
110
+ mgr.to_sql.must_be_like %{ SELECT FROM "users" "foo" OFFSET 10 }
104
111
  end
105
112
  end
106
113
 
@@ -109,22 +116,50 @@ module Arel
109
116
  table = Table.new :users
110
117
  mgr = table.from table
111
118
  mgr.skip 10
112
- mgr.to_sql.should be_like %{ SELECT FROM "users" OFFSET 10 }
119
+ mgr.to_sql.must_be_like %{ SELECT FROM "users" OFFSET 10 }
113
120
  end
114
121
 
115
122
  it 'should chain' do
116
123
  table = Table.new :users
117
124
  mgr = table.from table
118
- mgr.skip(10).to_sql.should be_like %{ SELECT FROM "users" OFFSET 10 }
125
+ mgr.skip(10).to_sql.must_be_like %{ SELECT FROM "users" OFFSET 10 }
126
+ end
127
+ end
128
+
129
+ describe 'exists' do
130
+ it 'should create an exists clause' do
131
+ table = Table.new(:users)
132
+ manager = Arel::SelectManager.new Table.engine, table
133
+ manager.project SqlLiteral.new '*'
134
+ m2 = Arel::SelectManager.new(manager.engine)
135
+ m2.project manager.exists
136
+ m2.to_sql.must_be_like %{ SELECT EXISTS (#{manager.to_sql}) }
137
+ end
138
+
139
+ it 'can be aliased' do
140
+ table = Table.new(:users)
141
+ manager = Arel::SelectManager.new Table.engine, table
142
+ manager.project SqlLiteral.new '*'
143
+ m2 = Arel::SelectManager.new(manager.engine)
144
+ m2.project manager.exists.as('foo')
145
+ m2.to_sql.must_be_like %{ SELECT EXISTS (#{manager.to_sql}) AS foo }
146
+ end
147
+ end
148
+
149
+ describe 'ast' do
150
+ it 'should return the ast' do
151
+ table = Table.new :users
152
+ mgr = table.from table
153
+ ast = mgr.ast
154
+ mgr.visitor.accept(ast).must_equal mgr.to_sql
119
155
  end
120
156
  end
121
157
 
122
158
  describe 'taken' do
123
159
  it 'should return limit' do
124
- table = Table.new :users
125
160
  manager = Arel::SelectManager.new Table.engine
126
161
  manager.take 10
127
- check manager.taken.should == 10
162
+ manager.taken.must_equal 10
128
163
  end
129
164
  end
130
165
 
@@ -136,7 +171,7 @@ module Arel
136
171
  manager.from table
137
172
  manager.insert 'VALUES(NULL)'
138
173
 
139
- engine.executed.last.should be_like %{
174
+ engine.executed.last.must_be_like %{
140
175
  INSERT INTO "users" VALUES(NULL)
141
176
  }
142
177
  end
@@ -147,7 +182,7 @@ module Arel
147
182
  it 'adds a lock node' do
148
183
  table = Table.new :users
149
184
  mgr = table.from table
150
- mgr.lock.to_sql.should be_like %{ SELECT FROM "users" }
185
+ mgr.lock.to_sql.must_be_like %{ SELECT FROM "users" }
151
186
  end
152
187
  end
153
188
 
@@ -157,7 +192,7 @@ module Arel
157
192
  manager = Arel::SelectManager.new Table.engine
158
193
  order = table[:id]
159
194
  manager.order table[:id]
160
- check manager.orders.should == [order]
195
+ manager.orders.must_equal [order]
161
196
  end
162
197
  end
163
198
 
@@ -168,7 +203,7 @@ module Arel
168
203
  manager.project SqlLiteral.new '*'
169
204
  manager.from table
170
205
  manager.order table[:id]
171
- manager.to_sql.should be_like %{
206
+ manager.to_sql.must_be_like %{
172
207
  SELECT * FROM "users" ORDER BY "users"."id"
173
208
  }
174
209
  end
@@ -180,7 +215,7 @@ module Arel
180
215
  manager.project SqlLiteral.new '*'
181
216
  manager.from table
182
217
  manager.order table[:id], table[:name]
183
- manager.to_sql.should be_like %{
218
+ manager.to_sql.must_be_like %{
184
219
  SELECT * FROM "users" ORDER BY "users"."id", "users"."name"
185
220
  }
186
221
  end
@@ -188,7 +223,7 @@ module Arel
188
223
  it 'chains' do
189
224
  table = Table.new :users
190
225
  manager = Arel::SelectManager.new Table.engine
191
- check manager.order(table[:id]).should == manager
226
+ manager.order(table[:id]).must_equal manager
192
227
  end
193
228
  end
194
229
 
@@ -201,7 +236,7 @@ module Arel
201
236
 
202
237
  manager.from left
203
238
  manager.join(right).on(predicate, predicate)
204
- manager.to_sql.should be_like %{
239
+ manager.to_sql.must_be_like %{
205
240
  SELECT FROM "users"
206
241
  INNER JOIN "users" "users_2"
207
242
  ON "users"."id" = "users_2"."id" AND
@@ -221,7 +256,7 @@ module Arel
221
256
  predicate,
222
257
  left[:name].eq(right[:name])
223
258
  )
224
- manager.to_sql.should be_like %{
259
+ manager.to_sql.must_be_like %{
225
260
  SELECT FROM "users"
226
261
  INNER JOIN "users" "users_2"
227
262
  ON "users"."id" = "users_2"."id" AND
@@ -240,7 +275,7 @@ module Arel
240
275
 
241
276
  manager.from left
242
277
  manager.join(right).on(predicate)
243
- manager.to_sql.should be_like %{
278
+ manager.to_sql.must_be_like %{
244
279
  SELECT FROM "users"
245
280
  INNER JOIN "users" "users_2"
246
281
  ON "users"."id" = "users_2"."id"
@@ -255,7 +290,7 @@ module Arel
255
290
 
256
291
  manager.from left
257
292
  manager.join(right, Nodes::OuterJoin).on(predicate)
258
- manager.to_sql.should be_like %{
293
+ manager.to_sql.must_be_like %{
259
294
  SELECT FROM "users"
260
295
  LEFT OUTER JOIN "users" "users_2"
261
296
  ON "users"."id" = "users_2"."id"
@@ -264,7 +299,7 @@ module Arel
264
299
 
265
300
  it 'noops on nil' do
266
301
  manager = Arel::SelectManager.new Table.engine
267
- check manager.join(nil).should == manager
302
+ manager.join(nil).must_equal manager
268
303
  end
269
304
  end
270
305
 
@@ -274,10 +309,10 @@ module Arel
274
309
  aliaz = table.alias
275
310
  manager = Arel::SelectManager.new Table.engine
276
311
  manager.from Nodes::InnerJoin.new(table, aliaz, table[:id].eq(aliaz[:id]))
277
- manager.join_sql.should be_like %{
312
+ manager.join_sql.must_be_like %{
278
313
  INNER JOIN "users" "users_2" "users"."id" = "users_2"."id"
279
314
  }
280
- check manager.joins(manager).should == manager.join_sql
315
+ manager.joins(manager).must_equal manager.join_sql
281
316
  end
282
317
 
283
318
  it 'returns outer join sql' do
@@ -285,35 +320,33 @@ module Arel
285
320
  aliaz = table.alias
286
321
  manager = Arel::SelectManager.new Table.engine
287
322
  manager.from Nodes::OuterJoin.new(table, aliaz, table[:id].eq(aliaz[:id]))
288
- manager.join_sql.should be_like %{
323
+ manager.join_sql.must_be_like %{
289
324
  LEFT OUTER JOIN "users" "users_2" "users"."id" = "users_2"."id"
290
325
  }
291
- check manager.joins(manager).should == manager.join_sql
326
+ manager.joins(manager).must_equal manager.join_sql
292
327
  end
293
328
 
294
329
  it 'returns string join sql' do
295
330
  table = Table.new :users
296
- aliaz = table.alias
297
331
  manager = Arel::SelectManager.new Table.engine
298
332
  manager.from Nodes::StringJoin.new(table, 'hello')
299
- manager.join_sql.should be_like %{ 'hello' }
300
- check manager.joins(manager).should == manager.join_sql
333
+ manager.join_sql.must_be_like %{ 'hello' }
334
+ manager.joins(manager).must_equal manager.join_sql
301
335
  end
302
336
 
303
337
  it 'returns nil join sql' do
304
338
  manager = Arel::SelectManager.new Table.engine
305
- manager.join_sql.should be_nil
339
+ manager.join_sql.must_be_nil
306
340
  end
307
341
  end
308
342
 
309
343
  describe 'order_clauses' do
310
344
  it 'returns order clauses as a list' do
311
345
  table = Table.new :users
312
- aliaz = table.alias
313
346
  manager = Arel::SelectManager.new Table.engine
314
347
  manager.from table
315
348
  manager.order table[:id]
316
- manager.order_clauses.first.should be_like %{ "users"."id" }
349
+ manager.order_clauses.first.must_be_like %{ "users"."id" }
317
350
  end
318
351
  end
319
352
 
@@ -323,7 +356,7 @@ module Arel
323
356
  manager = Arel::SelectManager.new Table.engine
324
357
  manager.from table
325
358
  manager.group table[:id]
326
- manager.to_sql.should be_like %{
359
+ manager.to_sql.must_be_like %{
327
360
  SELECT FROM "users" GROUP BY "users"."id"
328
361
  }
329
362
  end
@@ -331,7 +364,7 @@ module Arel
331
364
  it 'chains' do
332
365
  table = Table.new :users
333
366
  manager = Arel::SelectManager.new Table.engine
334
- check manager.group(table[:id]).should == manager
367
+ manager.group(table[:id]).must_equal manager
335
368
  end
336
369
 
337
370
  it 'takes multiple args' do
@@ -339,7 +372,7 @@ module Arel
339
372
  manager = Arel::SelectManager.new Table.engine
340
373
  manager.from table
341
374
  manager.group table[:id], table[:name]
342
- manager.to_sql.should be_like %{
375
+ manager.to_sql.must_be_like %{
343
376
  SELECT FROM "users" GROUP BY "users"."id", "users"."name"
344
377
  }
345
378
  end
@@ -350,7 +383,7 @@ module Arel
350
383
  manager = Arel::SelectManager.new Table.engine
351
384
  manager.from table
352
385
  manager.group 'foo'
353
- manager.to_sql.should be_like %{ SELECT FROM "users" GROUP BY foo }
386
+ manager.to_sql.must_be_like %{ SELECT FROM "users" GROUP BY foo }
354
387
  end
355
388
  end
356
389
 
@@ -362,7 +395,7 @@ module Arel
362
395
  manager.from table
363
396
  manager.delete
364
397
 
365
- engine.executed.last.should be_like %{ DELETE FROM "users" }
398
+ engine.executed.last.must_be_like %{ DELETE FROM "users" }
366
399
  end
367
400
 
368
401
  it "copies where" do
@@ -373,7 +406,7 @@ module Arel
373
406
  manager.where table[:id].eq 10
374
407
  manager.delete
375
408
 
376
- engine.executed.last.should be_like %{
409
+ engine.executed.last.must_be_like %{
377
410
  DELETE FROM "users" WHERE "users"."id" = 10
378
411
  }
379
412
  end
@@ -385,14 +418,14 @@ module Arel
385
418
  manager = Arel::SelectManager.new Table.engine
386
419
  manager.from table
387
420
  manager.where table[:id].eq 10
388
- manager.where_sql.should be_like %{ WHERE "users"."id" = 10 }
421
+ manager.where_sql.must_be_like %{ WHERE "users"."id" = 10 }
389
422
  end
390
423
 
391
424
  it 'returns nil when there are no wheres' do
392
425
  table = Table.new :users
393
426
  manager = Arel::SelectManager.new Table.engine
394
427
  manager.from table
395
- manager.where_sql.should be_nil
428
+ manager.where_sql.must_be_nil
396
429
  end
397
430
  end
398
431
 
@@ -405,7 +438,7 @@ module Arel
405
438
  manager.take 1
406
439
  manager.update(SqlLiteral.new('foo = bar'))
407
440
 
408
- engine.executed.last.should be_like %{
441
+ engine.executed.last.must_be_like %{
409
442
  UPDATE "users" SET foo = bar
410
443
  WHERE "users"."id" IN (SELECT "users"."id" FROM "users" LIMIT 1)
411
444
  }
@@ -419,7 +452,7 @@ module Arel
419
452
  manager.order :foo
420
453
  manager.update(SqlLiteral.new('foo = bar'))
421
454
 
422
- engine.executed.last.should be_like %{
455
+ engine.executed.last.must_be_like %{
423
456
  UPDATE "users" SET foo = bar
424
457
  WHERE "users"."id" IN (SELECT "users"."id" FROM "users" ORDER BY foo)
425
458
  }
@@ -432,7 +465,7 @@ module Arel
432
465
  manager.from table
433
466
  manager.update(SqlLiteral.new('foo = bar'))
434
467
 
435
- engine.executed.last.should be_like %{ UPDATE "users" SET foo = bar }
468
+ engine.executed.last.must_be_like %{ UPDATE "users" SET foo = bar }
436
469
  end
437
470
 
438
471
  it 'copies where clauses' do
@@ -443,7 +476,7 @@ module Arel
443
476
  manager.from table
444
477
  manager.update(table[:id] => 1)
445
478
 
446
- engine.executed.last.should be_like %{
479
+ engine.executed.last.must_be_like %{
447
480
  UPDATE "users" SET "id" = 1 WHERE "users"."id" = 10
448
481
  }
449
482
  end
@@ -455,7 +488,7 @@ module Arel
455
488
  manager.from table
456
489
  manager.update(table[:id] => 1)
457
490
 
458
- engine.executed.last.should be_like %{
491
+ engine.executed.last.must_be_like %{
459
492
  UPDATE "users" SET "id" = 1
460
493
  }
461
494
  end
@@ -463,25 +496,22 @@ module Arel
463
496
 
464
497
  describe 'project' do
465
498
  it 'takes multiple args' do
466
- table = Table.new :users
467
499
  manager = Arel::SelectManager.new Table.engine
468
500
  manager.project Nodes::SqlLiteral.new('foo'),
469
501
  Nodes::SqlLiteral.new('bar')
470
- manager.to_sql.should be_like %{ SELECT foo, bar }
502
+ manager.to_sql.must_be_like %{ SELECT foo, bar }
471
503
  end
472
504
 
473
505
  it 'takes strings' do
474
- table = Table.new :users
475
506
  manager = Arel::SelectManager.new Table.engine
476
507
  manager.project Nodes::SqlLiteral.new('*')
477
- manager.to_sql.should be_like %{ SELECT * }
508
+ manager.to_sql.must_be_like %{ SELECT * }
478
509
  end
479
510
 
480
511
  it "takes sql literals" do
481
- table = Table.new :users
482
512
  manager = Arel::SelectManager.new Table.engine
483
513
  manager.project Nodes::SqlLiteral.new '*'
484
- manager.to_sql.should be_like %{
514
+ manager.to_sql.must_be_like %{
485
515
  SELECT *
486
516
  }
487
517
  end
@@ -495,7 +525,7 @@ module Arel
495
525
  manager.where(table['id'].eq(1))
496
526
  manager.take 1
497
527
 
498
- manager.to_sql.should be_like %{
528
+ manager.to_sql.must_be_like %{
499
529
  SELECT "users"."id"
500
530
  FROM "users"
501
531
  WHERE "users"."id" = 1
@@ -504,9 +534,8 @@ module Arel
504
534
  end
505
535
 
506
536
  it "chains" do
507
- table = Table.new :users
508
537
  manager = Arel::SelectManager.new Table.engine
509
- manager.take(1).should == manager
538
+ manager.take(1).must_equal manager
510
539
  end
511
540
  end
512
541
 
@@ -516,7 +545,7 @@ module Arel
516
545
  manager = Arel::SelectManager.new Table.engine
517
546
  manager.from(table).project(table['id'])
518
547
  manager.where(table['id'].eq(1))
519
- manager.to_sql.should be_like %{
548
+ manager.to_sql.must_be_like %{
520
549
  SELECT "users"."id"
521
550
  FROM "users"
522
551
  WHERE "users"."id" = 1
@@ -527,7 +556,7 @@ module Arel
527
556
  table = Table.new :users
528
557
  manager = Arel::SelectManager.new Table.engine
529
558
  manager.from(table)
530
- manager.project(table['id']).where(table['id'].eq 1).should == manager
559
+ manager.project(table['id']).where(table['id'].eq 1).must_equal manager
531
560
  end
532
561
  end
533
562
 
@@ -539,9 +568,9 @@ module Arel
539
568
 
540
569
  mgr = left.join(right)
541
570
  mgr.project Nodes::SqlLiteral.new('*')
542
- check mgr.on(predicate).should == mgr
571
+ mgr.on(predicate).must_equal mgr
543
572
 
544
- mgr.to_sql.should be_like %{
573
+ mgr.to_sql.must_be_like %{
545
574
  SELECT * FROM "users"
546
575
  INNER JOIN "users" "users_2"
547
576
  ON "users"."id" = "users_2"."id"
@@ -556,26 +585,15 @@ module Arel
556
585
 
557
586
  manager.from table
558
587
  manager.project table['id']
559
- manager.to_sql.should be_like 'SELECT "users"."id" FROM "users"'
588
+ manager.to_sql.must_be_like 'SELECT "users"."id" FROM "users"'
560
589
  end
561
590
 
562
591
  it "chains" do
563
592
  table = Table.new :users
564
593
  manager = Arel::SelectManager.new Table.engine
565
- check manager.from(table).project(table['id']).should == manager
566
- manager.to_sql.should be_like 'SELECT "users"."id" FROM "users"'
567
- end
568
- end
569
-
570
- describe "TreeManager" do
571
- subject do
572
- table = Table.new :users
573
- Arel::SelectManager.new(Table.engine).tap do |manager|
574
- manager.from(table).project(table['id'])
575
- end
594
+ manager.from(table).project(table['id']).must_equal manager
595
+ manager.to_sql.must_be_like 'SELECT "users"."id" FROM "users"'
576
596
  end
577
-
578
- it_should_behave_like "TreeManager"
579
597
  end
580
598
  end
581
599
  end