context_aware_scope 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.1.0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{context_aware_scope}
8
- s.version = "0.0.3"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Simplificator", "Fabio Kuhn"]
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  "test/database.yml",
26
26
  "test/models.rb",
27
27
  "test/test_helper.rb",
28
+ "test/units/default_scope_test.rb",
28
29
  "test/units/lambda_scope_test.rb",
29
30
  "test/units/normal_scope_test.rb",
30
31
  "test/units/readme_sample_test.rb"
@@ -37,6 +38,7 @@ Gem::Specification.new do |s|
37
38
  s.test_files = [
38
39
  "test/models.rb",
39
40
  "test/test_helper.rb",
41
+ "test/units/default_scope_test.rb",
40
42
  "test/units/lambda_scope_test.rb",
41
43
  "test/units/normal_scope_test.rb",
42
44
  "test/units/readme_sample_test.rb"
@@ -17,7 +17,8 @@ module ContextAwareScope
17
17
  recursive_context = recursive_context.keep_merge(@context)
18
18
  recursive_context
19
19
  else
20
- @context
20
+ # add default scope context if on active_record
21
+ default_scoping.inject(@context){|context, scope| context.keep_merge(scope[:find][:context])}
21
22
  end
22
23
  end
23
24
 
@@ -35,6 +36,12 @@ module ContextAwareScope
35
36
  end
36
37
  end
37
38
 
39
+ class ActiveRecord::Base
40
+ def context
41
+
42
+ end
43
+ end
44
+
38
45
  class ActiveRecord::NamedScope::Scope
39
46
  include ContextAwareScope
40
47
  end
data/test/models.rb CHANGED
@@ -14,7 +14,10 @@ class Customer < ActiveRecord::Base
14
14
  end
15
15
 
16
16
  class City < ActiveRecord::Base
17
- has_many :customers
17
+ default_scope :order => 'cities.name ASC', :context => {:order => 'name asc'}
18
+ named_scope :basel, :conditions => {:name => 'Basel'}, :context => {:name => 'Basel'}
19
+
20
+ has_many :customers
18
21
  end
19
22
 
20
23
  class Product < ActiveRecord::Base
@@ -64,6 +67,7 @@ def seed_models
64
67
  order2 = Order.create(:customer => customer1, :product_name => 'old lamp', :price => 5, :purchased_at => '2010-07-22')
65
68
  order3 = Order.create(:customer => customer2, :product_name => 'camel', :price => 1200, :purchased_at => '2010-07-24')
66
69
  product = Product.create(:name => 'Bracelet', :price => 324, :created_at => 1.day.ago)
70
+ product = Product.create(:name => 'Carpet', :price => 12, :created_at => 1.day.ago)
67
71
  end
68
72
 
69
73
  def cleanup_database
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+
3
+ class DefaultScopeTest < Test::Unit::TestCase
4
+ context 'cities' do
5
+ setup do
6
+ seed_models
7
+ end
8
+
9
+ context 'with a default scope' do
10
+ setup do
11
+ @cities = City.scoped({})
12
+ end
13
+
14
+ should 'should have results' do
15
+ assert_equal 2, @cities.count
16
+ end
17
+
18
+ should 'have context on list' do
19
+ assert_equal ActiveRecord::NamedScope::Scope, @cities.class
20
+ assert_equal Hash, @cities.context.class
21
+ assert_equal ({:order => 'name asc'}), @cities.context
22
+ end
23
+ end
24
+
25
+ context 'with a default scope and a named scope' do
26
+ setup do
27
+ @cities = City.basel.scoped({})
28
+ end
29
+
30
+ should 'should have results' do
31
+ assert_equal 1, @cities.count
32
+ end
33
+
34
+ should 'have context on list' do
35
+ assert_equal ActiveRecord::NamedScope::Scope, @cities.class
36
+ assert_equal Hash, @cities.context.class
37
+ assert_equal ({:order => 'name asc', :name => 'Basel'}), @cities.context
38
+ end
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: context_aware_scope
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 3
10
- version: 0.0.3
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Simplificator
@@ -82,6 +82,7 @@ files:
82
82
  - test/database.yml
83
83
  - test/models.rb
84
84
  - test/test_helper.rb
85
+ - test/units/default_scope_test.rb
85
86
  - test/units/lambda_scope_test.rb
86
87
  - test/units/normal_scope_test.rb
87
88
  - test/units/readme_sample_test.rb
@@ -122,6 +123,7 @@ summary: Add context to named_scopes in ActiveRecord
122
123
  test_files:
123
124
  - test/models.rb
124
125
  - test/test_helper.rb
126
+ - test/units/default_scope_test.rb
125
127
  - test/units/lambda_scope_test.rb
126
128
  - test/units/normal_scope_test.rb
127
129
  - test/units/readme_sample_test.rb