forked from fedi/mastodon
Fix irreversible and whole_word parameters handling in /api/v1/filters (#21988)
Fixes #21965
This commit is contained in:
parent
f80c3d40e8
commit
69137f4a90
|
@ -13,7 +13,7 @@ class Api::V1::FiltersController < Api::BaseController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
ApplicationRecord.transaction do
|
ApplicationRecord.transaction do
|
||||||
filter_category = current_account.custom_filters.create!(resource_params)
|
filter_category = current_account.custom_filters.create!(filter_params)
|
||||||
@filter = filter_category.keywords.create!(keyword_params)
|
@filter = filter_category.keywords.create!(keyword_params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -52,11 +52,11 @@ class Api::V1::FiltersController < Api::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def resource_params
|
def resource_params
|
||||||
params.permit(:phrase, :expires_in, :irreversible, context: [])
|
params.permit(:phrase, :expires_in, :irreversible, :whole_word, context: [])
|
||||||
end
|
end
|
||||||
|
|
||||||
def filter_params
|
def filter_params
|
||||||
resource_params.slice(:expires_in, :irreversible, :context)
|
resource_params.slice(:phrase, :expires_in, :irreversible, :context)
|
||||||
end
|
end
|
||||||
|
|
||||||
def keyword_params
|
def keyword_params
|
||||||
|
|
|
@ -54,7 +54,7 @@ class CustomFilter < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def irreversible=(value)
|
def irreversible=(value)
|
||||||
self.action = value ? :hide : :warn
|
self.action = ActiveModel::Type::Boolean.new.cast(value) ? :hide : :warn
|
||||||
end
|
end
|
||||||
|
|
||||||
def irreversible?
|
def irreversible?
|
||||||
|
|
|
@ -22,9 +22,11 @@ RSpec.describe Api::V1::FiltersController, type: :controller do
|
||||||
|
|
||||||
describe 'POST #create' do
|
describe 'POST #create' do
|
||||||
let(:scopes) { 'write:filters' }
|
let(:scopes) { 'write:filters' }
|
||||||
|
let(:irreversible) { true }
|
||||||
|
let(:whole_word) { false }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
post :create, params: { phrase: 'magic', context: %w(home), irreversible: true }
|
post :create, params: { phrase: 'magic', context: %w(home), irreversible: irreversible, whole_word: whole_word }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns http success' do
|
it 'returns http success' do
|
||||||
|
@ -34,11 +36,29 @@ RSpec.describe Api::V1::FiltersController, type: :controller do
|
||||||
it 'creates a filter' do
|
it 'creates a filter' do
|
||||||
filter = user.account.custom_filters.first
|
filter = user.account.custom_filters.first
|
||||||
expect(filter).to_not be_nil
|
expect(filter).to_not be_nil
|
||||||
expect(filter.keywords.pluck(:keyword)).to eq ['magic']
|
expect(filter.keywords.pluck(:keyword, :whole_word)).to eq [['magic', whole_word]]
|
||||||
expect(filter.context).to eq %w(home)
|
expect(filter.context).to eq %w(home)
|
||||||
expect(filter.irreversible?).to be true
|
expect(filter.irreversible?).to be irreversible
|
||||||
expect(filter.expires_at).to be_nil
|
expect(filter.expires_at).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with different parameters' do
|
||||||
|
let(:irreversible) { false }
|
||||||
|
let(:whole_word) { true }
|
||||||
|
|
||||||
|
it 'returns http success' do
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates a filter' do
|
||||||
|
filter = user.account.custom_filters.first
|
||||||
|
expect(filter).to_not be_nil
|
||||||
|
expect(filter.keywords.pluck(:keyword, :whole_word)).to eq [['magic', whole_word]]
|
||||||
|
expect(filter.context).to eq %w(home)
|
||||||
|
expect(filter.irreversible?).to be irreversible
|
||||||
|
expect(filter.expires_at).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'GET #show' do
|
describe 'GET #show' do
|
||||||
|
|
Loading…
Reference in a new issue