From: Shuhei Kitagawa Date: Wed, 9 May 2018 06:41:26 +0000 (+0900) Subject: Add tests for admin/invites_controller (#7412) X-Git-Url: https://git.xn--scling-oua.cat.family/?a=commitdiff_plain;h=35eff337d5482ac251e2f75031c5be2ab583e265;p=mastodon.git Add tests for admin/invites_controller (#7412) --- diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb new file mode 100644 index 000000000..e7d995411 --- /dev/null +++ b/spec/controllers/admin/invites_controller_spec.rb @@ -0,0 +1,43 @@ +require 'rails_helper' + +describe Admin::InvitesController do + render_views + + let(:user) { Fabricate(:user, admin: true) } + + before do + sign_in user, scope: :user + end + + describe 'GET #index' do + subject { get :index, params: { available: true } } + + let!(:invite) { Fabricate(:invite) } + + it 'renders index page' do + expect(subject).to render_template :index + expect(assigns(:invites)).to include invite + end + end + + describe 'POST #create' do + subject { post :create, params: { invite: { max_uses: '10', expires_in: 1800 } } } + + it 'succeeds to create a invite' do + expect{ subject }.to change { Invite.count }.by(1) + expect(subject).to redirect_to admin_invites_path + expect(Invite.last).to have_attributes(user_id: user.id, max_uses: 10) + end + end + + describe 'DELETE #destroy' do + let!(:invite) { Fabricate(:invite, expires_at: nil) } + + subject { delete :destroy, params: { id: invite.id } } + + it 'expires invite' do + expect(subject).to redirect_to admin_invites_path + expect(invite.reload).to be_expired + end + end +end