From ebb8ea22f30dc029f4a868a550828443b160f639 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
Date: Fri, 25 Nov 2011 09:13:19 +0000
Subject: Add generators for serializers.

---
 .../test/generators/serializer_generator_test.rb   | 63 ++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 railties/test/generators/serializer_generator_test.rb

(limited to 'railties/test')

diff --git a/railties/test/generators/serializer_generator_test.rb b/railties/test/generators/serializer_generator_test.rb
new file mode 100644
index 0000000000..2afaa65693
--- /dev/null
+++ b/railties/test/generators/serializer_generator_test.rb
@@ -0,0 +1,63 @@
+require 'generators/generators_test_helper'
+require 'rails/generators/rails/serializer/serializer_generator'
+
+class SerializerGeneratorTest < Rails::Generators::TestCase
+  include GeneratorsTestHelper
+  arguments %w(account name:string description:text business:references)
+
+  def test_generates_a_serializer
+    run_generator
+    assert_file "app/serializers/account_serializer.rb", /class AccountSerializer < ActiveModel::Serializer/
+  end
+
+  def test_generates_a_namespaced_serializer
+    run_generator ["admin/account"]
+    assert_file "app/serializers/admin/account_serializer.rb", /class Admin::AccountSerializer < ActiveModel::Serializer/
+  end
+
+  def test_uses_application_serializer_if_one_exists
+    Object.const_set(:ApplicationSerializer, Class.new)
+    run_generator
+    assert_file "app/serializers/account_serializer.rb", /class AccountSerializer < ApplicationSerializer/
+  ensure
+    Object.send :remove_const, :ApplicationSerializer
+  end
+
+  def test_uses_namespace_application_serializer_if_one_exists
+    Object.const_set(:SerializerNamespace, Module.new)
+    SerializerNamespace.const_set(:ApplicationSerializer, Class.new)
+    Rails::Generators.namespace = SerializerNamespace
+    run_generator
+    assert_file "app/serializers/serializer_namespace/account_serializer.rb",
+      /module SerializerNamespace\n  class AccountSerializer < ApplicationSerializer/
+  ensure
+    Object.send :remove_const, :SerializerNamespace
+    Rails::Generators.namespace = nil
+  end
+
+  def test_uses_given_parent
+    Object.const_set(:ApplicationSerializer, Class.new)
+    run_generator ["Account", "--parent=MySerializer"]
+    assert_file "app/serializers/account_serializer.rb", /class AccountSerializer < MySerializer/
+  ensure
+    Object.send :remove_const, :ApplicationSerializer
+  end
+
+  def test_generates_attributes_and_associations
+    run_generator
+    assert_file "app/serializers/account_serializer.rb" do |serializer|
+      assert_match(/^  attributes :name, :description$/, serializer)
+      assert_match(/^  has_one :business$/, serializer)
+    end
+  end
+
+  def test_with_no_attributes_does_not_add_extra_space
+    run_generator ["account"]
+    assert_file "app/serializers/account_serializer.rb", /class AccountSerializer < ActiveModel::Serializer\nend/
+  end
+
+  def test_invokes_default_test_framework
+    run_generator
+    assert_file "test/unit/account_serializer_test.rb", /class AccountSerializerTest < ActiveSupport::TestCase/
+  end
+end
-- 
cgit v1.2.3


From 6d9f9b3b05f6ea55aad9853888912bcca4d81c9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
Date: Fri, 25 Nov 2011 09:17:32 +0000
Subject: Add a hook for serializers in the scaffold generator (off for now).

---
 railties/test/generators/scaffold_generator_test.rb | 9 +++++++++
 1 file changed, 9 insertions(+)

(limited to 'railties/test')

diff --git a/railties/test/generators/scaffold_generator_test.rb b/railties/test/generators/scaffold_generator_test.rb
index 2db8090621..2e8b03fbef 100644
--- a/railties/test/generators/scaffold_generator_test.rb
+++ b/railties/test/generators/scaffold_generator_test.rb
@@ -264,6 +264,15 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
     assert_file "app/assets/stylesheets/posts.css"
   end
 
+  def test_scaffold_also_generators_serializer
+    run_generator [ "posts", "name:string", "author:references", "--serializer" ]
+    assert_file "app/serializers/post_serializer.rb" do |serializer|
+      assert_match /class PostSerializer < ActiveModel::Serializer/, serializer
+      assert_match /^  attributes :name$/, serializer
+      assert_match /^  has_one :author$/, serializer
+    end
+  end
+
   def test_scaffold_generator_outputs_error_message_on_missing_attribute_type
     run_generator ["post", "title", "body:text", "author"]
 
-- 
cgit v1.2.3