querybuilder 0.8.1 → 0.8.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.
- data/History.txt +5 -0
- data/lib/query_builder/info.rb +1 -1
- data/lib/query_builder/processor.rb +5 -4
- data/querybuilder.gemspec +1 -1
- data/test/mock/user_processor.rb +1 -1
- data/test/querybuilder_test.rb +10 -4
- metadata +2 -2
data/History.txt
CHANGED
data/lib/query_builder/info.rb
CHANGED
@@ -128,6 +128,7 @@ module QueryBuilder
|
|
128
128
|
}
|
129
129
|
|
130
130
|
def initialize(source, opts = {})
|
131
|
+
@default = opts.delete(:default) || {}
|
131
132
|
@opts = opts
|
132
133
|
@rubyless_helper = @opts[:rubyless_helper]
|
133
134
|
if source.kind_of?(Processor)
|
@@ -187,8 +188,8 @@ module QueryBuilder
|
|
187
188
|
@this = processor
|
188
189
|
end
|
189
190
|
|
190
|
-
def default
|
191
|
-
self.class.defaults
|
191
|
+
def default(key)
|
192
|
+
@default[key] || self.class.defaults[key]
|
192
193
|
end
|
193
194
|
|
194
195
|
def process(sxp)
|
@@ -287,7 +288,7 @@ module QueryBuilder
|
|
287
288
|
# [letters from friends] or [images in project]
|
288
289
|
def process_query(args)
|
289
290
|
this.process(args)
|
290
|
-
if @query.order.nil? && order = this.default
|
291
|
+
if @query.order.nil? && order = this.default(:order)
|
291
292
|
sxp = Parser.parse("foo order by #{order}")
|
292
293
|
order = sxp[1]
|
293
294
|
order[1] = [:void] # replace [:relation, "foo"] by [:void]
|
@@ -732,7 +733,7 @@ module QueryBuilder
|
|
732
733
|
context[:scope_type] = nil
|
733
734
|
# post scope
|
734
735
|
@query.add_table(use_name, table_name, avoid_alias)
|
735
|
-
apply_scope(context[:scope] || default
|
736
|
+
apply_scope(context[:scope] || default(:scope))
|
736
737
|
else
|
737
738
|
# scope already applied / skip
|
738
739
|
@query.add_table(use_name, table_name, avoid_alias)
|
data/querybuilder.gemspec
CHANGED
data/test/mock/user_processor.rb
CHANGED
@@ -14,7 +14,7 @@ class UserProcessor < QueryBuilder::Processor
|
|
14
14
|
def process_relation(relation)
|
15
15
|
case relation
|
16
16
|
when 'objects'
|
17
|
-
this.apply_scope(default
|
17
|
+
this.apply_scope(default(:scope)) if context[:last]
|
18
18
|
add_table('objects')
|
19
19
|
@query.add_filter "#{table('objects')}.id = #{field_or_attr('node_id')}"
|
20
20
|
change_processor 'DummyProcessor'
|
data/test/querybuilder_test.rb
CHANGED
@@ -32,8 +32,14 @@ class DummyQueryBuilder < Test::Unit::TestCase
|
|
32
32
|
should 'return a query object on query' do
|
33
33
|
assert_kind_of QueryBuilder::Query, subject.new('objects').query
|
34
34
|
end
|
35
|
+
|
36
|
+
should 'overwrite defaults' do
|
37
|
+
assert_equal '%Q{SELECT objects.* FROM objects}', subject.new('objects', :default => {:scope => 'site'}).query.to_s
|
38
|
+
assert_equal '[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ?}, project_id]', subject.new('objects', :default => {:scope => 'project'}).query.to_s
|
39
|
+
assert_equal '[%Q{SELECT objects.* FROM objects WHERE objects.parent_id = ?}, id]', subject.new('objects').query.to_s
|
40
|
+
end
|
35
41
|
end
|
36
|
-
|
42
|
+
|
37
43
|
context 'Including QueryBuilder' do
|
38
44
|
context 'in a class' do
|
39
45
|
subject do
|
@@ -41,19 +47,19 @@ class DummyQueryBuilder < Test::Unit::TestCase
|
|
41
47
|
include QueryBuilder
|
42
48
|
end
|
43
49
|
end
|
44
|
-
|
50
|
+
|
45
51
|
should 'receive class method query_compiler' do
|
46
52
|
assert_nothing_raised do
|
47
53
|
subject.query_compiler = 'Foo'
|
48
54
|
assert_equal 'Foo', subject.query_compiler
|
49
55
|
end
|
50
56
|
end
|
51
|
-
|
57
|
+
|
52
58
|
should 'receive class method query_compiler on sub_class' do
|
53
59
|
sub_class = Class.new(subject)
|
54
60
|
subject.query_compiler = 'Foo'
|
55
61
|
assert_equal 'Foo', subject.query_compiler
|
56
|
-
|
62
|
+
|
57
63
|
sub_class.query_compiler = 'Bar'
|
58
64
|
assert_equal 'Bar', sub_class.query_compiler
|
59
65
|
assert_equal 'Foo', subject.query_compiler
|