You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.2 KiB

  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.phrase).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. it 'returns http success' do
  38. get :show, params: { id: filter.id }
  39. expect(response).to have_http_status(200)
  40. end
  41. end
  42. describe 'PUT #update' do
  43. let(:scopes) { 'write:filters' }
  44. let(:filter) { Fabricate(:custom_filter, account: user.account) }
  45. before do
  46. put :update, params: { id: filter.id, phrase: 'updated' }
  47. end
  48. it 'returns http success' do
  49. expect(response).to have_http_status(200)
  50. end
  51. it 'updates the filter' do
  52. expect(filter.reload.phrase).to eq 'updated'
  53. end
  54. end
  55. describe 'DELETE #destroy' do
  56. let(:scopes) { 'write:filters' }
  57. let(:filter) { Fabricate(:custom_filter, account: user.account) }
  58. before do
  59. delete :destroy, params: { id: filter.id }
  60. end
  61. it 'returns http success' do
  62. expect(response).to have_http_status(200)
  63. end
  64. it 'removes the filter' do
  65. expect { filter.reload }.to raise_error ActiveRecord::RecordNotFound
  66. end
  67. end
  68. end