arid_cache 1.3.5 → 1.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/arid_cache.gemspec +1 -1
- data/lib/arid_cache/cache_proxy/result_processor.rb +3 -2
- data/spec/arid_cache/cache_proxy/result_processor_spec.rb +79 -2
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.6
|
data/arid_cache.gemspec
CHANGED
@@ -66,11 +66,12 @@ module AridCache
|
|
66
66
|
end
|
67
67
|
Utilities.object_class(@options[:receiver]).send(@options[:proxy], @result)
|
68
68
|
elsif is_activerecord_reflection?
|
69
|
+
|
69
70
|
if @options.count_only?
|
70
71
|
lazy_cache.count = @result.count
|
71
72
|
else
|
72
|
-
lazy_cache.klass = @result.proxy_reflection.klass if @result.respond_to?(:proxy_reflection)
|
73
73
|
lazy_cache.ids = @result.collect { |r| r[:id] }
|
74
|
+
lazy_cache.klass = @result.respond_to?(:proxy_reflection) ? @result.proxy_reflection.klass : (is_empty? ? result_klass : @result.first.class)
|
74
75
|
lazy_cache.count = @result.size
|
75
76
|
end
|
76
77
|
lazy_cache
|
@@ -83,7 +84,7 @@ module AridCache
|
|
83
84
|
lazy_cache.ids = @result
|
84
85
|
lazy_cache.count = 0
|
85
86
|
lazy_cache.klass = result_klass
|
86
|
-
lazy_cache
|
87
|
+
lazy_cache
|
87
88
|
elsif @result.nil? # so we can distinguish a cached nil vs an empty cache
|
88
89
|
lazy_cache.klass = NilClass
|
89
90
|
lazy_cache
|
@@ -6,8 +6,9 @@ describe AridCache::CacheProxy::ResultProcessor do
|
|
6
6
|
AridCache::CacheProxy::ResultProcessor.new(value, opts)
|
7
7
|
end
|
8
8
|
|
9
|
-
before :
|
9
|
+
before :each do
|
10
10
|
AridCache.store.delete! # so no options get stored and interfere with other tests
|
11
|
+
AridCache.raw_with_options = true
|
11
12
|
end
|
12
13
|
|
13
14
|
describe "empty array" do
|
@@ -364,7 +365,6 @@ describe AridCache::CacheProxy::ResultProcessor do
|
|
364
365
|
|
365
366
|
describe "raw with options handling" do
|
366
367
|
before :each do
|
367
|
-
AridCache.raw_with_options = true
|
368
368
|
@user = User.make
|
369
369
|
@company1 = Company.make
|
370
370
|
@company2 = Company.make
|
@@ -404,4 +404,81 @@ describe AridCache::CacheProxy::ResultProcessor do
|
|
404
404
|
value.should == [@company2.id]
|
405
405
|
end
|
406
406
|
end
|
407
|
+
|
408
|
+
describe "cached proxy_options result" do
|
409
|
+
before :each do
|
410
|
+
@user = User.make
|
411
|
+
@obj = Array.new([@user])
|
412
|
+
@obj.class_eval do
|
413
|
+
def respond_to?(method)
|
414
|
+
return true if method == :proxy_options
|
415
|
+
end
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
it "should store a CachedResult" do
|
420
|
+
new_result(@obj).to_cache.should be_a(AridCache::CacheProxy::CachedResult)
|
421
|
+
end
|
422
|
+
|
423
|
+
it "should be a reflection" do
|
424
|
+
new_result(@obj).is_activerecord_reflection?.should be_true
|
425
|
+
end
|
426
|
+
|
427
|
+
it "should set klass" do
|
428
|
+
cache = new_result(@obj).to_cache
|
429
|
+
cache.klass.should be(User)
|
430
|
+
end
|
431
|
+
end
|
432
|
+
|
433
|
+
describe "cached proxy_reflection result" do
|
434
|
+
before :each do
|
435
|
+
@user = User.make
|
436
|
+
@obj = Array.new([@user])
|
437
|
+
stub(@obj).proxy_reflection { stub(Object.new).klass { Company } }
|
438
|
+
end
|
439
|
+
|
440
|
+
it "should be a reflection" do
|
441
|
+
new_result(@obj).is_activerecord_reflection?.should be_true
|
442
|
+
end
|
443
|
+
|
444
|
+
it "should store a CachedResult" do
|
445
|
+
new_result(@obj).to_cache.should be_a(AridCache::CacheProxy::CachedResult)
|
446
|
+
end
|
447
|
+
|
448
|
+
it "should set klass from the proxy_reflection" do
|
449
|
+
cache = new_result(@obj).to_cache
|
450
|
+
cache.klass.should be(Company)
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
describe "deprecated" do
|
455
|
+
before :each do
|
456
|
+
AridCache.raw_with_options = false
|
457
|
+
end
|
458
|
+
|
459
|
+
describe "cached empty reflection-like result" do
|
460
|
+
before :each do
|
461
|
+
@user = User.make
|
462
|
+
@obj = Array.new([])
|
463
|
+
@obj.class_eval do
|
464
|
+
def respond_to?(method)
|
465
|
+
return true if method == :proxy_options
|
466
|
+
end
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
it "should store a CachedResult" do
|
471
|
+
new_result(@obj).to_cache.should be_a(AridCache::CacheProxy::CachedResult)
|
472
|
+
end
|
473
|
+
|
474
|
+
it "should be a reflection" do
|
475
|
+
new_result(@obj).is_activerecord_reflection?.should be_true
|
476
|
+
end
|
477
|
+
|
478
|
+
it "should fall back to the receiver class" do
|
479
|
+
cache = new_result(@obj, :receiver => User).to_cache
|
480
|
+
cache.klass.should be(User)
|
481
|
+
end
|
482
|
+
end
|
483
|
+
end
|
407
484
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arid_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
9
|
+
- 6
|
10
|
+
version: 1.3.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Karl Varga
|