39 lines
1.1 KiB
Ruby
39 lines
1.1 KiB
Ruby
require Rails.root.join('spec', 'shared_behaviors', 'stream')
|
|
|
|
describe Stream::Person do
|
|
describe "shared behaviors" do
|
|
before do
|
|
@stream = Stream::Person.new(alice, bob.person, max_time: Time.zone.now, order: "updated_at")
|
|
end
|
|
|
|
it_should_behave_like "it is a stream"
|
|
end
|
|
|
|
describe "#posts" do
|
|
it "calls user#posts_from if the user is present" do
|
|
stream = Stream::Person.new(alice, bob.person, max_time: Time.zone.now, order: "updated_at")
|
|
expect(alice).to receive(:posts_from).with(bob.person)
|
|
stream.posts
|
|
end
|
|
end
|
|
|
|
it "returns the most recent posts" do
|
|
posts = []
|
|
fetched_posts = []
|
|
|
|
aspect = bob.aspects.first.id
|
|
Timecop.scale(600) do
|
|
16.times do |n|
|
|
posts << bob.post(:status_message, text: "hello#{n}", to: aspect)
|
|
posts << bob.post(:status_message, text: "hello#{n}", public: true)
|
|
end
|
|
|
|
fetched_posts = Stream::Person.new(alice, bob.person).stream_posts
|
|
end
|
|
|
|
posts = posts.reverse.slice(0..14)
|
|
fetched_posts = fetched_posts.first(15)
|
|
|
|
expect(fetched_posts).to eq(posts)
|
|
end
|
|
end
|