# -*- encoding: utf-8 -*-
require File.expand_path('helper', File.dirname(__FILE__))
require 'httpclient/include_client'
class TestIncludeClient < Test::Unit::TestCase
class Widget
extend HTTPClient::IncludeClient
include_http_client("http://example.com") do |client|
client.cookie_manager = nil
client.agent_name = "iMonkey 4k"
end
end
class OtherWidget
extend HTTPClient::IncludeClient
include_http_client
include_http_client(:method_name => :other_http_client)
end
class UnrelatedBlankClass ; end
def test_client_class_level_singleton
assert_equal Widget.http_client.object_id, Widget.http_client.object_id
assert_equal Widget.http_client.object_id, Widget.new.http_client.object_id
assert_not_equal Widget.http_client.object_id, OtherWidget.http_client.object_id
end
def test_configured
assert_equal Widget.http_client.agent_name, "iMonkey 4k"
assert_nil Widget.http_client.cookie_manager
assert_equal Widget.http_client.proxy.to_s, "http://example.com"
end
def test_two_includes
assert_not_equal OtherWidget.http_client.object_id, OtherWidget.other_http_client.object_id
assert_equal OtherWidget.other_http_client.object_id, OtherWidget.new.other_http_client.object_id
end
# meta-programming gone wrong sometimes accidentally
# adds the class method to _everyone_, a mistake we've made before.
def test_not_infected_class_hieararchy
assert ! Class.respond_to?(:http_client)
assert ! UnrelatedBlankClass.respond_to?(:http_client)
end
end
Copyright 2K16 - 2K18 Indonesian Hacker Rulez