diff --git a/Rakefile b/Rakefile index a3fa1774..f7af3fcc 100644 --- a/Rakefile +++ b/Rakefile @@ -3,6 +3,7 @@ require "bundler/gem_tasks" require 'rake/testtask' Rake::TestTask.new do |t| + t.libs << "test" t.test_files = FileList['test/*_test.rb'] t.ruby_opts = ['-r./test/test_helper.rb'] t.verbose = true diff --git a/active_model_serializers.gemspec b/active_model_serializers.gemspec index b7d11074..d3b85d55 100644 --- a/active_model_serializers.gemspec +++ b/active_model_serializers.gemspec @@ -1,11 +1,11 @@ # coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'active_model_serializers/version' +require 'active_model/serializer/version' Gem::Specification.new do |spec| spec.name = "active_model_serializers" - spec.version = ActiveModelSerializers::VERSION + spec.version = ActiveModel::Serializer::VERSION spec.authors = ["Steve Klabnik"] spec.email = ["steve@steveklabnik.com"] spec.summary = %q{Conventions-based JSON generation for Rails.} diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb new file mode 100644 index 00000000..7ebab753 --- /dev/null +++ b/lib/active_model/serializer.rb @@ -0,0 +1,21 @@ +module ActiveModel + class Serializer + class << self + attr_accessor :_attributes + end + + def self.inherited(base) + base._attributes = [] + end + + def self.attributes(*attrs) + @_attributes.concat attrs + end + + attr_accessor :object + + def initialize(object) + @object = object + end + end +end diff --git a/lib/active_model/serializer/version.rb b/lib/active_model/serializer/version.rb new file mode 100644 index 00000000..6b5b0fba --- /dev/null +++ b/lib/active_model/serializer/version.rb @@ -0,0 +1,5 @@ +module ActiveModel + class Serializer + VERSION = "0.9.0" + end +end diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index e8cbbf70..dc50937f 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -1,5 +1,5 @@ -require "active_model_serializers/version" +require "active_model" +require "active_model/serializer/version" + +require "active_model/serializer" -module ActiveModelSerializers - # Your code goes here... -end diff --git a/lib/active_model_serializers/version.rb b/lib/active_model_serializers/version.rb deleted file mode 100644 index b046379b..00000000 --- a/lib/active_model_serializers/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -module ActiveModelSerializers - VERSION = "0.9.0" -end diff --git a/test/attributes_test.rb b/test/attributes_test.rb new file mode 100644 index 00000000..f9467b18 --- /dev/null +++ b/test/attributes_test.rb @@ -0,0 +1,18 @@ +require 'test_helper' + +module ActiveModel + class Serializer + class AttributesTest < Minitest::Test + def setup + @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }) + @profile_serializer = ProfileSerializer.new(@profile) + end + + def test_attributes_definition + assert_equal([:name, :description], + @profile_serializer.class._attributes) + end + end + end +end + diff --git a/test/fixtures/poro.rb b/test/fixtures/poro.rb new file mode 100644 index 00000000..76252231 --- /dev/null +++ b/test/fixtures/poro.rb @@ -0,0 +1,12 @@ +class Model + def initialize(hash={}) + @attributes = hash + end +end + +class Profile < Model +end + +class ProfileSerializer < ActiveModel::Serializer + attributes :name, :description +end diff --git a/test/test_helper.rb b/test/test_helper.rb index a23ad862..8cb71ca3 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,8 +1,9 @@ require "bundler/setup" -require "active_model_serializers" -require "active_support/json" - require 'rails' - +require "active_support/json" require 'minitest/autorun' + +require "active_model_serializers" + +require 'fixtures/poro'