querybuilder 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.8.2 2010-08-30
2
+
3
+ * 1 Major enhancement
4
+ * Added the possibility to overwrite defaults for a single query
5
+
1
6
  == 0.8.1 2010-08-30
2
7
 
3
8
  * 1 Major bug fix
@@ -1,3 +1,3 @@
1
1
  module QueryBuilder
2
- VERSION = '0.8.1'
2
+ VERSION = '0.8.2'
3
3
  end
@@ -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[:order]
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[:scope])
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
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{querybuilder}
8
- s.version = "0.8.1"
8
+ s.version = "0.8.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gaspard Bucher"]
@@ -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[:scope]) if context[:last]
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'
@@ -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
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 8
8
- - 1
9
- version: 0.8.1
8
+ - 2
9
+ version: 0.8.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Gaspard Bucher