filters_controller_spec.rb 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. require 'rails_helper'
  2. RSpec.describe Api::V1::FiltersController, type: :controller do
  3. render_views
  4. let(:user) { Fabricate(:user) }
  5. let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
  6. before do
  7. allow(controller).to receive(:doorkeeper_token) { token }
  8. end
  9. describe 'GET #index' do
  10. let(:scopes) { 'read:filters' }
  11. let!(:filter) { Fabricate(:custom_filter, account: user.account) }
  12. it 'returns http success' do
  13. get :index
  14. expect(response).to have_http_status(200)
  15. end
  16. end
  17. describe 'POST #create' do
  18. let(:scopes) { 'write:filters' }
  19. before do
  20. post :create, params: { phrase: 'magic', context: %w(home), irreversible: true }
  21. end
  22. it 'returns http success' do
  23. expect(response).to have_http_status(200)
  24. end
  25. it 'creates a filter' do
  26. filter = user.account.custom_filters.first
  27. expect(filter).to_not be_nil
  28. expect(filter.keywords.pluck(:keyword)).to eq ['magic']
  29. expect(filter.context).to eq %w(home)
  30. expect(filter.irreversible?).to be true
  31. expect(filter.expires_at).to be_nil
  32. end
  33. end
  34. describe 'GET #show' do
  35. let(:scopes) { 'read:filters' }
  36. let(:filter) { Fabricate(:custom_filter, account: user.account) }
  37. let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) }
  38. it 'returns http success' do
  39. get :show, params: { id: keyword.id }
  40. expect(response).to have_http_status(200)
  41. end
  42. end
  43. describe 'PUT #update' do
  44. let(:scopes) { 'write:filters' }
  45. let(:filter) { Fabricate(:custom_filter, account: user.account) }
  46. let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) }
  47. before do
  48. put :update, params: { id: keyword.id, phrase: 'updated' }
  49. end
  50. it 'returns http success' do
  51. expect(response).to have_http_status(200)
  52. end
  53. it 'updates the filter' do
  54. expect(keyword.reload.phrase).to eq 'updated'
  55. end
  56. end
  57. describe 'DELETE #destroy' do
  58. let(:scopes) { 'write:filters' }
  59. let(:filter) { Fabricate(:custom_filter, account: user.account) }
  60. let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) }
  61. before do
  62. delete :destroy, params: { id: keyword.id }
  63. end
  64. it 'returns http success' do
  65. expect(response).to have_http_status(200)
  66. end
  67. it 'removes the filter' do
  68. expect { keyword.reload }.to raise_error ActiveRecord::RecordNotFound
  69. end
  70. end
  71. end