mirror of
https://framagit.org/tykayn/mastodon.git
synced 2023-08-25 08:33:12 +02:00
5c808ee0de
Unfortunately, the database query could turn out very inefficient and I did not manage to find a way to improve that. Furthermore, there were still behavior inconsistencies between fetching the timeline from Redis and fetching it from Postgres.
45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe HomeFeed, type: :model do
|
|
let(:account) { Fabricate(:account) }
|
|
|
|
subject { described_class.new(account) }
|
|
|
|
describe '#get' do
|
|
before do
|
|
Fabricate(:status, account: account, id: 1)
|
|
Fabricate(:status, account: account, id: 2)
|
|
Fabricate(:status, account: account, id: 3)
|
|
Fabricate(:status, account: account, id: 10)
|
|
end
|
|
|
|
context 'when feed is generated' do
|
|
before do
|
|
Redis.current.zadd(
|
|
FeedManager.instance.key(:home, account.id),
|
|
[[4, 4], [3, 3], [2, 2], [1, 1]]
|
|
)
|
|
end
|
|
|
|
it 'gets statuses with ids in the range from redis' do
|
|
results = subject.get(3)
|
|
|
|
expect(results.map(&:id)).to eq [3, 2]
|
|
expect(results.first.attributes.keys).to eq %w(id updated_at)
|
|
end
|
|
end
|
|
|
|
context 'when feed is being generated' do
|
|
before do
|
|
Redis.current.set("account:#{account.id}:regeneration", true)
|
|
end
|
|
|
|
it 'returns nothing' do
|
|
results = subject.get(3)
|
|
|
|
expect(results.map(&:id)).to eq []
|
|
end
|
|
end
|
|
end
|
|
end
|