Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixes FeedService tests to actually test things.

The original tests stubbed the private methods which means they mostly
just tested ruby's precedence order. :) Private methods are forced
integrations... we have to allow them to operate in turn in order to
assess behavior.
  • Loading branch information...
commit fdd12c27156bd7d38aebbb21637e0db052580faa 1 parent 4c88b88
@wilkie wilkie authored
Showing with 29 additions and 3 deletions.
  1. +29 −3 test/services/feed_service_test.rb
View
32 test/services/feed_service_test.rb
@@ -15,7 +15,9 @@
let(:target_feed) { "505cc1beb4f2cd000200022c" }
before do
- service.stubs(:find_feed_by_id).returns(existing_feed)
+ Feed.stubs(:first)
+ .with(has_entry(:id, target_feed))
+ .returns(existing_feed)
end
it "returns the feed" do
@@ -29,12 +31,18 @@
let(:user) { mock }
let(:author) { mock }
let(:feed) { mock }
+ let(:uri) { mock }
describe "when the feed exists" do
before do
User.stubs(:find_by_case_insensitive_username).returns(user)
user.stubs(:author).returns(author)
+ Kernel.stubs(:URI).returns(uri)
+ uri.stubs(:host).returns("example.com")
author.stubs(:feed).returns(feed)
+
+ service.stubs(:find_feed_by_id).returns(nil)
+ service.stubs(:find_feed_by_remote_url).returns nil
end
it "returns the feed" do
@@ -45,6 +53,10 @@
describe "when the feed does not exist" do
before do
User.stubs(:find_by_case_insensitive_username).returns(nil)
+ Kernel.stubs(:URI).returns(uri)
+ uri.stubs(:host).returns("example.com")
+
+ service.stubs(:find_feed_by_id).returns(nil)
service.stubs(:find_feed_by_remote_url).returns(existing_feed)
end
@@ -57,11 +69,19 @@
describe "when the feed can by found by remote URL" do
# the remote URL of user 'gavinlaking@rstat.us' (follow me!)
let(:target_feed) { "https://rstat.us/feeds/505cc1beb4f2cd000200022c.atom" }
+ let(:feed_data_cov) { mock }
+ let(:feed_data) { mock }
before do
+ Feed.stubs(:first)
+ .with(has_entry(:remote_url, "feed_url"))
+ .returns(existing_feed)
+ SubscriberToFeedDataConverter.stubs(:new).returns(feed_data_cov)
+ feed_data_cov.stubs(:get_feed_data!).returns(feed_data)
+ feed_data.stubs(:url).returns("feed_url")
+
service.stubs(:find_feed_by_id).returns nil
service.stubs(:find_feed_by_username).returns nil
- service.stubs(:find_feed_by_remote_url).returns(existing_feed)
end
it "returns the feed" do
@@ -71,15 +91,21 @@
describe "when the feed doesn't exist" do
let(:target_feed) { "gavinlaking@rstat.us" } # (follow me!)
+ let(:feed_data_cov) { mock }
+ let(:feed_data) { mock }
before do
service.stubs(:find_feed_by_id).returns nil
service.stubs(:find_feed_by_username).returns nil
service.stubs(:find_feed_by_remote_url).returns nil
- service.stubs(:create_feed_from_feed_data).returns(new_feed)
+ SubscriberToFeedDataConverter.stubs(:new).returns(feed_data_cov)
+ feed_data_cov.stubs(:get_feed_data!).returns(feed_data)
end
it "creates the feed" do
+ Feed.expects(:create_and_populate!)
+ .with(feed_data)
+ .returns(new_feed)
service.find_or_create!.must_equal new_feed
end
end
Please sign in to comment.
Something went wrong with that request. Please try again.