From c7a535de22cef8ce62bcb59a8b9fc4ad812c3294 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Sun, 23 Oct 2016 19:00:33 +0200 Subject: [PATCH] Refactor Hbc::UrlChecker test. --- Library/Homebrew/cask/lib/hbc/url_checker.rb | 1 + .../cask/test/cask/url_checker_test.rb | 64 ++++++++++++------- .../cask/test/support/fake_fetcher.rb | 39 ----------- Library/Homebrew/cask/test/test_helper.rb | 1 - 4 files changed, 42 insertions(+), 63 deletions(-) delete mode 100644 Library/Homebrew/cask/test/support/fake_fetcher.rb diff --git a/Library/Homebrew/cask/lib/hbc/url_checker.rb b/Library/Homebrew/cask/lib/hbc/url_checker.rb index 299684b132..60a15ca2fe 100644 --- a/Library/Homebrew/cask/lib/hbc/url_checker.rb +++ b/Library/Homebrew/cask/lib/hbc/url_checker.rb @@ -1,4 +1,5 @@ require "hbc/checkable" +require "hbc/fetcher" module Hbc class UrlChecker diff --git a/Library/Homebrew/cask/test/cask/url_checker_test.rb b/Library/Homebrew/cask/test/cask/url_checker_test.rb index 6871b42155..199182bf29 100644 --- a/Library/Homebrew/cask/test/cask/url_checker_test.rb +++ b/Library/Homebrew/cask/test/cask/url_checker_test.rb @@ -2,32 +2,50 @@ require "test_helper" describe Hbc::UrlChecker do describe "request processing" do - it "adds an error if response is empty" do - cask = Hbc.load("basic-cask") - Hbc::FakeFetcher.fake_response_for(cask.url, "") - checker = Hbc::UrlChecker.new(cask, Hbc::FakeFetcher) - checker.run - checker.errors.must_include "timeout while requesting #{cask.url}" + let(:cask) { Hbc.load("basic-cask") } + let(:checker) { Hbc::UrlChecker.new(cask) } + let(:with_stubbed_fetcher) { + lambda { |&block| + Hbc::Fetcher.stub(:head, response) do + checker.run + instance_eval(&block) + end + } + } + + describe "with an empty response" do + let(:response) { "" } + + it "adds an error" do + with_stubbed_fetcher.call do + expect(checker.errors).must_include("timeout while requesting #{cask.url}") + end + end end - it "properly populates the response code and headers from an http response" do - cask = Hbc.load("basic-cask") + describe "with a valid http response" do + let(:response) { + <<-EOS.undent + HTTP/1.1 200 OK + Content-Type: application/x-apple-diskimage + ETag: "b4208f3e84967be4b078ecaa03fba941" + Content-Length: 23726161 + Last-Modified: Sun, 12 Aug 2012 21:17:21 GMT + EOS + } - Hbc::FakeFetcher.fake_response_for(cask.url, <<-EOS.undent) - HTTP/1.1 200 OK - Content-Type: application/x-apple-diskimage - ETag: "b4208f3e84967be4b078ecaa03fba941" - Content-Length: 23726161 - Last-Modified: Sun, 12 Aug 2012 21:17:21 GMT - EOS - - checker = Hbc::UrlChecker.new(cask, Hbc::FakeFetcher) - checker.run - checker.response_status.must_equal "HTTP/1.1 200 OK" - checker.headers.must_equal("Content-Type" => "application/x-apple-diskimage", - "ETag" => '"b4208f3e84967be4b078ecaa03fba941"', - "Content-Length" => "23726161", - "Last-Modified" => "Sun, 12 Aug 2012 21:17:21 GMT") + it "properly populates the response code and headers" do + with_stubbed_fetcher.call do + expect(checker.errors).must_be_empty + expect(checker.response_status).must_equal("HTTP/1.1 200 OK") + expect(checker.headers).must_equal( + "Content-Type" => "application/x-apple-diskimage", + "ETag" => '"b4208f3e84967be4b078ecaa03fba941"', + "Content-Length" => "23726161", + "Last-Modified" => "Sun, 12 Aug 2012 21:17:21 GMT" + ) + end + end end end end diff --git a/Library/Homebrew/cask/test/support/fake_fetcher.rb b/Library/Homebrew/cask/test/support/fake_fetcher.rb deleted file mode 100644 index 43483751fe..0000000000 --- a/Library/Homebrew/cask/test/support/fake_fetcher.rb +++ /dev/null @@ -1,39 +0,0 @@ -module Hbc - class FakeFetcher - def self.fake_response_for(url, response) - @responses[url] = response - end - - def self.head(url) - @responses ||= {} - raise("no response faked for #{url.inspect}") unless @responses.key?(url) - @responses[url] - end - - def self.init - @responses = {} - end - - def self.clear - @responses = {} - end - end -end - -module FakeFetcherHooks - def before_setup - super - Hbc::FakeFetcher.init - end - - def after_teardown - super - Hbc::FakeFetcher.clear - end -end - -module MiniTest - class Spec - include FakeFetcherHooks - end -end diff --git a/Library/Homebrew/cask/test/test_helper.rb b/Library/Homebrew/cask/test/test_helper.rb index 6b66c11383..85024aae86 100644 --- a/Library/Homebrew/cask/test/test_helper.rb +++ b/Library/Homebrew/cask/test/test_helper.rb @@ -100,7 +100,6 @@ require "support/shared_examples" require "support/shared_examples/dsl_base.rb" require "support/shared_examples/staged.rb" -require "support/fake_fetcher" require "support/fake_dirs" require "support/fake_system_command" require "support/cleanup"