AI: address review on PR #461

このコミットが含まれているのは:
Codex Night Worker
2026-11-13 12:38:13 +09:00
コミット d6486cda3e
+39
ファイルの表示
@@ -206,6 +206,25 @@ RSpec.describe 'Posts API', type: :request do
end
context 'when q is provided' do
['SPEC_TAG', 'SpEc_TaG', 'spec_tág', 'MANKO', 'MaNkO', 'mánko'].each do |name|
it "matches #{ name } using database collation" do
get '/posts', params: { locale: 'ja', tags: name }
expect(response).to have_http_status(:ok)
expect(json.fetch('count')).to eq(2)
expect(json.fetch('posts').map { _1.fetch('id') })
.to contain_exactly(post_record.id, hit_post.id)
end
it "excludes #{ name } using database collation" do
get '/posts', params: { locale: 'ja', tags: "not:#{ name }" }
expect(response).to have_http_status(:ok)
expect(json.fetch('count')).to eq(1)
expect(json.fetch('posts').map { _1.fetch('id') }).to eq([miss_post.id])
end
end
it 'filters posts by q (hit case)' do
get '/posts', params: { tags: 'spec_tag' }
@@ -266,6 +285,26 @@ RSpec.describe 'Posts API', type: :request do
PostExternalTag.create!(post: miss_post, external_tag:)
end
['NICO:SEARCH_EXTERNAL', 'NiCo:SeArCh_ExTeRnAl', 'nico:séarch_external'].each do |name|
it "matches #{ name } using database collation" do
get '/posts', params: { locale: 'ja', tags: name }
expect(response).to have_http_status(:ok)
expect(json.fetch('count')).to eq(2)
expect(json.fetch('posts').map { _1.fetch('id') })
.to contain_exactly(miss_post.id, both_post.id)
end
it "excludes #{ name } using database collation" do
get '/posts', params: { locale: 'ja', tags: "not:#{ name }" }
expect(response).to have_http_status(:ok)
expect(json.fetch('count')).to eq(2)
expect(json.fetch('posts').map { _1.fetch('id') })
.to contain_exactly(post_record.id, hit_post.id)
end
end
it 'keeps internal name searches independent of colliding external ids' do
get '/posts', params: { tags: primary_tag_name_for(tag, 'ja').name }