featured_tags_controller_spec.rb 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # frozen_string_literal: true
  2. require 'rails_helper'
  3. describe Settings::FeaturedTagsController do
  4. render_views
  5. shared_examples 'authenticate user' do
  6. it 'redirects to sign_in page' do
  7. expect(subject).to redirect_to new_user_session_path
  8. end
  9. end
  10. context 'when user is not signed in' do
  11. subject { post :create }
  12. it_behaves_like 'authenticate user'
  13. end
  14. context 'when user is signed in' do
  15. let(:user) { Fabricate(:user, password: '12345678') }
  16. before { sign_in user, scope: :user }
  17. describe 'POST #create' do
  18. subject { post :create, params: { featured_tag: params } }
  19. context 'when parameter is valid' do
  20. let(:params) { { name: 'test' } }
  21. it 'creates featured tag' do
  22. expect { subject }.to change { user.account.featured_tags.count }.by(1)
  23. end
  24. end
  25. context 'when parameter is invalid' do
  26. let(:params) { { name: 'test, #foo !bleh' } }
  27. it 'renders new' do
  28. expect(subject).to render_template :index
  29. end
  30. end
  31. end
  32. describe 'GET to #index' do
  33. it 'responds with success' do
  34. get :index
  35. expect(response).to have_http_status(200)
  36. end
  37. end
  38. describe 'DELETE to #destroy' do
  39. let(:featured_tag) { Fabricate(:featured_tag, account: user.account) }
  40. it 'removes the featured tag' do
  41. delete :destroy, params: { id: featured_tag.id }
  42. expect(response).to redirect_to(settings_featured_tags_path)
  43. expect { featured_tag.reload }.to raise_error(ActiveRecord::RecordNotFound)
  44. end
  45. end
  46. end
  47. end