kasket 0.7.7 → 0.7.8
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.
- data/lib/kasket.rb +1 -1
- data/lib/kasket/configuration_mixin.rb +3 -17
- data/test/parser_test.rb +9 -9
- metadata +3 -3
data/lib/kasket.rb
CHANGED
@@ -31,11 +31,9 @@ module Kasket
|
|
31
31
|
|
32
32
|
def kasket_key_for(attribute_value_pairs)
|
33
33
|
key = attribute_value_pairs.map do |attribute, value|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
attribute.to_s + '=' + connection.quote(value, column)
|
34
|
+
column = columns_hash[attribute.to_s]
|
35
|
+
value = nil if value.blank?
|
36
|
+
attribute.to_s + '=' + connection.quote(column.type_cast(value), column)
|
39
37
|
end.join('/')
|
40
38
|
|
41
39
|
if key.size > (250 - kasket_key_prefix.size) || key =~ /\s/
|
@@ -45,18 +43,6 @@ module Kasket
|
|
45
43
|
kasket_key_prefix + key
|
46
44
|
end
|
47
45
|
|
48
|
-
def convert_number_column_value(value)
|
49
|
-
if value == false
|
50
|
-
0
|
51
|
-
elsif value == true
|
52
|
-
1
|
53
|
-
elsif value.is_a?(String) && value.blank?
|
54
|
-
nil
|
55
|
-
else
|
56
|
-
value
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
46
|
def kasket_key_for_id(id)
|
61
47
|
kasket_key_for([['id', id]])
|
62
48
|
end
|
data/test/parser_test.rb
CHANGED
@@ -9,11 +9,11 @@ class ParserTest < ActiveSupport::TestCase
|
|
9
9
|
end
|
10
10
|
|
11
11
|
should "extract conditions" do
|
12
|
-
assert_equal [[:
|
12
|
+
assert_equal [[:blog_id, "big"], [:title, "red"]], @parser.parse('SELECT * FROM `posts` WHERE (`posts`.`title` = red AND `posts`.`blog_id` = big)')[:attributes]
|
13
13
|
end
|
14
14
|
|
15
15
|
should "extract required index" do
|
16
|
-
assert_equal [:
|
16
|
+
assert_equal [:blog_id, :title], @parser.parse('SELECT * FROM `posts` WHERE (`posts`.`title` = red AND `posts`.`blog_id` = big)')[:index]
|
17
17
|
end
|
18
18
|
|
19
19
|
should "only support queries against its model's table" do
|
@@ -26,7 +26,7 @@ class ParserTest < ActiveSupport::TestCase
|
|
26
26
|
end
|
27
27
|
|
28
28
|
should "support vaguely formatted queries" do
|
29
|
-
assert @parser.parse('SELECT * FROM "posts" WHERE (
|
29
|
+
assert @parser.parse('SELECT * FROM "posts" WHERE (title = red AND blog_id = big)')
|
30
30
|
end
|
31
31
|
|
32
32
|
context "extract options" do
|
@@ -44,27 +44,27 @@ class ParserTest < ActiveSupport::TestCase
|
|
44
44
|
context "unsupported queries" do
|
45
45
|
|
46
46
|
should "include advanced limits" do
|
47
|
-
assert !@parser.parse('SELECT * FROM `posts` WHERE (
|
47
|
+
assert !@parser.parse('SELECT * FROM `posts` WHERE (title = red AND blog_id = big) LIMIT 2')
|
48
48
|
end
|
49
49
|
|
50
50
|
should "include joins" do
|
51
|
-
assert !@parser.parse('SELECT * FROM `posts`, `trees` JOIN ON apple.tree_id = tree.id WHERE (
|
51
|
+
assert !@parser.parse('SELECT * FROM `posts`, `trees` JOIN ON apple.tree_id = tree.id WHERE (title = red)')
|
52
52
|
end
|
53
53
|
|
54
54
|
should "include specific selects" do
|
55
|
-
assert !@parser.parse('SELECT id FROM `posts` WHERE (
|
55
|
+
assert !@parser.parse('SELECT id FROM `posts` WHERE (title = red)')
|
56
56
|
end
|
57
57
|
|
58
58
|
should "include offset" do
|
59
|
-
assert !@parser.parse('SELECT * FROM `posts` WHERE (
|
59
|
+
assert !@parser.parse('SELECT * FROM `posts` WHERE (title = red) LIMIT 1 OFFSET 2')
|
60
60
|
end
|
61
61
|
|
62
62
|
should "include order" do
|
63
|
-
assert !@parser.parse('SELECT * FROM `posts` WHERE (
|
63
|
+
assert !@parser.parse('SELECT * FROM `posts` WHERE (title = red) ORDER DESC')
|
64
64
|
end
|
65
65
|
|
66
66
|
should "include the OR operator" do
|
67
|
-
assert !@parser.parse('SELECT * FROM `posts` WHERE (
|
67
|
+
assert !@parser.parse('SELECT * FROM `posts` WHERE (title = red OR blog_id = big) LIMIT 2')
|
68
68
|
end
|
69
69
|
|
70
70
|
should "include the IN operator" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 7
|
8
|
-
-
|
9
|
-
version: 0.7.
|
8
|
+
- 8
|
9
|
+
version: 0.7.8
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mick Staugaard
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-07-21 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|