From a3117335cce7797693c376f132e3bcc52307b9a9 Mon Sep 17 00:00:00 2001
From: Jeremy Walker <jeremy@meducation.net>
Date: Sat, 29 Sep 2012 16:24:38 +0100
Subject: Fixed generated whitespace in routes when using namespaced resource.

---
 .../test/generators/namespaced_generators_test.rb  | 76 +++++++++++++++++++++-
 1 file changed, 74 insertions(+), 2 deletions(-)

(limited to 'railties/test')

diff --git a/railties/test/generators/namespaced_generators_test.rb b/railties/test/generators/namespaced_generators_test.rb
index db2b8af217..ede779ea59 100644
--- a/railties/test/generators/namespaced_generators_test.rb
+++ b/railties/test/generators/namespaced_generators_test.rb
@@ -304,7 +304,7 @@ class NamespacedScaffoldGeneratorTest < NamespacedGeneratorTestCase
 
     # Route
     assert_file "config/routes.rb" do |route|
-      assert_match(/namespace :admin do resources :roles end$/, route)
+      assert_match(/^  namespace :admin do\n    resources :roles\n  end$/, route)
     end
 
     # Controller
@@ -346,7 +346,7 @@ class NamespacedScaffoldGeneratorTest < NamespacedGeneratorTestCase
 
     # Route
     assert_file "config/routes.rb" do |route|
-      assert_no_match(/namespace :admin do resources :roles end$/, route)
+      assert_no_match(/^  namespace :admin do\n    resources :roles\n  end$$/, route)
     end
 
     # Controller
@@ -364,4 +364,76 @@ class NamespacedScaffoldGeneratorTest < NamespacedGeneratorTestCase
     # Stylesheets (should not be removed)
     assert_file "app/assets/stylesheets/scaffold.css"
   end
+  
+  def test_scaffold_with_nested_namespace_on_invoke
+    run_generator [ "admin/user/special/role", "name:string", "description:string" ]
+
+    # Model
+    assert_file "app/models/test_app/admin/user/special.rb", /module TestApp\n  module Admin/
+    assert_file "app/models/test_app/admin/user/special/role.rb", /module TestApp\n  class Admin::User::Special::Role < ActiveRecord::Base/
+    assert_file "test/unit/test_app/admin/user/special/role_test.rb", /module TestApp\n  class Admin::User::Special::RoleTest < ActiveSupport::TestCase/
+    assert_file "test/fixtures/test_app/admin/user/special/roles.yml"
+    assert_migration "db/migrate/create_test_app_admin_user_special_roles.rb"
+
+    # Route
+    assert_file "config/routes.rb" do |route|
+      assert_match(/^  namespace :admin do\n    namespace :user do\n      namespace :special do\n        resources :roles\n      end\n    end\n  end$/, route)
+    end
+
+    # Controller
+    assert_file "app/controllers/test_app/admin/user/special/roles_controller.rb" do |content|
+      assert_match(/module TestApp\n  class Admin::User::Special::RolesController < ApplicationController/, content)
+    end
+
+    assert_file "test/functional/test_app/admin/user/special/roles_controller_test.rb",
+                /module TestApp\n  class Admin::User::Special::RolesControllerTest < ActionController::TestCase/
+
+    # Views
+    %w(
+      index
+      edit
+      new
+      show
+      _form
+    ).each { |view| assert_file "app/views/test_app/admin/user/special/roles/#{view}.html.erb" }
+    assert_no_file "app/views/layouts/admin/user/special/roles.html.erb"
+
+    # Helpers
+    assert_file "app/helpers/test_app/admin/user/special/roles_helper.rb"
+    assert_file "test/unit/helpers/test_app/admin/user/special/roles_helper_test.rb"
+
+    # Stylesheets
+    assert_file "app/assets/stylesheets/scaffold.css"
+  end
+
+  def test_scaffold_with_nested_namespace_on_revoke
+    run_generator [ "admin/user/special/role", "name:string", "description:string" ]
+    run_generator [ "admin/user/special/role" ], :behavior => :revoke
+
+    # Model
+    assert_file "app/models/test_app/admin/user/special.rb"	# ( should not be remove )
+    assert_no_file "app/models/test_app/admin/user/special/role.rb"
+    assert_no_file "test/unit/test_app/admin/user/special/role_test.rb"
+    assert_no_file "test/fixtures/test_app/admin/user/special/roles.yml"
+    assert_no_migration "db/migrate/create_test_app_admin_user_special_roles.rb"
+
+    # Route
+    assert_file "config/routes.rb" do |route|
+      assert_no_match(/^  namespace :admin do\n    namespace :user do\n      namespace :special do\n        resources :roles\n      end\n    end\n  end$/, route)
+    end
+
+    # Controller
+    assert_no_file "app/controllers/test_app/admin/user/special/roles_controller.rb"
+    assert_no_file "test/functional/test_app/admin/user/special/roles_controller_test.rb"
+
+    # Views
+    assert_no_file "app/views/test_app/admin/user/special/roles"
+
+    # Helpers
+    assert_no_file "app/helpers/test_app/admin/user/special/roles_helper.rb"
+    assert_no_file "test/unit/helpers/test_app/admin/user/special/roles_helper_test.rb"
+
+    # Stylesheets (should not be removed)
+    assert_file "app/assets/stylesheets/scaffold.css"
+  end
 end
-- 
cgit v1.2.3