diff --git a/spec/factories/stories.rb b/spec/factories/stories.rb index 18aa9ca23..df8699c31 100644 --- a/spec/factories/stories.rb +++ b/spec/factories/stories.rb @@ -1,5 +1,6 @@ module Factories STORY_TRAITS = { + read: -> { { is_read: true } }, unread: -> { { is_read: false } } }.freeze diff --git a/spec/repositories/story_repository_spec.rb b/spec/repositories/story_repository_spec.rb index 3641e5162..f60a6e141 100644 --- a/spec/repositories/story_repository_spec.rb +++ b/spec/repositories/story_repository_spec.rb @@ -240,6 +240,50 @@ end end + describe ".feed" do + it "returns stories for the given feed id" do + feed = create_feed + story = create_story(feed: feed) + + expect(StoryRepository.feed(feed.id)).to eq([story]) + end + + it "sorts stories by published" do + feed = create_feed + story1 = create_story(feed: feed, published: 1.day.ago) + story2 = create_story(feed: feed, published: 1.hour.ago) + + expect(StoryRepository.feed(feed.id)).to eq([story2, story1]) + end + + it "does not return stories for other feeds" do + feed1 = create_feed + feed2 = create_feed + create_story(feed: feed2) + create_story + + expect(StoryRepository.feed(feed1.id)).to be_empty + end + end + + describe ".read_count" do + it "returns the count of read stories" do + create_story(:read) + create_story(:read) + create_story(:read) + + expect(StoryRepository.read_count).to eq(3) + end + + it "does not count unread stories" do + create_story(:unread) + create_story(:unread) + create_story(:unread) + + expect(StoryRepository.read_count).to eq(0) + end + end + describe ".extract_url" do it "returns the url" do feed = double(url: "http://github.com")