From 101771adb80f9ee5a8c4d44bc7aa5ef2a4f4ca72 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 11 Oct 2016 07:56:13 +0000 Subject: [PATCH] Aliases/implications: Add tests for status and foreign keys. --- .../functional/tag_aliases_controller_test.rb | 9 ++++++ .../tag_implications_controller_test.rb | 9 ++++++ test/unit/tag_alias_test.rb | 30 +++++++++++++++++ test/unit/tag_implication_test.rb | 32 +++++++++++++++++++ 4 files changed, 80 insertions(+) diff --git a/test/functional/tag_aliases_controller_test.rb b/test/functional/tag_aliases_controller_test.rb index 30c99ce70..1d099e8d9 100644 --- a/test/functional/tag_aliases_controller_test.rb +++ b/test/functional/tag_aliases_controller_test.rb @@ -41,6 +41,15 @@ class TagAliasesControllerTest < ActionController::TestCase @tag_alias.reload assert_equal("xxx", @tag_alias.antecedent_name) end + + should "not allow changing the status" do + post :update, {:id => @tag_alias.id, :tag_alias => {:status => "active"}}, {:user_id => @user.id} + @tag_alias.reload + assert_equal("pending", @tag_alias.status) + end + + # TODO: Broken in shoulda-matchers 2.8.0. Need to upgrade to 3.1.1. + should_eventually permit(:antecedent_name, :consequent_name, :forum_topic_id).for(:update) end context "for an approved alias" do diff --git a/test/functional/tag_implications_controller_test.rb b/test/functional/tag_implications_controller_test.rb index 8fa68f1d7..e6408eb02 100644 --- a/test/functional/tag_implications_controller_test.rb +++ b/test/functional/tag_implications_controller_test.rb @@ -42,6 +42,15 @@ class TagImplicationsControllerTest < ActionController::TestCase @tag_implication.reload assert_equal("xxx", @tag_implication.antecedent_name) end + + should "not allow changing the status" do + post :update, {:id => @tag_implication.id, :tag_implication => {:status => "active"}}, {:user_id => @user.id} + @tag_implication.reload + assert_equal("pending", @tag_implication.status) + end + + # TODO: Broken in shoulda-matchers 2.8.0. Need to upgrade to 3.1.1. + should_eventually permit(:antecedent_name, :consequent_name, :forum_topic_id).for(:update) end context "for an approved implication" do diff --git a/test/unit/tag_alias_test.rb b/test/unit/tag_alias_test.rb index 5ad89ca74..16bce66c9 100644 --- a/test/unit/tag_alias_test.rb +++ b/test/unit/tag_alias_test.rb @@ -17,6 +17,36 @@ class TagAliasTest < ActiveSupport::TestCase CurrentUser.ip_addr = nil end + context "on validation" do + subject do + FactoryGirl.create(:tag, :name => "aaa") + FactoryGirl.create(:tag, :name => "bbb") + FactoryGirl.create(:tag_alias, :antecedent_name => "aaa", :consequent_name => "bbb") + end + + should allow_value('active').for(:status) + should allow_value('deleted').for(:status) + should allow_value('pending').for(:status) + should allow_value('processing').for(:status) + should allow_value('queued').for(:status) + should allow_value('error: derp').for(:status) + + should_not allow_value('ACTIVE').for(:status) + should_not allow_value('error').for(:status) + should_not allow_value('derp').for(:status) + + should allow_value(nil).for(:forum_topic_id) + should_not allow_value(-1).for(:forum_topic_id).with_message("must exist", against: :forum_topic) + + should allow_value(nil).for(:approver_id) + should_not allow_value(-1).for(:approver_id).with_message("must exist", against: :approver) + + should_not allow_value(nil).for(:creator_id) + should_not allow_value(-1).for(:creator_id).with_message("must exist", against: :creator) + + should_not allow_mass_assignment_of(:status).as(:member) + end + should "populate the creator information" do ta = FactoryGirl.create(:tag_alias, :antecedent_name => "aaa", :consequent_name => "bbb") assert_equal(CurrentUser.user.id, ta.creator_id) diff --git a/test/unit/tag_implication_test.rb b/test/unit/tag_implication_test.rb index 5a4fc922b..910dd8604 100644 --- a/test/unit/tag_implication_test.rb +++ b/test/unit/tag_implication_test.rb @@ -16,6 +16,38 @@ class TagImplicationTest < ActiveSupport::TestCase CurrentUser.ip_addr = nil end + context "on validation" do + subject do + FactoryGirl.create(:tag, :name => "aaa") + FactoryGirl.create(:tag, :name => "bbb") + FactoryGirl.create(:tag_implication, :antecedent_name => "aaa", :consequent_name => "bbb") + end + + should allow_value('active').for(:status) + should allow_value('deleted').for(:status) + should allow_value('pending').for(:status) + should allow_value('processing').for(:status) + should allow_value('queued').for(:status) + should allow_value('error: derp').for(:status) + + should_not allow_value('ACTIVE').for(:status) + should_not allow_value('error').for(:status) + should_not allow_value('derp').for(:status) + + should allow_value(nil).for(:forum_topic_id) + should_not allow_value(-1).for(:forum_topic_id).with_message("must exist", against: :forum_topic) + + should allow_value(nil).for(:approver_id) + should_not allow_value(-1).for(:approver_id).with_message("must exist", against: :approver) + + should_not allow_value(nil).for(:creator_id) + should_not allow_value(-1).for(:creator_id).with_message("must exist", against: :creator) + + should_not allow_mass_assignment_of(:status).as(:member) + should_not allow_mass_assignment_of(:forum_topic).as(:member) + should_not allow_mass_assignment_of(:descendant_names).as(:member) + end + should "ignore pending implications when building descendant names" do ti2 = FactoryGirl.build(:tag_implication, :antecedent_name => "b", :consequent_name => "c", :status => "pending") ti2.save