From af357619c1b9e61fde6c6200335f2f566399d42b Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Thu, 4 Jul 2013 11:17:53 -0700 Subject: [PATCH] Add AMS support to AR objects --- Gemfile | 6 ++++++ lib/active_model_serializers.rb | 6 ++++++ test/fixtures/active_record.rb | 20 +++++++++++++++++++ test/{fixtures.rb => fixtures/poro.rb} | 0 test/test_helper.rb | 2 +- .../serializer_support/active_record_test.rb | 13 ++++++++++++ .../poro_test.rb} | 2 +- 7 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 Gemfile create mode 100644 test/fixtures/active_record.rb rename test/{fixtures.rb => fixtures/poro.rb} (100%) create mode 100644 test/unit/active_model/serializer_support/active_record_test.rb rename test/unit/active_model/{serializer_support_test.rb => serializer_support/poro_test.rb} (81%) diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..9e639683 --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' + +# Specify gem dependencies in active_model_serializers.gemspec +gemspec + +gem "sqlite3" diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index 3f9c8873..0e715c3c 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -11,3 +11,9 @@ begin rescue LoadError # rails not installed, continuing end + +[:active_record, :mongoid].each do |orm| + ActiveSupport.on_load(orm) do + include ActiveModel::SerializerSupport + end +end diff --git a/test/fixtures/active_record.rb b/test/fixtures/active_record.rb new file mode 100644 index 00000000..05ae73a4 --- /dev/null +++ b/test/fixtures/active_record.rb @@ -0,0 +1,20 @@ +require 'active_record' + +ActiveRecord::Base.establish_connection( + :adapter => 'sqlite3', + :database => ':memory:' +) + +ActiveRecord::Schema.define do + create_table :ar_models, :force => true do |t| + t.string :attr1 + t.string :attr2 + end +end + +class ARModel < ActiveRecord::Base +end + +class ARModelSerializer < ActiveModel::Serializer + attributes :attr1, :attr2 +end diff --git a/test/fixtures.rb b/test/fixtures/poro.rb similarity index 100% rename from test/fixtures.rb rename to test/fixtures/poro.rb diff --git a/test/test_helper.rb b/test/test_helper.rb index 28fd7d53..e9ee164a 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,7 +1,7 @@ require 'bundler/setup' require 'newbase/active_model_serializers' require 'test/unit' -require 'newbase/fixtures' +require 'newbase/fixtures/poro' module TestHelper Routes = ActionDispatch::Routing::RouteSet.new diff --git a/test/unit/active_model/serializer_support/active_record_test.rb b/test/unit/active_model/serializer_support/active_record_test.rb new file mode 100644 index 00000000..f58be6e1 --- /dev/null +++ b/test/unit/active_model/serializer_support/active_record_test.rb @@ -0,0 +1,13 @@ +require 'newbase/test_helper' +require 'newbase/fixtures/active_record' +require 'newbase/active_model/serializer_support' + +module ActiveModel + module SerializerSupport + class Test < ActiveModel::TestCase + def test_active_model_returns_its_serializer + assert_equal ARModelSerializer, ARModel.new.active_model_serializer + end + end + end +end diff --git a/test/unit/active_model/serializer_support_test.rb b/test/unit/active_model/serializer_support/poro_test.rb similarity index 81% rename from test/unit/active_model/serializer_support_test.rb rename to test/unit/active_model/serializer_support/poro_test.rb index 3db8bdfe..fb212007 100644 --- a/test/unit/active_model/serializer_support_test.rb +++ b/test/unit/active_model/serializer_support/poro_test.rb @@ -4,7 +4,7 @@ require 'newbase/active_model/serializer_support' module ActiveModel module SerializerSupport class Test < ActiveModel::TestCase - def test_active_model_returns_its_serializer + def test_active_model_on_poro_returns_its_serializer assert_equal ModelSerializer, Model.new.active_model_serializer end end