このコミットが含まれているのは:
@@ -0,0 +1,42 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'Wiki resource ordering', type: :request do
|
||||
include TagGroupRecords
|
||||
let(:user) { create_member_user! }
|
||||
|
||||
it 'selects the latest twenty across both resources before applying the global limit' do
|
||||
start = Time.utc(2026, 1, 1)
|
||||
descriptions = 24.times.map do |index|
|
||||
tag = create(:tag, primary_name: "rank_#{ index }")
|
||||
TagDescription.create!(tag:, language_code: 'ja', body: 'current', version_no: 1,
|
||||
updated_at: start + index.hours)
|
||||
end
|
||||
groups = [24, 25].map do |hour|
|
||||
group = TagGroup.find(seed_group(name: "rank_group_#{ hour }"))
|
||||
group.update_columns(updated_at: start + hour.hours)
|
||||
group
|
||||
end
|
||||
|
||||
get '/wiki', params: { title: 'rank' }
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
expected = groups.reverse.map { ['tag_group', _1.id] } +
|
||||
descriptions.last(18).reverse.map { ['tag_description', _1.id] }
|
||||
expect(json.map { [_1.fetch('resource_type'), _1.fetch('id')] }).to eq(expected)
|
||||
end
|
||||
|
||||
it 'breaks timestamp ties by resource kind and ID while retaining legacy overlaps' do
|
||||
time = Time.utc(2026, 1, 1)
|
||||
tag = create(:tag, primary_name: 'tied')
|
||||
TagDescription.create!(id: 51, tag:, language_code: 'ja', body: 'current',
|
||||
version_no: 1, updated_at: time)
|
||||
group = TagGroup.find(seed_group(name: 'tied', id: 51))
|
||||
group.update_columns(updated_at: time)
|
||||
|
||||
2.times do
|
||||
get '/wiki', params: { title: 'tied' }
|
||||
expect(json.map { [_1.fetch('resource_type'), _1.fetch('id')] })
|
||||
.to eq([['tag_description', 51], ['tag_group', 51]])
|
||||
end
|
||||
end
|
||||
end
|
||||
新しいイシューから参照
ユーザーをブロックする