forked from mislav/contacts
-
Notifications
You must be signed in to change notification settings - Fork 6
/
spec_helper.rb
84 lines (69 loc) · 1.88 KB
/
spec_helper.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
require 'rubygems'
gem 'rspec', '~> 1.1.3'
require 'spec'
gem 'mocha', '~> 0.9.0'
require 'mocha'
require 'cgi'
require 'fake_web'
FakeWeb.allow_net_connect = false
module SampleFeeds
FEED_DIR = File.dirname(__FILE__) + '/feeds/'
def sample_xml(name)
File.read "#{FEED_DIR}#{name}.xml"
end
end
module HttpMocks
def mock_response(type = :success)
klass = case type
when :success then Net::HTTPSuccess
when :redirect then Net::HTTPRedirection
when :fail then Net::HTTPClientError
else type
end
klass.new(nil, nil, nil)
end
def mock_connection(ssl = true)
connection = mock('HTTP connection')
connection.stubs(:start)
connection.stubs(:finish)
if ssl
connection.expects(:use_ssl=).with(true)
connection.expects(:verify_mode=).with(OpenSSL::SSL::VERIFY_NONE)
end
connection
end
end
Spec::Runner.configure do |config|
config.include SampleFeeds, HttpMocks
# config.predicate_matchers[:swim] = :can_swim?
config.mock_with :mocha
end
module Mocha
module ParameterMatchers
def query_string(entries, partial = false)
QueryStringMatcher.new(entries, partial)
end
end
end
class QueryStringMatcher < Mocha::ParameterMatchers::Base
def initialize(entries, partial)
@entries = entries
@partial = partial
end
def matches?(available_parameters)
string = available_parameters.shift.split('?').last
broken = string.split('&').map { |pair| pair.split('=').map { |value| CGI.unescape(value) } }
hash = Hash[*broken.flatten]
if @partial
has_entry_matchers = @entries.map do |key, value|
Mocha::ParameterMatchers::HasEntry.new(key, value)
end
Mocha::ParameterMatchers::AllOf.new(*has_entry_matchers).matches?([hash])
else
@entries == hash
end
end
def mocha_inspect
"query_string(#{@entries.mocha_inspect})"
end
end