diff --git a/spec/factories/stories.rb b/spec/factories/stories.rb index df8699c31..c4c622868 100644 --- a/spec/factories/stories.rb +++ b/spec/factories/stories.rb @@ -1,6 +1,7 @@ module Factories STORY_TRAITS = { read: -> { { is_read: true } }, + starred: -> { { is_starred: true } }, unread: -> { { is_read: false } } }.freeze diff --git a/spec/repositories/story_repository_spec.rb b/spec/repositories/story_repository_spec.rb index 3bc4c372e..75ac83dde 100644 --- a/spec/repositories/story_repository_spec.rb +++ b/spec/repositories/story_repository_spec.rb @@ -293,6 +293,61 @@ end end + describe ".starred" do + it "returns starred stories" do + story = create_story(:starred) + + expect(StoryRepository.starred).to eq([story]) + end + + it "sorts stories by published" do + story1 = create_story(:starred, published: 1.day.ago) + story2 = create_story(:starred, published: 1.hour.ago) + + expect(StoryRepository.starred).to eq([story2, story1]) + end + + it "does not return unstarred stories" do + create_story + + expect(StoryRepository.starred).to be_empty + end + + it "paginates results" do + stories = + 21.times.map { |num| create_story(:starred, published: num.days.ago) } + + expect(StoryRepository.starred).to eq(stories[0...20]) + expect(StoryRepository.starred(2)).to eq([stories.last]) + end + end + + describe ".unstarred_read_stories_older_than" do + it "returns unstarred read stories older than given number of days" do + story = create_story(:read, published: 6.days.ago) + + expect(StoryRepository.unstarred_read_stories_older_than(5)).to eq([story]) + end + + it "does not return starred stories older than the given number of days" do + create_story(:read, :starred, published: 6.days.ago) + + expect(StoryRepository.unstarred_read_stories_older_than(5)).to be_empty + end + + it "does not return unread stories older than the given number of days" do + create_story(:unread, published: 6.days.ago) + + expect(StoryRepository.unstarred_read_stories_older_than(5)).to be_empty + end + + it "does not return stories newer than given number of days" do + create_story(:read, published: 4.days.ago) + + expect(StoryRepository.unstarred_read_stories_older_than(5)).to be_empty + end + end + describe ".read_count" do it "returns the count of read stories" do create_story(:read) diff --git a/spec/support/coverage.rb b/spec/support/coverage.rb index 905d5861d..03b601a45 100644 --- a/spec/support/coverage.rb +++ b/spec/support/coverage.rb @@ -14,4 +14,6 @@ add_group("Repositories", "app/repositories") add_group("Tasks", "app/tasks") add_group("Utils", "app/utils") + add_filter("/db/migrate/") end +SimpleCov.minimum_coverage(100)