arel_extensions 2.0.13 → 2.0.14

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -10
  3. data/Rakefile +4 -4
  4. data/gemfiles/rails3.gemfile +9 -9
  5. data/gemfiles/rails4.gemfile +13 -13
  6. data/gemfiles/rails5_0.gemfile +13 -13
  7. data/gemfiles/rails5_1_4.gemfile +13 -13
  8. data/gemfiles/rails5_2.gemfile +13 -13
  9. data/gemfiles/rails6.gemfile +13 -13
  10. data/lib/arel_extensions.rb +2 -2
  11. data/lib/arel_extensions/attributes.rb +0 -0
  12. data/lib/arel_extensions/boolean_functions.rb +3 -7
  13. data/lib/arel_extensions/common_sql_functions.rb +0 -2
  14. data/lib/arel_extensions/comparators.rb +11 -14
  15. data/lib/arel_extensions/date_duration.rb +4 -5
  16. data/lib/arel_extensions/insert_manager.rb +16 -17
  17. data/lib/arel_extensions/math.rb +8 -9
  18. data/lib/arel_extensions/math_functions.rb +15 -17
  19. data/lib/arel_extensions/nodes/abs.rb +0 -1
  20. data/lib/arel_extensions/nodes/aggregate_function.rb +0 -1
  21. data/lib/arel_extensions/nodes/blank.rb +0 -1
  22. data/lib/arel_extensions/nodes/case.rb +3 -4
  23. data/lib/arel_extensions/nodes/cast.rb +0 -1
  24. data/lib/arel_extensions/nodes/ceil.rb +1 -1
  25. data/lib/arel_extensions/nodes/change_case.rb +0 -0
  26. data/lib/arel_extensions/nodes/coalesce.rb +0 -1
  27. data/lib/arel_extensions/nodes/collate.rb +0 -1
  28. data/lib/arel_extensions/nodes/concat.rb +1 -3
  29. data/lib/arel_extensions/nodes/date_diff.rb +4 -5
  30. data/lib/arel_extensions/nodes/duration.rb +0 -1
  31. data/lib/arel_extensions/nodes/find_in_set.rb +0 -1
  32. data/lib/arel_extensions/nodes/floor.rb +1 -1
  33. data/lib/arel_extensions/nodes/format.rb +1 -0
  34. data/lib/arel_extensions/nodes/formatted_number.rb +0 -1
  35. data/lib/arel_extensions/nodes/function.rb +2 -3
  36. data/lib/arel_extensions/nodes/is_null.rb +0 -0
  37. data/lib/arel_extensions/nodes/json.rb +0 -6
  38. data/lib/arel_extensions/nodes/length.rb +0 -1
  39. data/lib/arel_extensions/nodes/levenshtein_distance.rb +0 -0
  40. data/lib/arel_extensions/nodes/locate.rb +0 -1
  41. data/lib/arel_extensions/nodes/log10.rb +1 -2
  42. data/lib/arel_extensions/nodes/matches.rb +0 -2
  43. data/lib/arel_extensions/nodes/md5.rb +0 -1
  44. data/lib/arel_extensions/nodes/power.rb +0 -1
  45. data/lib/arel_extensions/nodes/rand.rb +0 -1
  46. data/lib/arel_extensions/nodes/repeat.rb +0 -2
  47. data/lib/arel_extensions/nodes/replace.rb +0 -2
  48. data/lib/arel_extensions/nodes/round.rb +0 -1
  49. data/lib/arel_extensions/nodes/soundex.rb +0 -1
  50. data/lib/arel_extensions/nodes/std.rb +0 -1
  51. data/lib/arel_extensions/nodes/substring.rb +0 -1
  52. data/lib/arel_extensions/nodes/sum.rb +0 -0
  53. data/lib/arel_extensions/nodes/then.rb +0 -0
  54. data/lib/arel_extensions/nodes/trim.rb +0 -2
  55. data/lib/arel_extensions/nodes/union.rb +0 -2
  56. data/lib/arel_extensions/nodes/union_all.rb +0 -2
  57. data/lib/arel_extensions/nodes/wday.rb +0 -4
  58. data/lib/arel_extensions/null_functions.rb +3 -5
  59. data/lib/arel_extensions/predications.rb +2 -3
  60. data/lib/arel_extensions/railtie.rb +5 -5
  61. data/lib/arel_extensions/set_functions.rb +0 -2
  62. data/lib/arel_extensions/string_functions.rb +21 -22
  63. data/lib/arel_extensions/tasks.rb +1 -1
  64. data/lib/arel_extensions/version.rb +1 -1
  65. data/lib/arel_extensions/visitors.rb +9 -7
  66. data/lib/arel_extensions/visitors/convert_format.rb +37 -0
  67. data/lib/arel_extensions/visitors/ibm_db.rb +4 -11
  68. data/lib/arel_extensions/visitors/mssql.rb +48 -44
  69. data/lib/arel_extensions/visitors/mysql.rb +63 -65
  70. data/lib/arel_extensions/visitors/oracle.rb +48 -55
  71. data/lib/arel_extensions/visitors/oracle12.rb +2 -3
  72. data/lib/arel_extensions/visitors/postgresql.rb +39 -34
  73. data/lib/arel_extensions/visitors/sqlite.rb +23 -18
  74. data/lib/arel_extensions/visitors/to_sql.rb +42 -44
  75. data/test/arelx_test_helper.rb +0 -2
  76. data/test/real_db_test.rb +26 -41
  77. data/test/support/fake_record.rb +1 -1
  78. data/test/test_comparators.rb +0 -4
  79. data/test/visitors/test_bulk_insert_oracle.rb +0 -1
  80. data/test/visitors/test_bulk_insert_sqlite.rb +0 -2
  81. data/test/visitors/test_oracle.rb +1 -2
  82. data/test/visitors/test_to_sql.rb +16 -25
  83. data/test/with_ar/all_agnostic_test.rb +134 -139
  84. data/test/with_ar/insert_agnostic_test.rb +0 -2
  85. data/test/with_ar/test_bulk_sqlite.rb +0 -4
  86. data/test/with_ar/test_math_sqlite.rb +4 -8
  87. data/test/with_ar/test_string_mysql.rb +1 -5
  88. data/test/with_ar/test_string_sqlite.rb +1 -5
  89. data/version_v1.rb +1 -1
  90. data/version_v2.rb +1 -1
  91. metadata +3 -2
@@ -22,7 +22,5 @@ module Minitest::Assertions
22
22
  end
23
23
 
24
24
  module Minitest::Expectations
25
-
26
25
  infect_an_assertion :assert_like, :must_be_like
27
-
28
26
  end
@@ -24,7 +24,7 @@ def setup_db
24
24
  $stderr << "cannot load extensions #{e.inspect}\n"
25
25
  end
26
26
  end
27
- #function find_in_set
27
+ # function find_in_set
28
28
  db.create_function("find_in_set", 1) do |func, value1, value2|
29
29
  func.result = value1.index(value2)
30
30
  end
@@ -44,15 +44,13 @@ def teardown_db
44
44
  end
45
45
 
46
46
  class User < ActiveRecord::Base
47
-
48
47
  end
49
48
 
50
49
  class ListTest < Minitest::Test
51
-
52
50
  def setup
53
51
  d = Date.new(2016,05,23)
54
52
  setup_db
55
- User.create :age => 5, :name => "Lucas", :created_at => d , :score => 20.16
53
+ User.create :age => 5, :name => "Lucas", :created_at => d, :score => 20.16
56
54
  User.create :age => 15, :name => "Sophie", :created_at => d, :score => 20.16
57
55
  User.create :age => 20, :name => "Camille", :created_at => d, :score => 20.16
58
56
  User.create :age => 21, :name => "Arthur", :created_at => d, :score => 65.62
@@ -90,30 +88,28 @@ class ListTest < Minitest::Test
90
88
  end
91
89
 
92
90
  def test_Comparator
93
- assert_equal 2,User.where(User.arel_table[:age] < 6 ).count
94
- assert_equal 2,User.where(User.arel_table[:age] <=10 ).count
95
- assert_equal 3,User.where(User.arel_table[:age] > 20 ).count
96
- assert_equal 4,User.where(User.arel_table[:age] >=20 ).count
97
- assert_equal 1,User.where(User.arel_table[:age] > 5 ).where(User.arel_table[:age] < 20 ).count
91
+ assert_equal 2,User.where(User.arel_table[:age] < 6).count
92
+ assert_equal 2,User.where(User.arel_table[:age] <=10).count
93
+ assert_equal 3,User.where(User.arel_table[:age] > 20).count
94
+ assert_equal 4,User.where(User.arel_table[:age] >=20).count
95
+ assert_equal 1,User.where(User.arel_table[:age] > 5).where(User.arel_table[:age] < 20).count
98
96
  end
99
97
 
100
98
  def test_date_duration
101
- #Year
99
+ # Year
102
100
  assert_equal 2016,User.where(User.arel_table[:name].eq("Lucas")).select((User.arel_table[:created_at].year).as("res")).first.res.to_i
103
101
  assert_equal 0,User.where(User.arel_table[:created_at].year.eq("2012")).count
104
- #Month
102
+ # Month
105
103
  assert_equal 5,User.where(User.arel_table[:name].eq("Camille")).select((User.arel_table[:created_at].month).as("res")).first.res.to_i
106
104
  assert_equal 8,User.where(User.arel_table[:created_at].month.eq("05")).count
107
- #Week
105
+ # Week
108
106
  assert_equal 21,User.where(User.arel_table[:name].eq("Arthur")).select((User.arel_table[:created_at].week).as("res")).first.res.to_i
109
107
  assert_equal 8,User.where(User.arel_table[:created_at].month.eq("05")).count
110
- #Day
108
+ # Day
111
109
  assert_equal 23,User.where(User.arel_table[:name].eq("Laure")).select((User.arel_table[:created_at].day).as("res")).first.res.to_i
112
110
  assert_equal 0,User.where(User.arel_table[:created_at].day.eq("05")).count
113
111
  end
114
112
 
115
-
116
-
117
113
  def test_length
118
114
  assert_equal 7,User.where(User.arel_table[:name].eq("Camille")).select((User.arel_table[:name].length).as("res")).first.res
119
115
  assert_equal 5,User.where(User.arel_table[:name].eq("Laure")).select((User.arel_table[:name].length).as("res")).first.res
@@ -136,7 +132,6 @@ class ListTest < Minitest::Test
136
132
  end
137
133
  end
138
134
 
139
-
140
135
  def test_floor
141
136
  if !$sqlite || !$load_extension_disabled
142
137
  assert_equal 0,User.where(User.arel_table[:name].eq("Negatif")).select((User.arel_table[:score].floor).as("res")).first.res
@@ -144,57 +139,51 @@ class ListTest < Minitest::Test
144
139
  end
145
140
  end
146
141
 
147
-
148
142
  def test_findinset
149
143
  db = ActiveRecord::Base.connection.raw_connection
150
- assert_equal 3,db.get_first_value( "select find_in_set(name,'i') from users where name = 'Camille'" )
151
- assert_equal "",db.get_first_value( "select find_in_set(name,'p') from users where name = 'Camille'" ).to_s
152
- #number
153
- #assert_equal 1,User.select(User.arel_table[:name] & ("l")).count
154
- #assert_equal 3,(User.select(User.arel_table[:age] & [5,15,20]))
155
- #string
144
+ assert_equal 3,db.get_first_value("select find_in_set(name,'i') from users where name = 'Camille'")
145
+ assert_equal "",db.get_first_value("select find_in_set(name,'p') from users where name = 'Camille'").to_s
146
+ # number
147
+ # assert_equal 1,User.select(User.arel_table[:name] & ("l")).count
148
+ # assert_equal 3,(User.select(User.arel_table[:age] & [5,15,20]))
149
+ # string
156
150
  end
157
151
 
158
-
159
152
  def test_math_plus
160
153
  d = Date.new(1997,06,15)
161
- #Concat String
154
+ # Concat String
162
155
  assert_equal "SophiePhan",User.where(User.arel_table[:name].eq("Sophie")).select((User.arel_table[:name] + "Phan").as("res")).first.res
163
- assert_equal "Sophie2",User.where(User.arel_table[:name].eq("Sophie")).select((User.arel_table[:name] + 2 ).as("res")).first.res
156
+ assert_equal "Sophie2",User.where(User.arel_table[:name].eq("Sophie")).select((User.arel_table[:name] + 2).as("res")).first.res
164
157
  assert_equal "Sophie1997-06-15",User.where(User.arel_table[:name].eq("Sophie")).select((User.arel_table[:name] + d).as("res")).first.res
165
158
  assert_equal "Sophie15",User.where(User.arel_table[:name].eq("Sophie")).select((User.arel_table[:name] + User.arel_table[:age]).as("res")).first.res
166
159
  assert_equal "SophieSophie",User.where(User.arel_table[:name].eq("Sophie")).select((User.arel_table[:name] + User.arel_table[:name]).as("res")).first.res
167
160
  assert_equal "Sophie2016-05-23",User.where(User.arel_table[:name].eq("Sophie")).select((User.arel_table[:name] + User.arel_table[:created_at]).as("res")).first.res
168
- #concat Integer
161
+ # concat Integer
169
162
  assert_equal 1, User.where((User.arel_table[:age] + 10).eq(33)).count
170
163
  assert_equal 1, User.where((User.arel_table[:age] + "1").eq(6)).count
171
164
  assert_equal 1, User.where((User.arel_table[:age] + User.arel_table[:age]).eq(10)).count
172
- #concat Date
173
- # puts((User.arel_table[:created_at] + 1).as("res").to_sql.inspect)
165
+ # concat Date
166
+ # puts((User.arel_table[:created_at] + 1).as("res").to_sql.inspect)
174
167
  assert_equal "2016-05-24", @myung.select((User.arel_table[:created_at] + 1).as("res")).first.res.to_date.to_s
175
168
  assert_equal "2016-05-25", @myung.select((User.arel_table[:created_at] + 2.day).as("res")).first.res.to_date.to_s
176
169
  end
177
170
 
178
-
179
171
  def test_math_moins
180
172
  d = Date.new(2016,05,20)
181
- #Datediff
173
+ # Datediff
182
174
  assert_equal 8,User.where((User.arel_table[:created_at] - User.arel_table[:created_at]).eq(0)).count
183
175
  assert_equal 3,User.where(User.arel_table[:name].eq("Laure")).select((User.arel_table[:created_at] - d).as("res")).first.res.abs.to_i
184
- #Substraction
176
+ # Substraction
185
177
  assert_equal 0, User.where((User.arel_table[:age] - 10).eq(50)).count
186
178
  assert_equal 0, User.where((User.arel_table[:age] - "10").eq(50)).count
187
179
  end
188
180
 
189
-
190
-
191
181
  def test_rand
192
182
  assert_equal 5,User.where(User.arel_table[:score].eq(20.16)).select(User.arel_table[:id]).order(Arel.rand).take(50).count
193
- #test_alias :random :rand
183
+ # test_alias :random :rand
194
184
  assert_equal 8,User.select(User.arel_table[:name]).order(Arel.rand).take(50).count
195
185
  end
196
186
 
197
-
198
187
  def test_regexp_not_regex
199
188
  if !$sqlite || !$load_extension_disabled
200
189
  assert_equal 1, User.where(User.arel_table[:name] =~ '^M').count
@@ -207,13 +196,11 @@ class ListTest < Minitest::Test
207
196
  assert_equal "replace",User.where(User.arel_table[:name].eq("Lucas")).select(((User.arel_table[:name]).replace(User.arel_table[:name],"replace")).as("res")).first.res
208
197
  end
209
198
 
210
-
211
199
  def test_round
212
200
  assert_equal 1, User.where(((User.arel_table[:age]).round(0)).eq(5.0)).count
213
201
  assert_equal 0, User.where(((User.arel_table[:age]).round(-1)).eq(6.0)).count
214
202
  end
215
203
 
216
-
217
204
  def test_Soundex
218
205
  if !$sqlite || !$load_extension_disabled
219
206
  assert_equal "C540",User.where(User.arel_table[:name].eq("Camille")).select((User.arel_table[:name].soundex).as("res")).first.res.to_s
@@ -222,14 +209,13 @@ class ListTest < Minitest::Test
222
209
  end
223
210
 
224
211
  def test_Sum
225
- #.take(50) because of limit by ORDER BY
212
+ # .take(50) because of limit by ORDER BY
226
213
  assert_equal 110,User.select((User.arel_table[:age].sum + 1).as("res")).take(50).first.res
227
214
  assert_equal 218,User.select((User.arel_table[:age].sum + User.arel_table[:age].sum).as("res")).take(50).first.res
228
215
  assert_equal 327,User.select(((User.arel_table[:age] * 3).sum).as("res")).take(50).first.res
229
216
  assert_equal 2245,User.select(((User.arel_table[:age] * User.arel_table[:age]).sum).as("res")).take(50).first.res
230
217
  end
231
218
 
232
-
233
219
  def test_trim
234
220
  assert_equal "Myun",User.where(User.arel_table[:name].eq("Myung")).select(User.arel_table[:name].rtrim("g").as("res")).first.res
235
221
  assert_equal "yung",User.where(User.arel_table[:name].eq("Myung")).select(User.arel_table[:name].ltrim("M").as("res")).first.res
@@ -243,5 +229,4 @@ class ListTest < Minitest::Test
243
229
  assert_equal 1,User.where(User.arel_table[:name].eq("Myung")).select((User.arel_table[:created_at].wday).as("res")).first.res.to_i
244
230
  assert_equal 0,User.select(d.wday).as("res").first.to_i
245
231
  end
246
-
247
232
  end
@@ -7,7 +7,7 @@ module FakeRecord
7
7
  attr_accessor :visitor
8
8
 
9
9
  def initialize(visitor = nil)
10
- @tables = %w{ users photos developers products}
10
+ @tables = %w{users photos developers products}
11
11
  @columns = {
12
12
  'users' => [
13
13
  Column.new('id', :integer),
@@ -2,9 +2,7 @@ require 'arelx_test_helper'
2
2
 
3
3
  module ArelExtensions
4
4
  module Nodes
5
-
6
5
  describe ArelExtensions::Comparators do
7
-
8
6
  before do
9
7
  @conn = FakeRecord::Base.new
10
8
  Arel::Table.engine = @conn
@@ -39,8 +37,6 @@ module ArelExtensions
39
37
  _(compile(@table[:created_at] >= Date.new(2016, 3, 31)))
40
38
  .must_be_like %{"users"."created_at" >= '2016-03-31'}
41
39
  end
42
-
43
40
  end
44
-
45
41
  end
46
42
  end
@@ -29,7 +29,6 @@ module ArelExtensions
29
29
  .must_be_like %Q[INSERT INTO "users" ("name", "comments", "created_at")
30
30
  ((SELECT 'nom1', 'sdfdsfdsfsdf', '2016-01-01' FROM DUAL) UNION ALL (SELECT 'nom2', 'sdfdsfdsfsdf', '2016-01-01' FROM DUAL))]
31
31
  end
32
-
33
32
  end
34
33
  end
35
34
  end
@@ -2,7 +2,6 @@ require 'arelx_test_helper'
2
2
 
3
3
  module ArelExtensions
4
4
  module BulkInsertSQLlite
5
-
6
5
  describe 'the sqlite visitor can bulk insert' do
7
6
  before do
8
7
  @conn = FakeRecord::Base.new
@@ -31,7 +30,6 @@ module ArelExtensions
31
30
  .must_be_like %Q[INSERT INTO "users" ("id", "name", "comments", "created_at")
32
31
  SELECT 23 AS 'id', 'nom1' AS 'name', 'sdfdsfdsfsdf' AS 'comments', '2016-01-01' AS 'created_at' UNION ALL SELECT 25, 'nom2', 'sdfdsfdsfsdf', '2016-01-01']
33
32
  end
34
-
35
33
  end
36
34
  end
37
35
  end
@@ -70,7 +70,7 @@ module ArelExtensions
70
70
 
71
71
  it "should diff date col and datetime col with AS" do
72
72
  sql = compile((@table[:updated_at] - @table[:created_at]).as('new_name'))
73
- # sql.must_be_like %{(TO_DATE("users"."updated_at") - "users"."created_at") * 86400 AS new_name}
73
+ # sql.must_be_like %{(TO_DATE("users"."updated_at") - "users"."created_at") * 86400 AS new_name}
74
74
  _(sql).must_be_like %{("users"."updated_at" - "users"."created_at") * (CASE WHEN (TRUNC("users"."updated_at", 'DDD') = "users"."updated_at") THEN 1 ELSE 86400 END) AS new_name}
75
75
  end
76
76
 
@@ -104,7 +104,6 @@ module ArelExtensions
104
104
  _(compile(c =~ /\Atest\Z/)).must_be_like %{REGEXP_LIKE("users"."name", '^test$')}
105
105
  _(compile(c !~ /\Ate\Dst\Z/)).must_be_like %{NOT REGEXP_LIKE("users"."name", '^te[^0-9]st$')}
106
106
  end
107
-
108
107
  end
109
108
  end
110
109
  end
@@ -23,7 +23,6 @@ module ArelExtensions
23
23
  end
24
24
 
25
25
  describe "primitive methods" do
26
-
27
26
  it "should be able to recognize equal nodes" do
28
27
  c = @table[:id]
29
28
  _(c == 1).must_be :eql?, (c == 1)
@@ -32,7 +31,6 @@ module ArelExtensions
32
31
 
33
32
  _([c == 1, c == 1].uniq).must_equal [c == 1]
34
33
  end
35
-
36
34
  end
37
35
 
38
36
  # Math Functions
@@ -53,7 +51,7 @@ module ArelExtensions
53
51
  end
54
52
 
55
53
  it "should return right calculations on numbers" do
56
- #puts (@price.abs + 42).inspect
54
+ # puts (@price.abs + 42).inspect
57
55
  _(compile(@price.abs + 42)).must_be_like %{(ABS("products"."price") + 42)}
58
56
  _(compile(@price.ceil + 42)).must_be_like %{(CEIL("products"."price") + 42)}
59
57
  _(compile(@price.floor + 42)).must_be_like %{(FLOOR("products"."price") + 42)}
@@ -93,7 +91,7 @@ module ArelExtensions
93
91
  c = @table[:name]
94
92
  _(compile(c + 'test')).must_be_like %{CONCAT(\"users\".\"name\", 'test')}
95
93
  _(compile(c.length)).must_be_like %{LENGTH("users"."name")}
96
- #puts (c.length.round + 42).inspect
94
+ # puts (c.length.round + 42).inspect
97
95
  _(compile(c.length.round + 42)).must_be_like %{(ROUND(LENGTH("users"."name")) + 42)}
98
96
  _(compile(c.locate('test'))).must_be_like %{LOCATE('test', "users"."name")}
99
97
  _(compile(c & 42)).must_be_like %{FIND_IN_SET(42, "users"."name")}
@@ -119,7 +117,7 @@ module ArelExtensions
119
117
  _(compile(Arel::Nodes.build_quoted('test') + ' chain')).must_be_like %{'test chain'}
120
118
  _(compile(c + '' + c)).must_be_like %{CONCAT(\"users\".\"name\", \"users\".\"name\")}
121
119
 
122
- _(compile(c.md5)).must_be_like %{MD5(\"users\".\"name\")}
120
+ _(compile(c.md5)).must_be_like %{MD5(\"users\".\"name\")}
123
121
  end
124
122
 
125
123
  # Comparators
@@ -135,9 +133,9 @@ module ArelExtensions
135
133
  _(compile(@table[:id] <= 42)).must_match %{"users"."id" <= 42}
136
134
  _(compile((@table[:id] <= 42).as('new_name'))).must_match %{("users"."id" <= 42) AS new_name}
137
135
  _(compile(@table[:id].count.eq 42)).must_match %{COUNT("users"."id") = 42}
138
- #_(compile(@table[:id].count == 42)).must_match %{COUNT("users"."id") = 42} # TODO
139
- #_(compile(@table[:id].count != 42)).must_match %{COUNT("users"."id") != 42}
140
- #_(compile(@table[:id].count >= 42)).must_match %{COUNT("users"."id") >= 42}
136
+ # _(compile(@table[:id].count == 42)).must_match %{COUNT("users"."id") = 42} # TODO
137
+ # _(compile(@table[:id].count != 42)).must_match %{COUNT("users"."id") != 42}
138
+ # _(compile(@table[:id].count >= 42)).must_match %{COUNT("users"."id") >= 42}
141
139
  end
142
140
 
143
141
  it "should accept comparators on dates" do
@@ -201,7 +199,7 @@ module ArelExtensions
201
199
 
202
200
  it "should accept operators on dates with numbers" do
203
201
  c = @table[:created_at]
204
- #u = @table[:updated_at]
202
+ # u = @table[:updated_at]
205
203
  _(compile(c - 42)).must_be_like %{DATE_SUB("users"."created_at", 42)}
206
204
  _(compile(c - @table[:id])).must_be_like %{DATE_SUB("users"."created_at", "users"."id")}
207
205
  end
@@ -300,7 +298,7 @@ module ArelExtensions
300
298
  c = @table[:name]
301
299
  _(compile(c.soundex == 'test')).must_be_like %{SOUNDEX("users"."name") = 'test'}
302
300
  _(compile(c.soundex != 'test')).must_be_like %{SOUNDEX("users"."name") != 'test'}
303
- _(compile(c.length >= 0 )).must_be_like %{LENGTH("users"."name") >= 0}
301
+ _(compile(c.length >= 0)).must_be_like %{LENGTH("users"."name") >= 0}
304
302
  end
305
303
 
306
304
  it "should accept in on select statement" do
@@ -339,7 +337,6 @@ module ArelExtensions
339
337
  end
340
338
 
341
339
  describe "the function in" do
342
-
343
340
  it "should be possible to have nil element in the function IN" do
344
341
  _(compile(@table[:id].in(nil)))
345
342
  .must_be_like %{ISNULL("users"."id")}
@@ -362,14 +359,14 @@ module ArelExtensions
362
359
  it "should be possible to correctly use a Range on an IN" do
363
360
  _(compile(@table[:id].in(1..4)))
364
361
  .must_be_like %{"users"."id" BETWEEN (1) AND (4)}
365
- _(compile(@table[:created_at].in(Date.new(2016, 3, 31) .. Date.new(2017, 3, 31))))
362
+ _(compile(@table[:created_at].in(Date.new(2016, 3, 31)..Date.new(2017, 3, 31))))
366
363
  .must_be_like %{"users"."created_at" BETWEEN ('2016-03-31') AND ('2017-03-31')}
367
364
  end
368
365
 
369
366
  it "should be possible to use a list of values and ranges on an IN" do
370
367
  _(compile(@table[:id].in [1..10, 20, 30, 40..50]))
371
368
  .must_be_like %{("users"."id" IN (20, 30)) OR ("users"."id" BETWEEN (1) AND (10)) OR ("users"."id" BETWEEN (40) AND (50))}
372
- _(compile(@table[:created_at].in(Date.new(2016, 1, 1), Date.new(2016, 2, 1)..Date.new(2016, 2, 28), Date.new(2016, 3, 31) .. Date.new(2017, 3, 31), Date.new(2018, 1, 1))))
369
+ _(compile(@table[:created_at].in(Date.new(2016, 1, 1), Date.new(2016, 2, 1)..Date.new(2016, 2, 28), Date.new(2016, 3, 31)..Date.new(2017, 3, 31), Date.new(2018, 1, 1))))
373
370
  .must_be_like %{ ("users"."created_at" IN ('2016-01-01', '2018-01-01'))
374
371
  OR ("users"."created_at" BETWEEN ('2016-02-01') AND ('2016-02-28'))
375
372
  OR ("users"."created_at" BETWEEN ('2016-03-31') AND ('2017-03-31'))}
@@ -385,12 +382,9 @@ module ArelExtensions
385
382
  _(compile(g[@table[:id], @table[:age]].in(g[1, 42], g[2, 51])))
386
383
  .must_be_like %{("users"."id", "users"."age") IN ((1, 42), (2, 51))}
387
384
  end
388
-
389
-
390
385
  end
391
386
 
392
387
  describe "the function not_in" do
393
-
394
388
  it "should be possible to have nil element in the function IN" do
395
389
  _(compile(@table[:id].not_in nil))
396
390
  .must_be_like %{NOT ISNULL("users"."id")}
@@ -415,7 +409,7 @@ module ArelExtensions
415
409
  _(compile(@table[:id].not_in 1..4))
416
410
  .must_be_like %{NOT ("users"."id" BETWEEN (1) AND (4))}
417
411
  # FIXME: Should use NOT BETWEEN
418
- _(compile(@table[:created_at].not_in Date.new(2016, 3, 31) .. Date.new(2017, 3, 31)))
412
+ _(compile(@table[:created_at].not_in Date.new(2016, 3, 31)..Date.new(2017, 3, 31)))
419
413
  .must_be_like %{NOT ("users"."created_at" BETWEEN ('2016-03-31') AND ('2017-03-31'))}
420
414
  end
421
415
 
@@ -424,12 +418,11 @@ module ArelExtensions
424
418
  .must_be_like %{ ("users"."id" NOT IN (20, 30))
425
419
  AND (NOT ("users"."id" BETWEEN (1) AND (10)))
426
420
  AND (NOT ("users"."id" BETWEEN (40) AND (50)))}
427
- _(compile(@table[:created_at].not_in Date.new(2016, 1, 1), Date.new(2016, 2, 1)..Date.new(2016, 2, 28), Date.new(2016, 3, 31) .. Date.new(2017, 3, 31), Date.new(2018, 1, 1)))
421
+ _(compile(@table[:created_at].not_in Date.new(2016, 1, 1), Date.new(2016, 2, 1)..Date.new(2016, 2, 28), Date.new(2016, 3, 31)..Date.new(2017, 3, 31), Date.new(2018, 1, 1)))
428
422
  .must_be_like %{ ("users"."created_at" NOT IN ('2016-01-01', '2018-01-01'))
429
423
  AND (NOT ("users"."created_at" BETWEEN ('2016-02-01') AND ('2016-02-28')))
430
424
  AND (NOT ("users"."created_at" BETWEEN ('2016-03-31') AND ('2017-03-31')))}
431
425
  end
432
-
433
426
  end
434
427
 
435
428
  it "should be possible to add and substract as much as we want" do
@@ -471,7 +464,6 @@ module ArelExtensions
471
464
  end
472
465
 
473
466
  describe "logical functions" do
474
-
475
467
  it "should know about truth" do
476
468
  _(compile(Arel.false))
477
469
  .must_be_like %{1 = 0}
@@ -544,17 +536,16 @@ module ArelExtensions
544
536
 
545
537
  it "should avoid useless nesting" do
546
538
  c = @table[:id]
547
- _(compile(((c == 1).and(c == 2)) .and ((c == 3).and(c == 4))))
539
+ _(compile(((c == 1).and(c == 2)).and ((c == 3).and(c == 4))))
548
540
  .must_be_like %{("users"."id" = 1) AND ("users"."id" = 2) AND ("users"."id" = 3) AND ("users"."id" = 4)}
549
- _(compile(((c == 1).or(c == 2)) .or ((c == 3).or(c == 4))))
541
+ _(compile(((c == 1).or(c == 2)).or ((c == 3).or(c == 4))))
550
542
  .must_be_like %{("users"."id" = 1) OR ("users"."id" = 2) OR ("users"."id" = 3) OR ("users"."id" = 4)}
551
543
 
552
- _(compile(((c == 1).or(c == 2)) .and ((c == 3).or(c == 4))))
544
+ _(compile(((c == 1).or(c == 2)).and ((c == 3).or(c == 4))))
553
545
  .must_be_like %{(("users"."id" = 1) OR ("users"."id" = 2)) AND (("users"."id" = 3) OR ("users"."id" = 4))}
554
- _(compile(((c == 1).and(c == 2)) .or ((c == 3).and(c == 4))))
546
+ _(compile(((c == 1).and(c == 2)).or ((c == 3).and(c == 4))))
555
547
  .must_be_like %{(("users"."id" = 1) AND ("users"."id" = 2)) OR (("users"."id" = 3) AND ("users"."id" = 4))}
556
548
  end
557
-
558
549
  end
559
550
 
560
551
  puts "AREL VERSION : " + Arel::VERSION.to_s
@@ -3,7 +3,6 @@ require 'date'
3
3
 
4
4
  module ArelExtensions
5
5
  module WthAr
6
-
7
6
  class ListTest < Minitest::Test
8
7
  require 'minitest/pride'
9
8
  def connect_db
@@ -95,7 +94,7 @@ module ArelExtensions
95
94
  scope.select(node.as('res')).to_a.first.res
96
95
  end
97
96
 
98
- #manage the difference between adapters that handle or not json type
97
+ # manage the difference between adapters that handle or not json type
99
98
  def parse_json(h)
100
99
  if @env_db != 'postgresql'
101
100
  JSON.parse("{\"res\":#{h}}")['res']
@@ -117,7 +116,7 @@ module ArelExtensions
117
116
  end
118
117
 
119
118
  def test_ceil
120
- # skip "Sqlite version can't load extension for ceil" if $sqlite && $load_extension_disabled
119
+ # skip "Sqlite version can't load extension for ceil" if $sqlite && $load_extension_disabled
121
120
  assert_equal 2, t(@test, @score.ceil) # 1.62
122
121
  assert_equal(-20, t(@camille, @score.ceil)) # -20.16
123
122
  assert_equal(-20, t(@camille, (@score - 0.5).ceil)) # -20.16
@@ -126,7 +125,7 @@ module ArelExtensions
126
125
  end
127
126
 
128
127
  def test_floor
129
- # skip "Sqlite version can't load extension for floor" if $sqlite && $load_extension_disabled
128
+ # skip "Sqlite version can't load extension for floor" if $sqlite && $load_extension_disabled
130
129
  assert_equal 0, t(@neg, @score.floor)
131
130
  assert_equal 1, t(@test, @score.floor) # 1.62
132
131
  assert_equal(-9, t(@test, (@score - 10).floor)) # 1.62
@@ -220,7 +219,7 @@ module ArelExtensions
220
219
  assert_equal 'Lu', t(@lucas, @name[0,2])
221
220
  assert_equal 'Lu', t(@lucas, @name[0..1])
222
221
 
223
- #substring should accept string function
222
+ # substring should accept string function
224
223
  assert_equal 'Ce', t(@camille, @name.substring(1, 1).concat('e'))
225
224
  assert_equal 'Ce', t(@camille, @name.substring(1, 1)+'e')
226
225
  end
@@ -233,7 +232,7 @@ module ArelExtensions
233
232
  end
234
233
 
235
234
  def test_string_comparators
236
- #skip "Oracle can't use math operators to compare strings" if @env_db == 'oracle' # use GREATEST ?
235
+ # skip "Oracle can't use math operators to compare strings" if @env_db == 'oracle' # use GREATEST ?
237
236
  skip "SQL Server can't use math operators to compare strings" if @env_db == 'mssql' # use GREATEST ?
238
237
  if @env_db == 'postgresql' # may return real boolean
239
238
  assert t(@neg, @name >= 'Mest') == true || t(@neg, @name >= 'Mest') == 't' # depends of ar version
@@ -254,20 +253,19 @@ module ArelExtensions
254
253
  def test_compare_on_date_time_types
255
254
  skip "Sqlite can't compare time" if $sqlite
256
255
  skip "Oracle can't compare time" if @env_db == 'oracle'
257
- #@created_at == 2016-05-23
256
+ # @created_at == 2016-05-23
258
257
  assert_includes [true,'t',1], t(@laure, ArelExtensions::Nodes::Case.new.when(@created_at >= '2014-01-01').then(1).else(0))
259
258
  assert_includes [false,'f',0], t(@laure, ArelExtensions::Nodes::Case.new.when(@created_at >= '2018-01-01').then(1).else(0))
260
- #@updated_at == 2014-03-03 12:42:00
259
+ # @updated_at == 2014-03-03 12:42:00
261
260
  assert_includes [true,'t',1], t(@laure, ArelExtensions::Nodes::Case.new.when(@updated_at >= '2014-03-03 10:10:10').then(1).else(0))
262
261
  assert_includes [false,'f',0], t(@laure, ArelExtensions::Nodes::Case.new.when(@updated_at >= '2014-03-03 13:10:10').then(1).else(0))
263
- #@duration == 12:42:21
264
- #puts @laure.select(ArelExtensions::Nodes::Case.new.when(@duration >= '10:10:10').then(1).else(0)).to_sql
265
- #puts @laure.select(ArelExtensions::Nodes::Case.new.when(@duration >= '14:10:10').then(1).else(0)).to_sql
262
+ # @duration == 12:42:21
263
+ # puts @laure.select(ArelExtensions::Nodes::Case.new.when(@duration >= '10:10:10').then(1).else(0)).to_sql
264
+ # puts @laure.select(ArelExtensions::Nodes::Case.new.when(@duration >= '14:10:10').then(1).else(0)).to_sql
266
265
  assert_includes [true,'t',1], t(@laure, ArelExtensions::Nodes::Case.new.when(@duration >= '10:10:10').then(1).else(0))
267
266
  assert_includes [false,'f',0], t(@laure, ArelExtensions::Nodes::Case.new.when(@duration >= '14:10:10').then(1).else(0))
268
267
  end
269
268
 
270
-
271
269
  def test_regexp_not_regexp
272
270
  skip "Sqlite version can't load extension for regexp" if $sqlite && $load_extension_disabled
273
271
  skip "SQL Server does not know about REGEXP without extensions" if @env_db == 'mssql'
@@ -278,7 +276,7 @@ module ArelExtensions
278
276
  end
279
277
 
280
278
  def test_imatches
281
- #puts User.where(@name.imatches('m%')).to_sql
279
+ # puts User.where(@name.imatches('m%')).to_sql
282
280
  assert_equal 1, User.where(@name.imatches('m%')).count
283
281
  assert_equal 4, User.where(@name.imatches_any(['L%', '%e'])).count
284
282
  assert_equal 7, User.where(@name.idoes_not_match('L%')).count
@@ -298,7 +296,7 @@ module ArelExtensions
298
296
 
299
297
  def test_replace_once
300
298
  skip "TODO"
301
- #skip "Sqlite version can't load extension for locate" if $sqlite && $load_extension_disabled
299
+ # skip "Sqlite version can't load extension for locate" if $sqlite && $load_extension_disabled
302
300
  assert_equal "LuCas", t(@lucas, @name.substring(1, @name.locate('c') - 1) + 'C' + @name.substring(@name.locate('c') + 1, @name.length))
303
301
  end
304
302
 
@@ -307,7 +305,7 @@ module ArelExtensions
307
305
  skip "PostgreSql version can't load extension for soundex" if @env_db == 'postgresql'
308
306
  assert_equal "C540", t(@camille, @name.soundex)
309
307
  assert_equal 9, User.where(@name.soundex.eq(@name.soundex)).count
310
- assert_equal 9 , User.where(@name.soundex == @name.soundex).count
308
+ assert_equal 9, User.where(@name.soundex == @name.soundex).count
311
309
  end
312
310
 
313
311
  def test_change_case
@@ -397,27 +395,27 @@ module ArelExtensions
397
395
  end
398
396
 
399
397
  def test_date_duration
400
- #Year
398
+ # Year
401
399
  assert_equal 2016, t(@lucas, @created_at.year).to_i
402
400
  assert_equal 0, User.where(@created_at.year.eq("2012")).count
403
- #Month
401
+ # Month
404
402
  assert_equal 5, t(@camille, @created_at.month).to_i
405
403
  assert_equal 9, User.where(@created_at.month.eq("05")).count
406
- #Week
404
+ # Week
407
405
  assert_equal(@env_db == 'mssql' ? 22 : 21, t(@arthur, @created_at.week).to_i)
408
406
  assert_equal 9, User.where(@created_at.month.eq("05")).count
409
- #Day
407
+ # Day
410
408
  assert_equal 23, t(@laure, @created_at.day).to_i
411
409
  assert_equal 0, User.where(@created_at.day.eq("05")).count
412
410
 
413
- #skip "manage DATE" if @env_db == 'oracle'
414
- #Hour
411
+ # skip "manage DATE" if @env_db == 'oracle'
412
+ # Hour
415
413
  assert_equal 0, t(@laure, @created_at.hour).to_i
416
414
  assert_equal 12, t(@lucas, @updated_at.hour).to_i
417
- #Minute
415
+ # Minute
418
416
  assert_equal 0, t(@laure, @created_at.minute).to_i
419
417
  assert_equal 42, t(@lucas, @updated_at.minute).to_i
420
- #Second
418
+ # Second
421
419
  assert_equal 0, t(@laure, @created_at.second).to_i
422
420
  assert_equal 0, t(@lucas, @updated_at.second).to_i
423
421
  end
@@ -450,13 +448,13 @@ module ArelExtensions
450
448
 
451
449
  datetime1 = Time.utc(2014, 3, 3, 12, 42, 0)
452
450
  # Pull Request #5 tests
453
- #puts (@created_at + durPos).cast(:date).to_sql
451
+ # puts (@created_at + durPos).cast(:date).to_sql
454
452
  assert_includes [date2,"2026-05-23"], t(@test,(@created_at + durPos).cast(:date))
455
453
  assert_includes [date3,"2006-05-23"], t(@test,(@created_at + durNeg).cast(:date))
456
454
 
457
- #puts (@created_at + @created_at.day).cast(:date).to_sql
455
+ # puts (@created_at + @created_at.day).cast(:date).to_sql
458
456
  assert_includes [date4,"2016-06-15"], t(@test,(@created_at + @created_at.day).cast(:date))
459
- #puts (@created_at - @created_at.day).cast(:date).to_sql
457
+ # puts (@created_at - @created_at.day).cast(:date).to_sql
460
458
  assert_includes [date5,"2016-04-30"], t(@test,(@created_at - @created_at.day).cast(:date))
461
459
 
462
460
  assert_includes [datetime1 + 42.seconds,"2014-03-03 12:42:42 UTC"], t(@lucas,(@updated_at + @updated_at.minute))
@@ -464,18 +462,18 @@ module ArelExtensions
464
462
 
465
463
  # (@updated_at + Arel.duration('s',(@updated_at.hour*60 + @updated_at.minute))).to_sql
466
464
  assert_includes [datetime1 + (12*60+42).seconds,"2014-03-03 12:54:42 UTC"],
467
- t(@lucas,(@updated_at + Arel.duration('s',(@updated_at.hour*60 + @updated_at.minute))))
465
+ t(@lucas,(@updated_at + Arel.duration('s',(@updated_at.hour*60 + @updated_at.minute))))
468
466
 
469
467
  assert_includes [datetime1 + (12*60+42).minutes,"2014-03-04 01:24:00 UTC"],
470
- t(@lucas,(@updated_at + Arel.duration('mn',(@updated_at.hour*60 + @updated_at.minute))))
468
+ t(@lucas,(@updated_at + Arel.duration('mn',(@updated_at.hour*60 + @updated_at.minute))))
471
469
 
472
470
  assert_includes ["2024-03-03"], t(@lucas,(@updated_at + durPos).format('%Y-%m-%d'))
473
- #puts (@updated_at - durPos).to_sql
471
+ # puts (@updated_at - durPos).to_sql
474
472
  assert_includes ["2004-03-03"], t(@lucas,(@updated_at - durPos).format('%Y-%m-%d'))
475
473
 
476
474
 
477
475
  # we test with the ruby object or the string because some adapters don't return an object Date
478
- # end
476
+ # end
479
477
  end
480
478
 
481
479
  # TODO; cast types
@@ -496,27 +494,27 @@ module ArelExtensions
496
494
  assert_equal Time, t(@lucas,@updated_at.cast(:string).cast(:datetime)).class
497
495
  assert_equal Time, t(@lucas,@updated_at.cast(:time)).class
498
496
 
499
- assert_equal "2014-03-03 12:42:00", t(@lucas,@updated_at.cast(:string)) unless @env_db == 'mssql' #locale dependent
497
+ assert_equal "2014-03-03 12:42:00", t(@lucas,@updated_at.cast(:string)) unless @env_db == 'mssql' # locale dependent
500
498
  assert_equal Date.parse("2014-03-03"), t(@lucas,Arel::Nodes.build_quoted('2014-03-03').cast(:date))
501
499
  assert_equal Date.parse("5014-03-03"), t(@lucas,(@age.cast(:string) + '014-03-03').cast(:date))
502
500
  assert_equal Time.parse("2014-03-03 12:42:00 UTC"), t(@lucas,@updated_at.cast(:string).cast(:datetime))
503
501
  assert_equal Date.parse("2014-03-03"), t(@lucas,@updated_at.cast(:date))
504
- assert_equal "12:42:00", t(@lucas,@updated_at.cast(:time).cast(:string)).split('.').first unless @env_db == 'oracle' #DateTime
502
+ assert_equal "12:42:00", t(@lucas,@updated_at.cast(:time).cast(:string)).split('.').first unless @env_db == 'oracle' # DateTime
505
503
  end
506
504
  end
507
505
 
508
506
  def test_is_null
509
- #puts User.where(@age.is_null).select(@name).to_sql
510
- #puts @age.is_null
511
- #puts @age.is_null.inspect
512
- #puts @age.is_null.to_sql
513
- #puts @age=='34'
507
+ # puts User.where(@age.is_null).select(@name).to_sql
508
+ # puts @age.is_null
509
+ # puts @age.is_null.inspect
510
+ # puts @age.is_null.to_sql
511
+ # puts @age=='34'
514
512
  assert_equal "Test", User.select(@name).where(@age.is_null.to_sql).first.name
515
513
  end
516
514
 
517
515
  def test_math_plus
518
516
  d = Date.new(1997, 6, 15)
519
- #Concat String
517
+ # Concat String
520
518
  assert_equal "SophiePhan", t(@sophie, @name + "Phan")
521
519
  assert_equal "Sophie2", t(@sophie, @name + 2)
522
520
  assert_equal "Sophie1997-06-15", t(@sophie, @name + d)
@@ -525,25 +523,24 @@ module ArelExtensions
525
523
  assert_equal "SophieSophieSophie", t(@sophie, @name + @name + @name)
526
524
  assert_equal "SophieSophieSophie", t(@sophie, @name.concat(@name.concat(@name)))
527
525
  assert_equal "SophieSophieSophie", t(@sophie, @name.concat(@name).concat(@name))
528
- #FIXME: should work as expected in Oracle
526
+ # FIXME: should work as expected in Oracle
529
527
  assert_equal "Sophie2016-05-23", t(@sophie, @name + @created_at) unless @env_db == 'oracle'
530
- #concat Integer
528
+ # concat Integer
531
529
  assert_equal 1, User.where((@age + 10).eq(33)).count
532
530
  assert_equal 1, User.where((@age + "1").eq(6)).count
533
531
  assert_equal 1, User.where((@age + @age).eq(10)).count
534
- #concat Date
535
- #puts((User.arel_table[:created_at] + 1).as("res").to_sql.inspect)
532
+ # concat Date
533
+ # puts((User.arel_table[:created_at] + 1).as("res").to_sql.inspect)
536
534
  assert_equal "2016-05-24", t(@myung, @created_at + 1).to_date.to_s
537
535
  assert_equal "2016-05-25", t(@myung, @created_at + 2.day).to_date.to_s
538
536
  end
539
537
 
540
-
541
538
  def test_math_minus
542
539
  d = Date.new(2016, 5, 20)
543
- #Datediff
540
+ # Datediff
544
541
  assert_equal 9, User.where((@created_at - @created_at).eq(0)).count
545
542
  assert_equal 3, @laure.select((@created_at - d).as("res")).first.res.abs.to_i
546
- #Substraction
543
+ # Substraction
547
544
  assert_equal 0, User.where((@age - 10).eq(50)).count
548
545
  assert_equal 0, User.where((@age - "10").eq(50)).count
549
546
  # assert_equal 0, User.where((@age - 9.5).eq(50.5)).count # should work: TODO
@@ -551,7 +548,7 @@ module ArelExtensions
551
548
  end
552
549
 
553
550
  def test_wday
554
- #d = Date.new(2016, 6, 26)
551
+ # d = Date.new(2016, 6, 26)
555
552
  assert_equal(@env_db == 'oracle' || @env_db == 'mssql' ? 2 : 1, t(@myung, @created_at.wday).to_i) # monday
556
553
  end
557
554
 
@@ -587,41 +584,41 @@ module ArelExtensions
587
584
  assert_equal 0, t(@arthur, @score.when(65.62,1).else(0)-1)
588
585
  assert_equal "11", t(@arthur, @score.when(65.62).then("1").else("0")+"1")
589
586
  assert_equal 66.62, t(@arthur, @score.when(65.62).then(@score).else(@score)+1)
590
- assert_equal "65.621", t(@arthur, @score.when(65.62).then(@score.cast(:string)).else(@score.cast(:string))+1).tr('0','') #tr is here because of precision on cast for some DBMS
587
+ assert_equal "65.621", t(@arthur, @score.when(65.62).then(@score.cast(:string)).else(@score.cast(:string))+1).tr('0','') # tr is here because of precision on cast for some DBMS
591
588
  end
592
589
 
593
590
  def test_format_numbers
594
- #score of Arthur = 65.62
591
+ # score of Arthur = 65.62
595
592
  skip " Works with SQLite if the version used knows printf" if $sqlite
596
593
 
597
- assert_equal "Wrong Format" , t(@arthur, @score.format_number("$ %...234.6F €","fr_FR"))
598
- assert_equal "AZERTY65,62" , t(@arthur, @score.format_number("AZERTY%.2f","fr_FR"))
599
- assert_equal "65,62AZERTY" , t(@arthur, @score.format_number("%.2fAZERTY","fr_FR"))
600
- assert_equal "$ 65.62 €" , t(@arthur, @score.format_number("$ %.2f €","en_US"))
601
- assert_equal "$ 66 €" , t(@arthur, @score.format_number("$ %.0f €","en_US"))
602
- assert_equal "$ 0065,62 €" , t(@arthur, @score.format_number("$ %07.2f €","fr_FR"))
603
- assert_equal "$ 65,62 €" , t(@arthur, @score.format_number("$ %-07.2f €","fr_FR"))
604
- assert_equal "$ 65,62 €" , t(@arthur, @score.format_number("$ %-7.2f €","fr_FR"))
605
- assert_equal "$ 65,62 €" , t(@arthur, @score.format_number("$ % 7.2f €","fr_FR"))
606
- assert_equal "$ 65,6 €" , t(@arthur, @score.format_number("$ % 7.1f €","fr_FR"))
607
- assert_equal "$ +65,62 €" , t(@arthur, @score.format_number("$ % +7.2f €","fr_FR"))
608
- assert_equal "$ +065,62 €" , t(@arthur, @score.format_number("$ %0+7.2f €","fr_FR"))
594
+ assert_equal "Wrong Format", t(@arthur, @score.format_number("$ %...234.6F €","fr_FR"))
595
+ assert_equal "AZERTY65,62", t(@arthur, @score.format_number("AZERTY%.2f","fr_FR"))
596
+ assert_equal "65,62AZERTY", t(@arthur, @score.format_number("%.2fAZERTY","fr_FR"))
597
+ assert_equal "$ 65.62 €", t(@arthur, @score.format_number("$ %.2f €","en_US"))
598
+ assert_equal "$ 66 €", t(@arthur, @score.format_number("$ %.0f €","en_US"))
599
+ assert_equal "$ 0065,62 €", t(@arthur, @score.format_number("$ %07.2f €","fr_FR"))
600
+ assert_equal "$ 65,62 €", t(@arthur, @score.format_number("$ %-07.2f €","fr_FR"))
601
+ assert_equal "$ 65,62 €", t(@arthur, @score.format_number("$ %-7.2f €","fr_FR"))
602
+ assert_equal "$ 65,62 €", t(@arthur, @score.format_number("$ % 7.2f €","fr_FR"))
603
+ assert_equal "$ 65,6 €", t(@arthur, @score.format_number("$ % 7.1f €","fr_FR"))
604
+ assert_equal "$ +65,62 €", t(@arthur, @score.format_number("$ % +7.2f €","fr_FR"))
605
+ assert_equal "$ +065,62 €", t(@arthur, @score.format_number("$ %0+7.2f €","fr_FR"))
609
606
  assert_includes ["$ 6,56e1 €","$ 6,56e+01 €"], t(@arthur, @score.format_number("$ %.2e €","fr_FR"))
610
607
  assert_includes ["$ 6,56E1 €","$ 6,56E+01 €"], t(@arthur, @score.format_number("$ %.2E €","fr_FR"))
611
608
  assert_includes ["$ 6,562E1 €","$ 6,562E+01 €"], t(@arthur, @score.format_number("$ %.3E €","fr_FR"))
612
- assert_equal "123 456 765,6" , t(@arthur, (@score+123456700).format_number("%.1f","sv_SE")).gsub("\u00A0"," ") #some DBMS put no-break space here (it makes sense thus)
613
- assert_equal "123456765,6" , t(@arthur, (@score+123456700).format_number("%.1f","fr_FR")).gsub("\u00A0","") #because SqlServer does it like no one else
614
- assert_equal "123,456,765.6" , t(@arthur, (@score+123456700).format_number("%.1f","en_US"))
615
- assert_equal " 123,456,765.6" , t(@arthur, (@score+123456700).format_number("%16.1f","en_US"))
616
- assert_equal "$ 0,00 €" , t(@arthur, @score.when(65.62).then(Arel.sql("null")).else(1).format_number("$ %.2f €","fr_FR"))
617
- assert_equal "$ 0,00 €" , t(@arthur, (@score-65.62).format_number("$ %.2f €","fr_FR"))
609
+ assert_equal "123 456 765,6", t(@arthur, (@score+123456700).format_number("%.1f","sv_SE")).gsub("\u00A0"," ") # some DBMS put no-break space here (it makes sense thus)
610
+ assert_equal "123456765,6", t(@arthur, (@score+123456700).format_number("%.1f","fr_FR")).gsub("\u00A0","") # because SqlServer does it like no one else
611
+ assert_equal "123,456,765.6", t(@arthur, (@score+123456700).format_number("%.1f","en_US"))
612
+ assert_equal " 123,456,765.6", t(@arthur, (@score+123456700).format_number("%16.1f","en_US"))
613
+ assert_equal "$ 0,00 €", t(@arthur, @score.when(65.62).then(Arel.sql("null")).else(1).format_number("$ %.2f €","fr_FR"))
614
+ assert_equal "$ 0,00 €", t(@arthur, (@score-65.62).format_number("$ %.2f €","fr_FR"))
618
615
  end
619
616
 
620
617
  def test_accent_insensitive
621
618
  skip "SQLite is natively Case Insensitive and Accent Sensitive" if $sqlite
622
619
  skip "Not finished" if @env_db == 'mysql'
623
620
  # actual comments value: "arrêté"
624
- #AI & CI
621
+ # AI & CI
625
622
  if !['postgresql'].include?(@env_db) # Extension unaccent required on PG
626
623
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_imatches("arrêté")).then("1").else("0"))
627
624
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_imatches("arrete")).then("1").else("0"))
@@ -629,7 +626,7 @@ module ArelExtensions
629
626
  assert_equal "0", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_imatches("arretez")).then("1").else("0"))
630
627
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_imatches("Arrete")).then("1").else("0"))
631
628
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_imatches("Arrêté")).then("1").else("0"))
632
- #AI & CS
629
+ # AI & CS
633
630
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_matches("arrêté")).then("1").else("0"))
634
631
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_matches("arrete")).then("1").else("0"))
635
632
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_matches("àrrétè")).then("1").else("0"))
@@ -639,7 +636,7 @@ module ArelExtensions
639
636
  assert_equal "0", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.ai_matches("Arrêté")).then("1").else("0"))
640
637
  end
641
638
  end
642
- #AS & CI
639
+ # AS & CI
643
640
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.imatches("arrêté")).then("1").else("0"))
644
641
  if !['mysql'].include?(@env_db) # CI => AI in utf8 (AI not possible in latin1)
645
642
  assert_equal "0", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.imatches("arrete")).then("1").else("0"))
@@ -650,7 +647,7 @@ module ArelExtensions
650
647
  assert_equal "0", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.imatches("Arrete")).then("1").else("0"))
651
648
  end
652
649
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.imatches("Arrêté")).then("1").else("0"))
653
- #AS & CS
650
+ # AS & CS
654
651
  assert_equal "1", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.smatches("arrêté")).then("1").else("0"))
655
652
  assert_equal "0", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.smatches("arrete")).then("1").else("0"))
656
653
  assert_equal "0", t(@arthur,ArelExtensions::Nodes::Case.new.when(@comments.smatches("àrrétè")).then("1").else("0"))
@@ -664,29 +661,29 @@ module ArelExtensions
664
661
  assert_equal 9, User.where(@ut[:name].in(@ut.project(@ut[:name]).order(@ut[:name]))).count
665
662
  if !['mysql'].include?(@env_db) # MySql can't have limit in IN subquery
666
663
  assert_equal 2, User.where(:name => User.select(:name).order(:name).limit(2)).count
667
- #assert_equal 6, User.where(:name => User.select(:name).order(:name).offset(2)).count
664
+ # assert_equal 6, User.where(:name => User.select(:name).order(:name).offset(2)).count
668
665
  end
669
666
  end
670
667
 
671
668
  def test_in_with_nil
672
- assert_equal true , @myung.where(@age.in(1)).blank?
673
- assert_equal false , @myung.where(@age.in(23)).blank?
674
- assert_equal true , @myung.where(@age.in([1])).blank?
675
- assert_equal true , @myung.where(@age.in([1,2])).blank?
676
- assert_equal false , @myung.where(@age.in([1,23])).blank?
677
- assert_equal true , @myung.where(@age.in(nil)).blank?
678
- assert_equal true , @myung.where(@age.in([nil])).blank?
679
- assert_equal true , @myung.where(@age.in([nil,1])).blank?
680
- assert_equal false , @myung.where(@age.in([nil,23])).blank?
681
- assert_equal true , @myung.where(@age.in([nil,1,2])).blank?
682
- assert_equal false , @myung.where(@age.in([nil,1,23])).blank?
683
- assert_equal true , @test.where(@age.in(1)).blank?
684
- assert_equal true , @test.where(@age.in([1])).blank?
685
- assert_equal true , @test.where(@age.in([1,2])).blank?
686
- assert_equal false , @test.where(@age.in(nil)).blank?
687
- assert_equal false , @test.where(@age.in([nil])).blank?
688
- assert_equal false , @test.where(@age.in([nil,1])).blank?
689
- assert_equal false , @test.where(@age.in([nil,1,2])).blank?
669
+ assert_equal true, @myung.where(@age.in(1)).blank?
670
+ assert_equal false, @myung.where(@age.in(23)).blank?
671
+ assert_equal true, @myung.where(@age.in([1])).blank?
672
+ assert_equal true, @myung.where(@age.in([1,2])).blank?
673
+ assert_equal false, @myung.where(@age.in([1,23])).blank?
674
+ assert_equal true, @myung.where(@age.in(nil)).blank?
675
+ assert_equal true, @myung.where(@age.in([nil])).blank?
676
+ assert_equal true, @myung.where(@age.in([nil,1])).blank?
677
+ assert_equal false, @myung.where(@age.in([nil,23])).blank?
678
+ assert_equal true, @myung.where(@age.in([nil,1,2])).blank?
679
+ assert_equal false, @myung.where(@age.in([nil,1,23])).blank?
680
+ assert_equal true, @test.where(@age.in(1)).blank?
681
+ assert_equal true, @test.where(@age.in([1])).blank?
682
+ assert_equal true, @test.where(@age.in([1,2])).blank?
683
+ assert_equal false, @test.where(@age.in(nil)).blank?
684
+ assert_equal false, @test.where(@age.in([nil])).blank?
685
+ assert_equal false, @test.where(@age.in([nil,1])).blank?
686
+ assert_equal false, @test.where(@age.in([nil,1,2])).blank?
690
687
  end
691
688
 
692
689
  def test_scope_with_in_plus_new
@@ -700,40 +697,40 @@ module ArelExtensions
700
697
  end
701
698
 
702
699
  def test_is_not_null
703
- assert_equal false , @myung.where(@age.is_not_null).blank?
704
- assert_equal true , @test.where(@age.is_not_null).blank?
700
+ assert_equal false, @myung.where(@age.is_not_null).blank?
701
+ assert_equal true, @test.where(@age.is_not_null).blank?
705
702
  end
706
703
 
707
704
  def test_not_in_with_nil
708
- assert_equal false , @myung.where(@age.not_in(1)).blank?
709
- assert_equal true , @myung.where(@age.not_in(23)).blank?
710
- assert_equal false , @myung.where(@age.not_in([1])).blank?
711
- assert_equal false , @myung.where(@age.not_in([1,2])).blank?
712
- assert_equal true , @myung.where(@age.not_in([1,23])).blank?
713
- assert_equal false , @myung.where(@age.not_in(nil)).blank?
714
- assert_equal false , @myung.where(@age.not_in([nil])).blank?
715
- assert_equal false , @myung.where(@age.not_in([nil,1])).blank?
716
- assert_equal true , @myung.where(@age.not_in([nil,23])).blank?
717
- assert_equal false , @myung.where(@age.not_in([nil,1,2])).blank?
718
- assert_equal true , @myung.where(@age.not_in([nil,1,23])).blank?
719
-
720
- assert_equal false , @myung.where(@age.not_in(1..2)).blank?
721
-
722
- #if the column is null, the entry will never be selected with not in (like every DBMS does)
723
- #assert_equal false , @test.where(@age.not_in(1)).blank?
724
- #assert_equal false , @test.where(@age.not_in([1])).blank?
725
- #assert_equal false , @test.where(@age.not_in([1,2])).blank?
726
- #assert_equal true , @test.where(@age.not_in(nil)).blank?
727
- #assert_equal true , @test.where(@age.not_in([nil])).blank?
728
- #assert_equal true , @test.where(@age.not_in([nil,1])).blank?
729
- #assert_equal true , @test.where(@age.not_in([nil,1,2])).blank?
705
+ assert_equal false, @myung.where(@age.not_in(1)).blank?
706
+ assert_equal true, @myung.where(@age.not_in(23)).blank?
707
+ assert_equal false, @myung.where(@age.not_in([1])).blank?
708
+ assert_equal false, @myung.where(@age.not_in([1,2])).blank?
709
+ assert_equal true, @myung.where(@age.not_in([1,23])).blank?
710
+ assert_equal false, @myung.where(@age.not_in(nil)).blank?
711
+ assert_equal false, @myung.where(@age.not_in([nil])).blank?
712
+ assert_equal false, @myung.where(@age.not_in([nil,1])).blank?
713
+ assert_equal true, @myung.where(@age.not_in([nil,23])).blank?
714
+ assert_equal false, @myung.where(@age.not_in([nil,1,2])).blank?
715
+ assert_equal true, @myung.where(@age.not_in([nil,1,23])).blank?
716
+
717
+ assert_equal false, @myung.where(@age.not_in(1..2)).blank?
718
+
719
+ # if the column is null, the entry will never be selected with not in (like every DBMS does)
720
+ # assert_equal false , @test.where(@age.not_in(1)).blank?
721
+ # assert_equal false , @test.where(@age.not_in([1])).blank?
722
+ # assert_equal false , @test.where(@age.not_in([1,2])).blank?
723
+ # assert_equal true , @test.where(@age.not_in(nil)).blank?
724
+ # assert_equal true , @test.where(@age.not_in([nil])).blank?
725
+ # assert_equal true , @test.where(@age.not_in([nil,1])).blank?
726
+ # assert_equal true , @test.where(@age.not_in([nil,1,2])).blank?
730
727
  end
731
728
 
732
729
  def test_in_on_grouping
733
730
  skip "We should modify the visitor of IN to make it work" if $sqlite || @env_db == 'mssql'
734
- assert_equal 2 , User.where(Arel.tuple(@name,@age).in(Arel.tuple('Myung',23),Arel.tuple('Arthur',21))).count
735
- assert_equal 1 , User.where(Arel.tuple(@name,@age).in(Arel.tuple('Myung',23))).count
736
- assert_equal 0 , User.where(Arel.tuple(@name,@age).in([])).count
731
+ assert_equal 2, User.where(Arel.tuple(@name,@age).in(Arel.tuple('Myung',23),Arel.tuple('Arthur',21))).count
732
+ assert_equal 1, User.where(Arel.tuple(@name,@age).in(Arel.tuple('Myung',23))).count
733
+ assert_equal 0, User.where(Arel.tuple(@name,@age).in([])).count
737
734
  end
738
735
 
739
736
  def test_alias_shortened
@@ -742,29 +739,29 @@ module ArelExtensions
742
739
  at = User.arel_table.alias('azerty' * 15)
743
740
  assert_equal "\"user_tests\" \"#{new_alias}\"".downcase, User.arel_table.alias('azerty' * 15).to_sql.downcase
744
741
  assert_equal '"user_tests" "u"'.downcase, User.arel_table.alias('u').to_sql.downcase
745
- assert_equal %Q[SELECT "#{new_alias}"."id" FROM "user_tests" "#{new_alias}"].downcase,
746
- User.select(at[:id]).from(at).to_sql.downcase
742
+ assert_equal %Q[SELECT "#{new_alias}"."id" FROM "user_tests" "#{new_alias}"].downcase,
743
+ User.select(at[:id]).from(at).to_sql.downcase
747
744
  end
748
745
  end
749
746
 
750
747
  def test_stat_functions
751
748
  skip "SQLite doesn't work for most on this functions" if $sqlite
752
- #puts t(User.where(nil), @score.average)
753
- #puts t(User.where(nil), @score.variance(unbiased: true))
754
- #puts t(User.where(nil), @score.variance(unbiased: false))
755
- #puts t(User.where(nil), @score.std(unbiased: true))
756
- #puts t(User.where(nil), @score.std(unbiased: false))
749
+ # puts t(User.where(nil), @score.average)
750
+ # puts t(User.where(nil), @score.variance(unbiased: true))
751
+ # puts t(User.where(nil), @score.variance(unbiased: false))
752
+ # puts t(User.where(nil), @score.std(unbiased: true))
753
+ # puts t(User.where(nil), @score.std(unbiased: false))
757
754
 
758
755
  assert ( 15.43222 - t(User.where(nil), @score.average)).abs < 0.01
759
756
  assert (539.79804 - t(User.where(nil), @score.variance)).abs < 0.01
760
757
  assert (479.82048 - t(User.where(nil), @score.variance(unbiased: false))).abs < 0.01
761
758
  assert ( 23.23355 - t(User.where(nil), @score.std)).abs < 0.01
762
759
  assert ( 21.90480 - t(User.where(nil), @score.std(unbiased: false))).abs < 0.01
763
- skip "Not Yet Implemented" #if !['postgresql'].include?(@env_db)
760
+ skip "Not Yet Implemented" # if !['postgresql'].include?(@env_db)
764
761
  assert_equal 2, User.select(@score.std(group: Arel.when(@name > "M").then(0).else(1)).as('res')).map{|e| e['res']}.uniq.length
765
- assert_equal 2, User.select(@score.variance(group: Arel.when(@name > "M").then(0).else(1)).as('res')).map{|e|e['res']}.uniq.length
766
- assert_equal 2, User.select(@score.sum(group: Arel.when(@name > "M").then(0).else(1)).as('res')).map{|e|e['res']}.uniq.length
767
- assert_equal 2, User.select(@comments.group_concat(group: Arel.when(@name > "M").then(0).else(1)).as('res')).map{|e|e['res']}.uniq.length
762
+ assert_equal 2, User.select(@score.variance(group: Arel.when(@name > "M").then(0).else(1)).as('res')).map{|e| e['res']}.uniq.length
763
+ assert_equal 2, User.select(@score.sum(group: Arel.when(@name > "M").then(0).else(1)).as('res')).map{|e| e['res']}.uniq.length
764
+ assert_equal 2, User.select(@comments.group_concat(group: Arel.when(@name > "M").then(0).else(1)).as('res')).map{|e| e['res']}.uniq.length
768
765
  end
769
766
 
770
767
  def test_levenshtein_distance
@@ -776,7 +773,7 @@ module ArelExtensions
776
773
 
777
774
  def test_json
778
775
  skip "Can't be tested on travis"
779
- #creation
776
+ # creation
780
777
  assert_equal 'Arthur', t(@arthur,Arel.json(@name))
781
778
  assert_equal ["Arthur","Arthur"], parse_json(t(@arthur,Arel.json(@name,@name)))
782
779
  assert_equal ({"Arthur" => "Arthur", "Arthur2" => "ArthurArthur"}), parse_json(t(@arthur,Arel.json({@name => @name,@name+"2" => @name+@name})))
@@ -785,29 +782,29 @@ module ArelExtensions
785
782
 
786
783
  # aggregate
787
784
  assert_equal ({"5" => "Lucas", "15" => "Sophie", "23" => "Myung", "25" => "Laure"}),
788
- parse_json(t(User.group(:score).where(@age.is_not_null).where(@score == 20.16),Arel.json({@age => @name}).group(false)))
785
+ parse_json(t(User.group(:score).where(@age.is_not_null).where(@score == 20.16),Arel.json({@age => @name}).group(false)))
789
786
  assert_equal ({"5" => "Lucas", "15" => "Sophie", "23" => "Myung", "25" => "Laure", "Laure"=>25, "Lucas"=>5, "Myung"=>23, "Sophie"=>15}),
790
- parse_json(t(User.group(:score).where(@age.is_not_null).where(@score == 20.16),Arel.json({@age => @name,@name => @age}).group(false)))
787
+ parse_json(t(User.group(:score).where(@age.is_not_null).where(@score == 20.16),Arel.json({@age => @name,@name => @age}).group(false)))
791
788
  assert_equal ([{"5" => "Lucas"},{ "15" => "Sophie"},{ "23" => "Myung"},{ "25" => "Laure"}]),
792
- parse_json(t(User.group(:score).where(@age.is_not_null).where(@score == 20.16).select(@score),Arel.json({@age => @name}).group(true,[@age])))
789
+ parse_json(t(User.group(:score).where(@age.is_not_null).where(@score == 20.16).select(@score),Arel.json({@age => @name}).group(true,[@age])))
793
790
 
794
- #puts User.group(:score).where(@age.is_not_null).where(@score == 20.16).select(@score,Arel.json({@age => @name}).group(true,[@age])).to_sql
795
- #puts User.group(:score).where(@age.is_not_null).where(@score == 20.16).select(@score,Arel.json({@age => @name}).group(true,[@age])).to_a
791
+ # puts User.group(:score).where(@age.is_not_null).where(@score == 20.16).select(@score,Arel.json({@age => @name}).group(true,[@age])).to_sql
792
+ # puts User.group(:score).where(@age.is_not_null).where(@score == 20.16).select(@score,Arel.json({@age => @name}).group(true,[@age])).to_a
796
793
 
797
794
  skip "Not Yet Implemented" if $sqlite || ['oracle','mssql'].include?(@env_db)
798
- #get
795
+ # get
799
796
  h1 = Arel.json({@name => @name+@name,@name+"2" => 1})
800
797
  assert_equal "ArthurArthur", parse_json(t(@arthur,h1.get(@name)))
801
798
  h2 = Arel.json([{age: @age},{name: @name,score: @score}])
802
799
  assert_equal ({"age" => 21}), parse_json(t(@arthur,h2.get(0)))
803
800
  assert_equal 21, parse_json(t(@arthur,h2.get(0).get('age')))
804
801
  assert_nil t(@arthur,h2.get('age'))
805
- #set
802
+ # set
806
803
  assert_equal ({"Arthur" => ["toto", "tata"], "Arthur2" => 1}), parse_json(t(@arthur,h1.set(@name, ['toto','tata'])))
807
804
  assert_equal ({"Arthur" => "ArthurArthur", "Arthur2" => 1, "Arthur3" => 2}), parse_json(t(@arthur,h1.set(@name+"3",2)))
808
805
  assert_equal ({"Arthur" => "ArthurArthur", "Arthur2" => 1, "Arthur3" => nil}), parse_json(t(@arthur,h1.set(@name+"3",nil)))
809
806
  assert_equal ({"Arthur" => "ArthurArthur", "Arthur2" => 1, "Arthur3" => {"a" => 2}}), parse_json(t(@arthur,h1.set(@name+"3",{a: 2})))
810
- #merge
807
+ # merge
811
808
  assert_equal ({"Arthur" => ["toto", "tata"], "Arthur2" => 1, "Arthur3" => 2}), parse_json(t(@arthur,h1.merge({@name => ['toto','tata']},{@name+"3" => 2})))
812
809
  assert_equal ({"Arthur" => ["toto", "tata"], "Arthur2" => 1, "Arthur3" => 2}), parse_json(t(@arthur,h1.merge({@name => ['toto','tata'], @name+"3" => 2})))
813
810
  assert_equal ({"Arthur" => "ArthurArthur","Arthur2" => 1}), parse_json(t(@arthur,h1.merge({})))
@@ -815,7 +812,7 @@ module ArelExtensions
815
812
 
816
813
  def test_as_on_everything
817
814
  name = @arthur.select(@name.as('NaMe')).first.attributes
818
- assert_equal 'Arthur', name["NaMe"] || name["name"] #because of Oracle
815
+ assert_equal 'Arthur', name["NaMe"] || name["name"] # because of Oracle
819
816
  assert_equal 'Arthur', @arthur.select(@name.as('Na Me')).first.attributes["Na Me"]
820
817
  assert_equal 'ArthurArthur', @arthur.select((@name+@name).as('Na-Me')).first.attributes["Na-Me"]
821
818
  end
@@ -823,8 +820,6 @@ module ArelExtensions
823
820
  def test_exists_in_subquery
824
821
  assert User.where(User.where(nil).arel.exists).first
825
822
  end
826
-
827
-
828
823
  end
829
824
  end
830
825
  end