From ffd7da6b258ffeca59ab396a99a783993075f035 Mon Sep 17 00:00:00 2001 From: Jan Bajena Date: Sun, 30 Dec 2018 15:28:52 +0100 Subject: [PATCH 1/4] Use Appraisal to test multiple versions of AMS closes https://github.com/Bajena/ams_lazy_relationships/issues/1 --- .travis.yml | 7 ++++++- Appraisals | 15 +++++++++++++++ Gemfile.lock | 5 +++++ ams_lazy_relationships.gemspec | 2 ++ lib/ams_lazy_relationships/core.rb | 7 ++++++- spec/core/json_api_spec.rb | 7 +++++++ 6 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 Appraisals diff --git a/.travis.yml b/.travis.yml index cd0485d..142c275 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,11 @@ env: global: - CC_TEST_REPORTER_ID=1da1af59767d8c64ae960d5a0ac69089a0fa90e013aedb09e76843f104bec709 language: ruby +gemfile: + - gemfiles/ams_0.9.gemfile + - gemfiles/ams_0.10.0.rc4.gemfile + - gemfiles/ams_0.10.2.gemfile + - gemfiles/ams_0.10.8.gemfile cache: bundler rvm: - 2.3.4 @@ -15,7 +20,7 @@ before_script: - chmod +x ./cc-test-reporter - ./cc-test-reporter before-build script: - - bundle exec rake + - bundle exec appraisal rake spec - git pull origin master:master - undercover --compare master after_script: diff --git a/Appraisals b/Appraisals new file mode 100644 index 0000000..000b7dc --- /dev/null +++ b/Appraisals @@ -0,0 +1,15 @@ +appraise "ams-0.9" do + gem "active_model_serializers", "0.9.7" +end + +appraise "ams-0.10.0.rc4" do + gem "active_model_serializers", "0.10.0.rc4" +end + +appraise "ams-0.10.2" do + gem "active_model_serializers", "0.10.2" +end + +appraise "ams-0.10.8" do + gem "active_model_serializers", "0.10.8" +end diff --git a/Gemfile.lock b/Gemfile.lock index bff1f17..b6780ad 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,6 +37,10 @@ GEM i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) + appraisal (2.2.0) + bundler + rake + thor (>= 0.14.0) arel (9.0.0) ast (2.4.0) batch-loader (1.2.2) @@ -153,6 +157,7 @@ PLATFORMS DEPENDENCIES activerecord ams_lazy_relationships! + appraisal bundler (~> 1.17) db-query-matchers pry diff --git a/ams_lazy_relationships.gemspec b/ams_lazy_relationships.gemspec index ecd9f75..3a8b5f9 100644 --- a/ams_lazy_relationships.gemspec +++ b/ams_lazy_relationships.gemspec @@ -37,6 +37,8 @@ Gem::Specification.new do |spec| spec.add_dependency "batch-loader", "=1.2.2" spec.add_development_dependency "activerecord" + # A Ruby library for testing against different versions of dependencies + spec.add_development_dependency "appraisal" spec.add_development_dependency "bundler", "~> 1.17" # Rspec matchers for SQL query counts spec.add_development_dependency "db-query-matchers" diff --git a/lib/ams_lazy_relationships/core.rb b/lib/ams_lazy_relationships/core.rb index 0689390..c4c9a4f 100644 --- a/lib/ams_lazy_relationships/core.rb +++ b/lib/ams_lazy_relationships/core.rb @@ -158,12 +158,17 @@ def define_lazy_association(type, name, options, block) def find_reflection(name) # In 0.10.3 this private API has changed - if Gem::Version.new(ActiveModel::Serializer::VERSION) >= Gem::Version.new("0.10.3") + if supports_reflections_hash? _reflections[name.to_sym] else _reflections.find { |r| r.name.to_sym == name.to_sym } end end + + def supports_reflections_hash? + @supports_reflections_hash ||= + Gem::Version.new(ActiveModel::Serializer::VERSION) >= Gem::Version.new("0.10.3") + end end module Initializer diff --git a/spec/core/json_api_spec.rb b/spec/core/json_api_spec.rb index 52079ae..9b2dd93 100644 --- a/spec/core/json_api_spec.rb +++ b/spec/core/json_api_spec.rb @@ -4,6 +4,8 @@ require "active_model_serializers" RSpec.describe AmsLazyRelationships::Core do + next if Gem::Version.new(ActiveModel::Serializer::VERSION) < Gem::Version.new("0.10.0.rc1") + extend WithArModels with_ar_models @@ -22,6 +24,7 @@ class BaseTestSerializer < ActiveModel::Serializer let(:includes) do [] end + let(:json) do ActiveModelSerializers::Adapter::JsonApi.new( serializer, include: includes @@ -214,6 +217,10 @@ def initialize(object) attr_reader :object delegate :id, :blog_posts, to: :object + + def self.model_name + @_model_name ||= User.model_name + end end let(:level0_record) do From e53915b194395441060b52e7732fc27955a7b364 Mon Sep 17 00:00:00 2001 From: Jan Bajena Date: Sun, 30 Dec 2018 15:32:58 +0100 Subject: [PATCH 2/4] Remove lock files --- gemfiles/.bundle/config | 2 ++ gemfiles/ams_0.10.0.rc4.gemfile | 7 +++++++ gemfiles/ams_0.10.2.gemfile | 7 +++++++ gemfiles/ams_0.10.8.gemfile | 7 +++++++ gemfiles/ams_0.9.gemfile | 7 +++++++ 5 files changed, 30 insertions(+) create mode 100644 gemfiles/.bundle/config create mode 100644 gemfiles/ams_0.10.0.rc4.gemfile create mode 100644 gemfiles/ams_0.10.2.gemfile create mode 100644 gemfiles/ams_0.10.8.gemfile create mode 100644 gemfiles/ams_0.9.gemfile diff --git a/gemfiles/.bundle/config b/gemfiles/.bundle/config new file mode 100644 index 0000000..c127f80 --- /dev/null +++ b/gemfiles/.bundle/config @@ -0,0 +1,2 @@ +--- +BUNDLE_RETRY: "1" diff --git a/gemfiles/ams_0.10.0.rc4.gemfile b/gemfiles/ams_0.10.0.rc4.gemfile new file mode 100644 index 0000000..db6cbcd --- /dev/null +++ b/gemfiles/ams_0.10.0.rc4.gemfile @@ -0,0 +1,7 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "active_model_serializers", "0.10.0.rc4" + +gemspec path: "../" diff --git a/gemfiles/ams_0.10.2.gemfile b/gemfiles/ams_0.10.2.gemfile new file mode 100644 index 0000000..37a3d2c --- /dev/null +++ b/gemfiles/ams_0.10.2.gemfile @@ -0,0 +1,7 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "active_model_serializers", "0.10.2" + +gemspec path: "../" diff --git a/gemfiles/ams_0.10.8.gemfile b/gemfiles/ams_0.10.8.gemfile new file mode 100644 index 0000000..dfc2f27 --- /dev/null +++ b/gemfiles/ams_0.10.8.gemfile @@ -0,0 +1,7 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "active_model_serializers", "0.10.8" + +gemspec path: "../" diff --git a/gemfiles/ams_0.9.gemfile b/gemfiles/ams_0.9.gemfile new file mode 100644 index 0000000..2c152e2 --- /dev/null +++ b/gemfiles/ams_0.9.gemfile @@ -0,0 +1,7 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "active_model_serializers", "0.9.7" + +gemspec path: "../" From d01d3211d85b5280a75e9de1d2c4f1cb146d0bc5 Mon Sep 17 00:00:00 2001 From: Jan Bajena Date: Sun, 30 Dec 2018 15:36:38 +0100 Subject: [PATCH 3/4] Simply run rake --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 142c275..85e0168 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ before_script: - chmod +x ./cc-test-reporter - ./cc-test-reporter before-build script: - - bundle exec appraisal rake spec + - bundle exec rake - git pull origin master:master - undercover --compare master after_script: From 1e08a7dd4d94f2ce16528dcfc04b46da8d4bdf0f Mon Sep 17 00:00:00 2001 From: Jan Bajena Date: Sun, 30 Dec 2018 15:46:22 +0100 Subject: [PATCH 4/4] Fix specs --- lib/ams_lazy_relationships/core.rb | 7 +------ spec/core/json_api_spec.rb | 9 ++++++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/ams_lazy_relationships/core.rb b/lib/ams_lazy_relationships/core.rb index c4c9a4f..0689390 100644 --- a/lib/ams_lazy_relationships/core.rb +++ b/lib/ams_lazy_relationships/core.rb @@ -158,17 +158,12 @@ def define_lazy_association(type, name, options, block) def find_reflection(name) # In 0.10.3 this private API has changed - if supports_reflections_hash? + if Gem::Version.new(ActiveModel::Serializer::VERSION) >= Gem::Version.new("0.10.3") _reflections[name.to_sym] else _reflections.find { |r| r.name.to_sym == name.to_sym } end end - - def supports_reflections_hash? - @supports_reflections_hash ||= - Gem::Version.new(ActiveModel::Serializer::VERSION) >= Gem::Version.new("0.10.3") - end end module Initializer diff --git a/spec/core/json_api_spec.rb b/spec/core/json_api_spec.rb index 9b2dd93..1a1c7b2 100644 --- a/spec/core/json_api_spec.rb +++ b/spec/core/json_api_spec.rb @@ -25,8 +25,15 @@ class BaseTestSerializer < ActiveModel::Serializer [] end + let(:adapter_class) do + version = Gem::Version.new(ActiveModel::Serializer::VERSION) + return "ActiveModelSerializers::Adapter::JsonApi".constantize if version >= Gem::Version.new("0.10.2") + return "ActiveModel::Serializer::Adapter::JsonApi".constantize# if version >= Gem::Version.new("0.10.0.rc1") + end + + let(:json) do - ActiveModelSerializers::Adapter::JsonApi.new( + adapter_class.new( serializer, include: includes ).as_json end