diff --git a/.travis.yml b/.travis.yml index 6ce693ad6..4f3c3ee45 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,6 +21,8 @@ env: - "RAILS_VERSION=master" matrix: + include: + env: JRUBY_OPTS=-Xcext.enabled=true" allow_failures: - rvm: ruby-head - env: "RAILS_VERSION=master" diff --git a/Gemfile b/Gemfile index 25b466ebf..e1bc0d650 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,8 @@ source 'https://rubygems.org' # Specify your gem's dependencies in active_model_serializers.gemspec gemspec -gem "minitest" +gem 'minitest' +gem 'rugged' version = ENV["RAILS_VERSION"] || "4.1" diff --git a/Rakefile b/Rakefile index 8a1f1e9e8..87560f2e2 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,10 @@ -require "bundler/gem_tasks" - +require 'bundler/gem_tasks' +require 'rugged' +require 'benchmark' require 'rake/testtask' +task :default => :test + Rake::TestTask.new do |t| t.libs << "test" t.test_files = FileList['test/**/*_test.rb'] @@ -9,4 +12,35 @@ Rake::TestTask.new do |t| t.verbose = true end -task :default => :test +Rake::TestTask.new :benchmark_tests do |t| + t.libs << "test" + t.test_files = FileList['test/**/*_benchmark.rb'] + t.ruby_opts = ['-r./test/test_helper.rb'] + t.verbose = true +end + +task :benchmark do + @repo = Rugged::Repository.new('.') + ref = @repo.head + + actual_branch = ref.name + + set_commit('master') + old_bench = Benchmark.realtime { Rake::Task['benchmark_tests'].execute } + + set_commit(actual_branch) + new_bench = Benchmark.realtime { Rake::Task['benchmark_tests'].execute } + + puts 'Results ============================' + puts "------------------------------------~> (Branch) MASTER" + puts old_bench + puts "------------------------------------" + + puts "------------------------------------~> (Actual Branch) #{actual_branch}" + puts new_bench + puts "------------------------------------" +end + +def set_commit(ref) + @repo.checkout ref +end \ No newline at end of file diff --git a/test/benchmark/serialization_benchmark.rb b/test/benchmark/serialization_benchmark.rb new file mode 100644 index 000000000..8fccc44e8 --- /dev/null +++ b/test/benchmark/serialization_benchmark.rb @@ -0,0 +1,50 @@ +require 'test_helper' + +module ActionController + module Serialization + class SerializerTest < ActionController::TestCase + class PostController < ActionController::Base + + def render_with_cache_enable + comment = Comment.new({ id: 1, body: 'ZOMG A COMMENT' }) + author = Author.new(id: 1, name: 'Joao Moura.') + post = Post.new({ id: 1, title: 'New Post', blog:nil, body: 'Body', comments: [comment], author: author }) + + render json: post + end + end + + tests PostController + + def test_render_with_cache_enable + ActionController::Base.cache_store.clear + get :render_with_cache_enable + + expected = { + id: 1, + title: 'New Post', + body: 'Body', + comments: [ + { + id: 1, + body: 'ZOMG A COMMENT' } + ], + blog: { + id: 999, + name: 'Custom blog' + }, + author: { + id: 1, + name: 'Joao Moura.' + } + } + + assert_equal 'application/json', @response.content_type + assert_equal expected.to_json, @response.body + + get :render_with_cache_enable + assert_equal expected.to_json, @response.body + end + end + end +end diff --git a/test/serializers/generators_test.rb b/test/serializers/generators_test.rb index c40d353e1..b6bdb175b 100644 --- a/test/serializers/generators_test.rb +++ b/test/serializers/generators_test.rb @@ -1,10 +1,3 @@ -class Foo < Rails::Application - if Rails.version.to_s.start_with? '4' - config.eager_load = false - config.secret_key_base = 'abc123' - end -end - Rails.application.load_generators require 'generators/serializer/serializer_generator' diff --git a/test/test_helper.rb b/test/test_helper.rb index f3977b610..6ecb6200b 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -13,6 +13,8 @@ class Foo < Rails::Application if Rails.version.to_s.start_with? '4' config.action_controller.perform_caching = true ActionController::Base.cache_store = :memory_store + config.eager_load = false + config.secret_key_base = 'abc123' end end