require_relative '../../../test_helper'require_relative '../../../../lib/docs'class DocsResponseTest < Minitest::Spec let :response do Typhoeus::Response.new(options).tap do |response| response.extend Docs::Response response.request = request end end let :request do OpenStruct.new end let :options do OpenStruct.new headers: {} end describe "#success?" do it "returns true when the code is 200" do options.code = 200 assert response.success? end it "returns false when the code is 404" do options.code = 404 refute response.success? end end describe "#error?" do it "returns false when the code is 200" do options.code = 200 refute response.error? end it "returns false when the code is 404" do options.code = 404 refute response.error? end it "returns true when the code is 400" do options.code = 400 assert response.error? end it "returns true when the code is 500" do options.code = 500 assert response.error? end end describe "#blank?" do it "returns true when the body is blank" do options.body = ' ' assert response.blank? end it "returns false when the body isn't blank" do options.body = 'body' refute response.blank? end end describe "#content_length" do it "returns the content type" do options.headers['Content-Length'] = '188420' assert_equal 188420, response.content_length end it "defaults to 0" do assert_equal 0, response.content_length end end describe "#mime_type" do it "returns the content type" do options.headers['Content-Type'] = 'type' assert_equal 'type', response.mime_type end it "defaults to text/plain" do assert_equal 'text/plain', response.mime_type end end describe "#html?" do it "returns true when the content type is 'text/html'" do options.headers['Content-Type'] = 'text/html' assert response.html? end it "returns true when the content type is 'application/xhtml'" do options.headers['Content-Type'] = 'application/xhtml' assert response.html? end it "returns false when the content type is 'text/plain'" do options.headers['Content-Type'] = 'text/plain' refute response.html? end end describe "#url" do before { request.base_url = 'http://example.com' } it "returns a Docs::URL" do assert_instance_of Docs::URL, response.url end it "returns the #request's base url" do assert_equal request.base_url, response.url.to_s end end describe "#path" do it "returns the #url's path" do request.base_url = 'http://example.com/path' assert_equal '/path', response.path end end describe "#effective_url" do before { options.effective_url = 'http://example.com' } it "returns a Docs::URL" do assert_instance_of Docs::URL, response.effective_url end it "returns the effective url" do assert_equal options.effective_url, response.effective_url.to_s end end describe "#effective_path" do it "returns the #effective_url's path" do options.effective_url = 'http://example.com/path' assert_equal '/path', response.effective_path end endend
require_relative '../../../test_helper'
require_relative '../../../../lib/docs'
class DocsResponseTest < Minitest::Spec
let :response do
Typhoeus::Response.new(options).tap do |response|
response.extend Docs::Response
response.request = request
end
end
let :request do
OpenStruct.new
end
let :options do
OpenStruct.new headers: {}
end
describe "#success?" do
it "returns true when the code is 200" do
options.code = 200
assert response.success?
end
it "returns false when the code is 404" do
options.code = 404
refute response.success?
end
end
describe "#error?" do
it "returns false when the code is 200" do
options.code = 200
refute response.error?
end
it "returns false when the code is 404" do
options.code = 404
refute response.error?
end
it "returns true when the code is 400" do
options.code = 400
assert response.error?
end
it "returns true when the code is 500" do
options.code = 500
assert response.error?
end
end
describe "#blank?" do
it "returns true when the body is blank" do
options.body = ' '
assert response.blank?
end
it "returns false when the body isn't blank" do
options.body = 'body'
refute response.blank?
end
end
describe "#content_length" do
it "returns the content type" do
options.headers['Content-Length'] = '188420'
assert_equal 188420, response.content_length
end
it "defaults to 0" do
assert_equal 0, response.content_length
end
end
describe "#mime_type" do
it "returns the content type" do
options.headers['Content-Type'] = 'type'
assert_equal 'type', response.mime_type
end
it "defaults to text/plain" do
assert_equal 'text/plain', response.mime_type
end
end
describe "#html?" do
it "returns true when the content type is 'text/html'" do
options.headers['Content-Type'] = 'text/html'
assert response.html?
end
it "returns true when the content type is 'application/xhtml'" do
options.headers['Content-Type'] = 'application/xhtml'
assert response.html?
end
it "returns false when the content type is 'text/plain'" do
options.headers['Content-Type'] = 'text/plain'
refute response.html?
end
end
describe "#url" do
before { request.base_url = 'http://example.com' }
it "returns a Docs::URL" do
assert_instance_of Docs::URL, response.url
end
it "returns the #request's base url" do
assert_equal request.base_url, response.url.to_s
end
end
describe "#path" do
it "returns the #url's path" do
request.base_url = 'http://example.com/path'
assert_equal '/path', response.path
end
end
describe "#effective_url" do
before { options.effective_url = 'http://example.com' }
it "returns a Docs::URL" do
assert_instance_of Docs::URL, response.effective_url
end
it "returns the effective url" do
assert_equal options.effective_url, response.effective_url.to_s
end
end
describe "#effective_path" do
it "returns the #effective_url's path" do
options.effective_url = 'http://example.com/path'
assert_equal '/path', response.effective_path
end
end
end