diff --git a/app/views/tag_implications/_secondary_links.html.erb b/app/views/tag_implications/_secondary_links.html.erb
index 33d8432c8..c0d9bb58c 100644
--- a/app/views/tag_implications/_secondary_links.html.erb
+++ b/app/views/tag_implications/_secondary_links.html.erb
@@ -1,7 +1,11 @@
<% content_for(:secondary_links) do %>
<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index 6d125ea72..ad5c9d84e 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -167,11 +167,13 @@ Danbooru::Application.routes.draw do
end
end
resource :tag_alias_correction, :only => [:new, :create, :show]
+ resource :tag_alias_request, :only => [:new, :create]
resources :tag_implications do
member do
post :approve
end
end
+ resource :tag_implication_request, :only => [:new, :create]
resources :tag_subscriptions do
member do
get :posts
diff --git a/test/functional/tag_alias_corrections_controller_test.rb b/test/functional/tag_alias_corrections_controller_test.rb
new file mode 100644
index 000000000..6a3163f54
--- /dev/null
+++ b/test/functional/tag_alias_corrections_controller_test.rb
@@ -0,0 +1,33 @@
+require 'test_helper'
+
+class TagAliasCorrectionsControllerTest < ActionController::TestCase
+ context "The tag alias correction controller" do
+ setup do
+ @admin = FactoryGirl.create(:admin_user)
+ CurrentUser.user = @admin
+ CurrentUser.ip_addr = "127.0.0.1"
+ MEMCACHE.flush_all
+ Delayed::Worker.delay_jobs = false
+ @tag_alias = FactoryGirl.create(:tag_alias, :antecedent_name => "aaa", :consequent_name => "bbb")
+ end
+
+ teardown do
+ CurrentUser.user = nil
+ CurrentUser.ip_addr = nil
+ end
+
+ context "show action" do
+ should "render" do
+ get :show, {:tag_alias_id => @tag_alias.id}, {:user => @admin.id}
+ assert_response :success
+ end
+ end
+
+ context "create action" do
+ should "render" do
+ post :create, {:tag_alias_id => @tag_alias.id, :commit => "Fix"}, {:user => @admin.id}
+ assert_redirected_to(tag_alias_correction_path(:tag_alias_id => @tag_alias.id))
+ end
+ end
+ end
+end
diff --git a/test/functional/tag_alias_requests_controller_test.rb b/test/functional/tag_alias_requests_controller_test.rb
new file mode 100644
index 000000000..3272ed316
--- /dev/null
+++ b/test/functional/tag_alias_requests_controller_test.rb
@@ -0,0 +1,34 @@
+require 'test_helper'
+
+class TagAliasRequestsControllerTest < ActionController::TestCase
+ context "The tag alias request controller" do
+ setup do
+ @user = FactoryGirl.create(:user)
+ CurrentUser.user = @user
+ CurrentUser.ip_addr = "127.0.0.1"
+ MEMCACHE.flush_all
+ Delayed::Worker.delay_jobs = false
+ end
+
+ teardown do
+ CurrentUser.user = nil
+ CurrentUser.ip_addr = nil
+ end
+
+ context "new action" do
+ should "render" do
+ get :new, {}, {:user => @user.id}
+ assert_response :success
+ end
+ end
+
+ context "create action" do
+ should "render" do
+ assert_difference("ForumTopic.count", 1) do
+ post :create, {:tag_alias_request => {:antecedent_name => "aaa", :consequent_name => "bbb", :reason => "ccc"}}, {:user => @user.id}
+ end
+ assert_redirected_to(forum_topic_path(ForumTopic.last))
+ end
+ end
+ end
+end
diff --git a/test/functional/tag_implication_requests_controller.rb b/test/functional/tag_implication_requests_controller.rb
new file mode 100644
index 000000000..0cbf03247
--- /dev/null
+++ b/test/functional/tag_implication_requests_controller.rb
@@ -0,0 +1,34 @@
+require 'test_helper'
+
+class TagImplicationRequestsControllerTest < ActionController::TestCase
+ context "The tag implication request controller" do
+ setup do
+ @user = FactoryGirl.create(:user)
+ CurrentUser.user = @user
+ CurrentUser.ip_addr = "127.0.0.1"
+ MEMCACHE.flush_all
+ Delayed::Worker.delay_jobs = false
+ end
+
+ teardown do
+ CurrentUser.user = nil
+ CurrentUser.ip_addr = nil
+ end
+
+ context "new action" do
+ should "render" do
+ get :new, {}, {:user => @user.id}
+ assert_response :success
+ end
+ end
+
+ context "create action" do
+ should "render" do
+ assert_difference("ForumTopic.count", 1) do
+ post :create, {:tag_implication_request => {:antecedent_name => "aaa", :consequent_name => "bbb", :reason => "ccc"}}, {:user => @user.id}
+ end
+ assert_redirected_to(forum_topic_path(ForumTopic.last))
+ end
+ end
+ end
+end
diff --git a/test/functional/tag_implications_controller_test.rb b/test/functional/tag_implications_controller_test.rb
index 393371dcf..fb7589d9f 100644
--- a/test/functional/tag_implications_controller_test.rb
+++ b/test/functional/tag_implications_controller_test.rb
@@ -1,7 +1,7 @@
require 'test_helper'
class TagImplicationsControllerTest < ActionController::TestCase
- context "The tag implicationes controller" do
+ context "The tag implications controller" do
setup do
@user = FactoryGirl.create(:admin_user)
CurrentUser.user = @user
diff --git a/test/unit/tag_alias_correction_test.rb b/test/unit/tag_alias_correction_test.rb
index 2790f7824..32705e631 100644
--- a/test/unit/tag_alias_correction_test.rb
+++ b/test/unit/tag_alias_correction_test.rb
@@ -1,7 +1,7 @@
require 'test_helper'
-class TagAliasTest < ActiveSupport::TestCase
- context "A tag alias" do
+class TagAliasCorrectionTest < ActiveSupport::TestCase
+ context "A tag alias correction" do
setup do
@mod = FactoryGirl.create(:moderator_user)
CurrentUser.user = @mod
diff --git a/test/unit/tag_alias_request_test.rb b/test/unit/tag_alias_request_test.rb
new file mode 100644
index 000000000..452ddb8b0
--- /dev/null
+++ b/test/unit/tag_alias_request_test.rb
@@ -0,0 +1,44 @@
+require 'test_helper'
+
+class TagAliasRequestTest < ActiveSupport::TestCase
+ context "A tag alias request" do
+ setup do
+ @user = FactoryGirl.create(:user)
+ CurrentUser.user = @user
+ CurrentUser.ip_addr = "127.0.0.1"
+ MEMCACHE.flush_all
+ Delayed::Worker.delay_jobs = false
+ end
+
+ teardown do
+ MEMCACHE.flush_all
+ CurrentUser.user = nil
+ CurrentUser.ip_addr = nil
+ end
+
+ should "raise an exception if invalid" do
+ assert_raises(TagAliasRequest::ValidationError) do
+ TagAliasRequest.new("", "", "reason").create
+ end
+ end
+
+ should "create a tag alias" do
+ assert_difference("TagAlias.count", 1) do
+ TagAliasRequest.new("aaa", "bbb", "reason").create
+ end
+ assert_equal("pending", TagAlias.last.status)
+ end
+
+ should "create a forum topic" do
+ assert_difference("ForumTopic.count", 1) do
+ TagAliasRequest.new("aaa", "bbb", "reason").create
+ end
+ end
+
+ should "create a forum post" do
+ assert_difference("ForumPost.count", 1) do
+ TagAliasRequest.new("aaa", "bbb", "reason").create
+ end
+ end
+ end
+end
diff --git a/test/unit/tag_implication_request_test.rb b/test/unit/tag_implication_request_test.rb
new file mode 100644
index 000000000..f53f50633
--- /dev/null
+++ b/test/unit/tag_implication_request_test.rb
@@ -0,0 +1,44 @@
+require 'test_helper'
+
+class TagImplicationRequestTest < ActiveSupport::TestCase
+ context "A tag implication request" do
+ setup do
+ @user = FactoryGirl.create(:user)
+ CurrentUser.user = @user
+ CurrentUser.ip_addr = "127.0.0.1"
+ MEMCACHE.flush_all
+ Delayed::Worker.delay_jobs = false
+ end
+
+ teardown do
+ MEMCACHE.flush_all
+ CurrentUser.user = nil
+ CurrentUser.ip_addr = nil
+ end
+
+ should "raise an exception if invalid" do
+ assert_raises(TagImplicationRequest::ValidationError) do
+ TagImplicationRequest.new("", "", "reason").create
+ end
+ end
+
+ should "create a tag implication" do
+ assert_difference("TagImplication.count", 1) do
+ TagImplicationRequest.new("aaa", "bbb", "reason").create
+ end
+ assert_equal("pending", TagImplication.last.status)
+ end
+
+ should "create a forum topic" do
+ assert_difference("ForumTopic.count", 1) do
+ TagImplicationRequest.new("aaa", "bbb", "reason").create
+ end
+ end
+
+ should "create a forum post" do
+ assert_difference("ForumPost.count", 1) do
+ TagImplicationRequest.new("aaa", "bbb", "reason").create
+ end
+ end
+ end
+end