From ef78bc5dd83c10e987b028b5bca6d03606211957 Mon Sep 17 00:00:00 2001 From: Jean Luis Urena Date: Mon, 15 Jan 2024 16:32:12 -0500 Subject: [PATCH] [ISSUE-57] Male rails/activeresource 4.x compatibl (#60) --- README.md | 7 +++++++ spec/cached_resource/caching_spec.rb | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cdd7c31..61f9a25 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,13 @@ CachedResource is designed to be framework agnostic, but will hook into Rails fo | 💎 3.1 | | | | ✅ | ✅ | ✅ | | 💎 3.2 | | | | ✅ | ✅ | ✅ | +## Limitations + +The following are limitations for ActiveResource/Rails versions + +| ActiveSupport Version | Limitation | +|---------------------- | ----------------------------------------------------------------------- | +| 🛤️ 4.X | You cannot chain calls. Ie `Thing.where(fn: 'foo').where(ln: 'bar')`.
However, you can still access `original_params` and the `resource_class` and replicate it with
`call1 = Thing.where(fn: 'foo')`
`call1.resource_class.where(call1.original_params.merge(ln: 'bar'))` | ## Configuration diff --git a/spec/cached_resource/caching_spec.rb b/spec/cached_resource/caching_spec.rb index ff61634..ba8c90b 100644 --- a/spec/cached_resource/caching_spec.rb +++ b/spec/cached_resource/caching_spec.rb @@ -234,14 +234,21 @@ class CustomCollection < ActiveResource::Collection; end cached = read_from_cache('thing/all/{:params=>{:name=>"ada"}}') cached.should be_instance_of(CustomCollection) cached.original_params.should == { 'name' => 'ada' } + cached.resource_class.should == Thing cached.map(&:id).should == @thing_collection.map { |h| h[:id]} - non_cached = cached.where(major: 'CS') + if ActiveResource::VERSION::MAJOR < 5 + non_cached = cached.resource_class.where(cached.original_params.merge(major: 'CS')) + else + non_cached = cached.where(major: 'CS') + end + non_cached.original_params.should == { 'name' => 'ada', 'major' => 'CS' } + non_cached.resource_class.should == Thing non_cached.map(&:id).should == @thing_collection2.map { |h| h[:id]} - cached = read_from_cache('thing/all/{:params=>{"name"=>"ada",:major=>"cs"}}') cached.original_params.should == { 'name' => 'ada', 'major' => 'CS' } + cached.resource_class.should == Thing cached.map(&:id).should == @thing_collection2.map { |h| h[:id]} end else