about summary refs log tree commit diff
path: root/spec/controllers
diff options
context:
space:
mode:
authorShuhei Kitagawa <shuheiktgw@users.noreply.github.com>2018-05-17 11:26:51 +0900
committerEugen Rochko <eugen@zeonfederated.com>2018-05-17 04:26:51 +0200
commitb48a166c82480d5d27139cb07077a42b45149563 (patch)
tree3b86b7f2a3d1b1a760ac6ca828165702688dda08 /spec/controllers
parentdfb6907e08350ca487e2978a85013f4525526bdf (diff)
Add tests for account_moderation_notes_controller (#7524)
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/admin/account_moderation_notes_controller_spec.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/spec/controllers/admin/account_moderation_notes_controller_spec.rb b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
index ca4e55c4d..410ce6543 100644
--- a/spec/controllers/admin/account_moderation_notes_controller_spec.rb
+++ b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
@@ -1,4 +1,46 @@
 require 'rails_helper'
 
 RSpec.describe Admin::AccountModerationNotesController, type: :controller do
+  render_views
+
+  let(:user) { Fabricate(:user, admin: true) }
+  let(:target_account) { Fabricate(:account) }
+
+  before do
+    sign_in user, scope: :user
+  end
+
+  describe 'POST #create' do
+    subject { post :create, params: params }
+
+    context 'when parameters are valid' do
+      let(:params) { { account_moderation_note: { target_account_id: target_account.id, content: 'test content' } } }
+
+      it 'successfully creates a note' do
+        expect { subject }.to change { AccountModerationNote.count }.by(1)
+        expect(subject).to redirect_to admin_account_path(target_account.id)
+      end
+    end
+
+    context 'when parameters are invalid' do
+      let(:params) { { account_moderation_note: { target_account_id: target_account.id, content: '' } } }
+
+      it 'falls to create a note' do
+        expect { subject }.not_to change { AccountModerationNote.count }
+        expect(subject).to render_template 'admin/accounts/show'
+      end
+    end
+  end
+
+  describe 'DELETE #destroy' do
+    subject { delete :destroy, params: { id: note.id } }
+
+    let!(:note) { Fabricate(:account_moderation_note, account: account, target_account: target_account) }
+    let(:account) { Fabricate(:account) }
+
+    it 'destroys note' do
+      expect { subject }.to change { AccountModerationNote.count }.by(-1)
+      expect(subject).to redirect_to admin_account_path(target_account.id)
+    end
+  end
 end