|
4 | 4 | app_require "repositories/feed_repository" |
5 | 5 |
|
6 | 6 | describe FeedRepository do |
| 7 | + describe ".fetch" do |
| 8 | + let(:feed) { Feed.new(id: 1) } |
| 9 | + |
| 10 | + it "finds by id" do |
| 11 | + expect(Feed).to receive(:find).with(feed.id).and_return(feed) |
| 12 | + FeedRepository.fetch(feed.id) |
| 13 | + end |
| 14 | + |
| 15 | + it "returns found feed" do |
| 16 | + allow(Feed).to receive(:find).with(feed.id).and_return(feed) |
| 17 | + |
| 18 | + result = FeedRepository.fetch(feed.id) |
| 19 | + |
| 20 | + expect(result).to eq feed |
| 21 | + end |
| 22 | + end |
| 23 | + |
| 24 | + describe ".fetch_by_ids" do |
| 25 | + it "finds all feeds by id" do |
| 26 | + feeds = [create_feed, create_feed] |
| 27 | + |
| 28 | + expect(FeedRepository.fetch_by_ids(feeds.map(&:id))).to match_array(feeds) |
| 29 | + end |
| 30 | + |
| 31 | + it "does not find other feeds" do |
| 32 | + feed1 = create_feed |
| 33 | + create_feed |
| 34 | + |
| 35 | + expect(FeedRepository.fetch_by_ids(feed1.id)).to eq([feed1]) |
| 36 | + end |
| 37 | + end |
| 38 | + |
| 39 | + describe ".update_feed" do |
| 40 | + it "saves the name and url" do |
| 41 | + feed = Feed.new |
| 42 | + |
| 43 | + FeedRepository.update_feed(feed, "Test Feed", "example.com/feed") |
| 44 | + |
| 45 | + expect(feed.name).to eq "Test Feed" |
| 46 | + expect(feed.url).to eq "example.com/feed" |
| 47 | + end |
| 48 | + end |
| 49 | + |
7 | 50 | describe ".update_last_fetched" do |
8 | 51 | let(:timestamp) { Time.now } |
9 | 52 |
|
|
43 | 86 | end |
44 | 87 | end |
45 | 88 |
|
46 | | - describe ".update_feed" do |
47 | | - it "saves the name and url" do |
48 | | - feed = Feed.new |
| 89 | + describe ".delete" do |
| 90 | + it "deletes the feed by id" do |
| 91 | + feed = create_feed |
49 | 92 |
|
50 | | - FeedRepository.update_feed(feed, "Test Feed", "example.com/feed") |
| 93 | + FeedRepository.delete(feed.id) |
51 | 94 |
|
52 | | - expect(feed.name).to eq "Test Feed" |
53 | | - expect(feed.url).to eq "example.com/feed" |
| 95 | + expect(Feed.unscoped.find_by(id: feed.id)).to be_nil |
| 96 | + end |
| 97 | + |
| 98 | + it "does not delete other feeds" do |
| 99 | + feed1 = create_feed |
| 100 | + feed2 = create_feed |
| 101 | + |
| 102 | + FeedRepository.delete(feed1.id) |
| 103 | + |
| 104 | + expect(Feed.unscoped.find_by(id: feed2.id)).to eq(feed2) |
54 | 105 | end |
55 | 106 | end |
56 | 107 |
|
57 | | - describe "fetch" do |
58 | | - let(:feed) { Feed.new(id: 1) } |
| 108 | + describe ".list" do |
| 109 | + it "returns all feeds ordered by name, case insensitive" do |
| 110 | + feed1 = create_feed(name: "foo") |
| 111 | + feed2 = create_feed(name: "Fabulous") |
| 112 | + feed3 = create_feed(name: "Zooby") |
| 113 | + feed4 = create_feed(name: "zabby") |
59 | 114 |
|
60 | | - it "finds by id" do |
61 | | - expect(Feed).to receive(:find).with(feed.id).and_return(feed) |
62 | | - FeedRepository.fetch(feed.id) |
| 115 | + expect(FeedRepository.list).to eq([feed2, feed1, feed4, feed3]) |
63 | 116 | end |
| 117 | + end |
64 | 118 |
|
65 | | - it "returns found feed" do |
66 | | - allow(Feed).to receive(:find).with(feed.id).and_return(feed) |
| 119 | + describe ".in_group" do |
| 120 | + it "returns feeds that are in a group" do |
| 121 | + feed1 = create_feed(group_id: 5) |
| 122 | + feed2 = create_feed(group_id: 6) |
67 | 123 |
|
68 | | - result = FeedRepository.fetch(feed.id) |
| 124 | + expect(FeedRepository.in_group).to match_array([feed1, feed2]) |
| 125 | + end |
69 | 126 |
|
70 | | - expect(result).to eq feed |
| 127 | + it "does not return feeds that are not in a group" do |
| 128 | + create_feed |
| 129 | + create_feed |
| 130 | + |
| 131 | + expect(FeedRepository.in_group).to be_empty |
71 | 132 | end |
72 | 133 | end |
73 | 134 | end |
0 commit comments