google-geo 1.0 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/CHANGELOG +5 -0
  2. data/README +12 -8
  3. data/lib/google/geo.rb +10 -6
  4. data/test/fixtures/invalid_map_key.xml +10 -0
  5. data/test/fixtures/missing_address.xml +10 -0
  6. data/test/fixtures/server_error.xml +10 -0
  7. data/test/fixtures/success.xml +36 -0
  8. data/test/fixtures/success_with_multiple_addresses.xml +62 -0
  9. data/test/fixtures/too_many_queries.xml +10 -0
  10. data/test/fixtures/unavailable_address.xml +10 -0
  11. data/test/fixtures/unknown_address.xml +10 -0
  12. data/test/geo_test.rb +19 -5
  13. data/vendor/mocha-0.4.0/COPYING +3 -0
  14. data/vendor/mocha-0.4.0/MIT-LICENSE +7 -0
  15. data/vendor/mocha-0.4.0/README +35 -0
  16. data/vendor/mocha-0.4.0/RELEASE +98 -0
  17. data/vendor/mocha-0.4.0/Rakefile +126 -0
  18. data/vendor/mocha-0.4.0/examples/misc.rb +36 -0
  19. data/vendor/mocha-0.4.0/examples/mocha.rb +26 -0
  20. data/vendor/mocha-0.4.0/examples/stubba.rb +65 -0
  21. data/vendor/mocha-0.4.0/lib/mocha.rb +19 -0
  22. data/vendor/mocha-0.4.0/lib/mocha/any_instance_method.rb +35 -0
  23. data/vendor/mocha-0.4.0/lib/mocha/auto_verify.rb +113 -0
  24. data/vendor/mocha-0.4.0/lib/mocha/central.rb +35 -0
  25. data/vendor/mocha-0.4.0/lib/mocha/class_method.rb +62 -0
  26. data/vendor/mocha-0.4.0/lib/mocha/expectation.rb +295 -0
  27. data/vendor/mocha-0.4.0/lib/mocha/expectation_error.rb +6 -0
  28. data/vendor/mocha-0.4.0/lib/mocha/infinite_range.rb +27 -0
  29. data/vendor/mocha-0.4.0/lib/mocha/inspect.rb +37 -0
  30. data/vendor/mocha-0.4.0/lib/mocha/instance_method.rb +8 -0
  31. data/vendor/mocha-0.4.0/lib/mocha/metaclass.rb +7 -0
  32. data/vendor/mocha-0.4.0/lib/mocha/mock.rb +20 -0
  33. data/vendor/mocha-0.4.0/lib/mocha/mock_methods.rb +122 -0
  34. data/vendor/mocha-0.4.0/lib/mocha/object.rb +100 -0
  35. data/vendor/mocha-0.4.0/lib/mocha/pretty_parameters.rb +28 -0
  36. data/vendor/mocha-0.4.0/lib/mocha/setup_and_teardown.rb +23 -0
  37. data/vendor/mocha-0.4.0/lib/mocha/standalone.rb +30 -0
  38. data/vendor/mocha-0.4.0/lib/mocha/test_case_adapter.rb +49 -0
  39. data/vendor/mocha-0.4.0/lib/mocha_standalone.rb +2 -0
  40. data/vendor/mocha-0.4.0/lib/stubba.rb +2 -0
  41. data/vendor/mocha-0.4.0/test/active_record_test_case.rb +36 -0
  42. data/vendor/mocha-0.4.0/test/all_tests.rb +75 -0
  43. data/vendor/mocha-0.4.0/test/execution_point.rb +34 -0
  44. data/vendor/mocha-0.4.0/test/method_definer.rb +18 -0
  45. data/vendor/mocha-0.4.0/test/mocha/any_instance_method_test.rb +124 -0
  46. data/vendor/mocha-0.4.0/test/mocha/auto_verify_test.rb +163 -0
  47. data/vendor/mocha-0.4.0/test/mocha/central_test.rb +124 -0
  48. data/vendor/mocha-0.4.0/test/mocha/class_method_test.rb +196 -0
  49. data/vendor/mocha-0.4.0/test/mocha/expectation_test.rb +357 -0
  50. data/vendor/mocha-0.4.0/test/mocha/infinite_range_test.rb +50 -0
  51. data/vendor/mocha-0.4.0/test/mocha/inspect_test.rb +90 -0
  52. data/vendor/mocha-0.4.0/test/mocha/metaclass_test.rb +22 -0
  53. data/vendor/mocha-0.4.0/test/mocha/mock_methods_test.rb +235 -0
  54. data/vendor/mocha-0.4.0/test/mocha/mock_test.rb +84 -0
  55. data/vendor/mocha-0.4.0/test/mocha/object_test.rb +165 -0
  56. data/vendor/mocha-0.4.0/test/mocha/pretty_parameters_test.rb +32 -0
  57. data/vendor/mocha-0.4.0/test/mocha/setup_and_teardown_test.rb +76 -0
  58. data/vendor/mocha-0.4.0/test/mocha_acceptance_test.rb +98 -0
  59. data/vendor/mocha-0.4.0/test/mocha_test_result_integration_test.rb +105 -0
  60. data/vendor/mocha-0.4.0/test/standalone_acceptance_test.rb +110 -0
  61. data/vendor/mocha-0.4.0/test/stubba_acceptance_test.rb +102 -0
  62. data/vendor/mocha-0.4.0/test/stubba_integration_test.rb +89 -0
  63. data/vendor/mocha-0.4.0/test/stubba_test_result_integration_test.rb +85 -0
  64. data/vendor/mocha-0.4.0/test/test_helper.rb +4 -0
  65. metadata +73 -3
@@ -0,0 +1,34 @@
1
+ class ExecutionPoint
2
+
3
+ attr_reader :backtrace
4
+
5
+ def self.current
6
+ new(caller)
7
+ end
8
+
9
+ def initialize(backtrace)
10
+ @backtrace = backtrace
11
+ end
12
+
13
+ def file_name
14
+ /\A(.*?):\d+/.match(@backtrace.first)[1]
15
+ end
16
+
17
+ def line_number
18
+ Integer(/\A.*?:(\d+)/.match(@backtrace.first)[1])
19
+ end
20
+
21
+ def ==(other)
22
+ return false unless other.is_a?(ExecutionPoint)
23
+ (file_name == other.file_name) and (line_number == other.line_number)
24
+ end
25
+
26
+ def to_s
27
+ "file: #{file_name} line: #{line_number}"
28
+ end
29
+
30
+ def inspect
31
+ to_s
32
+ end
33
+
34
+ end
@@ -0,0 +1,18 @@
1
+ require 'mocha/metaclass'
2
+
3
+ class Object
4
+
5
+ def define_instance_method(method_symbol, &block)
6
+ __metaclass__.send(:define_method, method_symbol, block)
7
+ end
8
+
9
+ def replace_instance_method(method_symbol, &block)
10
+ raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless self.respond_to?(method_symbol)
11
+ define_instance_method(method_symbol, &block)
12
+ end
13
+
14
+ def define_instance_accessor(*symbols)
15
+ symbols.each { |symbol| __metaclass__.send(:attr_accessor, symbol) }
16
+ end
17
+
18
+ end
@@ -0,0 +1,124 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'method_definer'
3
+ require 'mocha/mock'
4
+ require 'mocha/any_instance_method'
5
+
6
+ class AnyInstanceMethodTest < Test::Unit::TestCase
7
+
8
+ include Mocha
9
+
10
+ def test_should_hide_original_method
11
+ klass = Class.new { def method_x; end }
12
+ method = AnyInstanceMethod.new(klass, :method_x)
13
+ hidden_method_x = method.hidden_method.to_sym
14
+
15
+ method.hide_original_method
16
+
17
+ assert klass.method_defined?(hidden_method_x)
18
+ end
19
+
20
+ def test_should_not_hide_original_method_if_it_is_not_defined
21
+ klass = Class.new
22
+ method = AnyInstanceMethod.new(klass, :method_x)
23
+ hidden_method_x = method.hidden_method.to_sym
24
+
25
+ method.hide_original_method
26
+
27
+ assert_equal false, klass.method_defined?(hidden_method_x)
28
+ end
29
+
30
+ def test_should_define_a_new_method
31
+ klass = Class.new { def method_x; end }
32
+ method = AnyInstanceMethod.new(klass, :method_x)
33
+ mocha = Mock.new
34
+ mocha.expects(:method_x).with(:param1, :param2).returns(:result)
35
+ any_instance = Object.new
36
+ any_instance.define_instance_method(:mocha) { mocha }
37
+ klass.define_instance_method(:any_instance) { any_instance }
38
+
39
+ method.define_new_method
40
+
41
+ instance = klass.new
42
+ result = instance.method_x(:param1, :param2)
43
+
44
+ assert_equal :result, result
45
+ mocha.verify
46
+ end
47
+
48
+ def test_should_restore_original_method
49
+ klass = Class.new { def method_x; end }
50
+ method = AnyInstanceMethod.new(klass, :method_x)
51
+ hidden_method_x = method.hidden_method.to_sym
52
+ klass.send(:define_method, hidden_method_x, Proc.new { :original_result })
53
+
54
+ method.restore_original_method
55
+
56
+ instance = klass.new
57
+ assert_equal :original_result, instance.method_x
58
+ assert !klass.method_defined?(hidden_method_x)
59
+ end
60
+
61
+ def test_should_not_restore_original_method_if_hidden_method_not_defined
62
+ klass = Class.new { def method_x; :new_result; end }
63
+ method = AnyInstanceMethod.new(klass, :method_x)
64
+
65
+ method.restore_original_method
66
+
67
+ instance = klass.new
68
+ assert_equal :new_result, instance.method_x
69
+ end
70
+
71
+ def test_should_call_remove_new_method
72
+ klass = Class.new { def method_x; end }
73
+ any_instance = Mock.new
74
+ any_instance.stubs(:reset_mocha)
75
+ klass.define_instance_method(:any_instance) { any_instance }
76
+ method = AnyInstanceMethod.new(klass, :method_x)
77
+ method.replace_instance_method(:restore_original_method) { }
78
+ method.define_instance_accessor(:remove_called)
79
+ method.replace_instance_method(:remove_new_method) { self.remove_called = true }
80
+
81
+ method.unstub
82
+
83
+ assert method.remove_called
84
+ end
85
+
86
+ def test_should_call_restore_original_method
87
+ klass = Class.new { def method_x; end }
88
+ any_instance = Mock.new
89
+ any_instance.stubs(:reset_mocha)
90
+ klass.define_instance_method(:any_instance) { any_instance }
91
+ method = AnyInstanceMethod.new(klass, :method_x)
92
+ method.replace_instance_method(:remove_new_method) { }
93
+ method.define_instance_accessor(:restore_called)
94
+ method.replace_instance_method(:restore_original_method) { self.restore_called = true }
95
+
96
+ method.unstub
97
+
98
+ assert method.restore_called
99
+ end
100
+
101
+ def test_should_call_reset_mocha
102
+ klass = Class.new { def method_x; end }
103
+ any_instance = Class.new { attr_accessor :mocha_was_reset; def reset_mocha; self.mocha_was_reset = true; end }.new
104
+ klass.define_instance_method(:any_instance) { any_instance }
105
+ method = AnyInstanceMethod.new(klass, :method_x)
106
+ method.replace_instance_method(:remove_new_method) { }
107
+ method.replace_instance_method(:restore_original_method) { }
108
+
109
+ method.unstub
110
+
111
+ assert any_instance.mocha_was_reset
112
+ end
113
+
114
+ def test_should_return_any_instance_mocha_for_stubbee
115
+ mocha = Object.new
116
+ any_instance = Object.new
117
+ any_instance.define_instance_method(:mocha) { mocha }
118
+ stubbee = Class.new
119
+ stubbee.define_instance_method(:any_instance) { any_instance }
120
+ method = AnyInstanceMethod.new(stubbee, :method_name)
121
+ assert_equal stubbee.any_instance.mocha, method.mock
122
+ end
123
+
124
+ end
@@ -0,0 +1,163 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/auto_verify'
3
+ require 'method_definer'
4
+
5
+ class AutoVerifyTest < Test::Unit::TestCase
6
+
7
+ attr_reader :test_case
8
+
9
+ def setup
10
+ @test_case = Object.new
11
+ class << test_case
12
+ def self.add_teardown_method(symbol); end
13
+ include Mocha::AutoVerify
14
+ end
15
+ end
16
+
17
+ def test_should_add_mock_type_expectations
18
+ test_case.define_instance_accessor(:expectation_type, :expectations)
19
+ test_case.define_instance_method(:build_mock_with_expectations) do |expectation_type, expectations|
20
+ self.expectation_type = expectation_type
21
+ self.expectations = expectations
22
+ end
23
+ expectations = { :method1 => :value1, :method2 => :value2 }
24
+
25
+ test_case.mock(expectations)
26
+
27
+ assert_equal :expects, test_case.expectation_type
28
+ assert_equal expectations, test_case.expectations
29
+ end
30
+
31
+ def test_should_add_stub_type_expectations
32
+ test_case.define_instance_accessor(:expectation_type, :expectations)
33
+ test_case.define_instance_method(:build_mock_with_expectations) do |expectation_type, expectations|
34
+ self.expectation_type = expectation_type
35
+ self.expectations = expectations
36
+ end
37
+ expectations = { :method1 => :value1, :method2 => :value2 }
38
+
39
+ test_case.stub(expectations)
40
+
41
+ assert_equal :stubs, test_case.expectation_type
42
+ assert_equal expectations, test_case.expectations
43
+ end
44
+
45
+ def test_should_add_greedy_stub_type_expectations
46
+ test_case.define_instance_accessor(:expectation_type, :expectations)
47
+ test_case.define_instance_method(:build_mock_with_expectations) do |expectation_type, expectations|
48
+ self.expectation_type = expectation_type
49
+ self.expectations = expectations
50
+ end
51
+ expectations = { :method1 => :value1, :method2 => :value2 }
52
+
53
+ test_case.stub_everything(expectations)
54
+
55
+ assert_equal :stub_everything, test_case.expectation_type
56
+ assert_equal expectations, test_case.expectations
57
+ end
58
+
59
+ def test_should_build_mock
60
+ mock = test_case.build_mock_with_expectations
61
+ assert mock.is_a?(Mocha::Mock)
62
+ end
63
+
64
+ def test_should_add_expectation_to_mock
65
+ mock = test_case.build_mock_with_expectations(:expects, :expected_method => 'return_value')
66
+ assert_equal 'return_value', mock.expected_method
67
+ end
68
+
69
+ def test_should_build_stub
70
+ stub = test_case.build_mock_with_expectations(:stubs)
71
+ assert stub.is_a?(Mocha::Mock)
72
+ end
73
+
74
+ def test_should_add_expectation_to_stub
75
+ stub = test_case.build_mock_with_expectations(:stubs, :stubbed_method => 'return_value')
76
+ assert_equal 'return_value', stub.stubbed_method
77
+ end
78
+
79
+ def test_should_build_greedy_stub
80
+ greedy_stub = test_case.build_mock_with_expectations(:stub_everything)
81
+ assert greedy_stub.stub_everything
82
+ end
83
+
84
+ def test_should_add_expectations_to_greedy_stub
85
+ greedy_mock = test_case.build_mock_with_expectations(:stub_everything, :stubbed_method => 'return_value')
86
+ assert_equal 'return_value', greedy_mock.stubbed_method
87
+ end
88
+
89
+ def test_should_build_new_mock_each_time
90
+ assert_not_equal test_case.build_mock_with_expectations, test_case.build_mock_with_expectations
91
+ end
92
+
93
+ def test_should_store_each_new_mock
94
+ expected = Array.new(3) { test_case.build_mock_with_expectations }
95
+ assert_equal expected, test_case.mocks
96
+ end
97
+
98
+ def test_should_verify_each_mock
99
+ mocks = Array.new(3) do
100
+ mock = Object.new
101
+ mock.define_instance_accessor(:verify_called)
102
+ mock.define_instance_method(:verify) { self.verify_called = true }
103
+ mock
104
+ end
105
+ test_case.replace_instance_method(:mocks) { mocks }
106
+ test_case.verify_mocks
107
+ assert mocks.all? { |mock| mock.verify_called }
108
+ end
109
+
110
+ def test_should_yield_to_block_for_each_assertion
111
+ mock_class = Class.new do
112
+ def verify(&block); yield; end
113
+ end
114
+ mock = mock_class.new
115
+ test_case.replace_instance_method(:mocks) { [mock] }
116
+ yielded = false
117
+ test_case.verify_mocks { yielded = true }
118
+ assert yielded
119
+ end
120
+
121
+ def test_should_reset_mocks_on_teardown
122
+ mock = Class.new { define_method(:verify) {} }.new
123
+ test_case.mocks << mock
124
+ test_case.teardown_mocks
125
+ assert test_case.mocks.empty?
126
+ end
127
+
128
+ def test_should_stub_everything
129
+ mock = test_case.stub_everything
130
+ assert_equal true, mock.stub_everything
131
+ end
132
+
133
+ def test_should_add_mock_to_mocks
134
+ mock = test_case.mock
135
+ assert_equal [mock], test_case.mocks
136
+ end
137
+
138
+ def test_should_add_stub_to_mocks
139
+ stub = test_case.stub
140
+ assert_equal [stub], test_case.mocks
141
+ end
142
+
143
+ def test_should_add_greedy_stub_to_mocks
144
+ greedy_stub = test_case.stub_everything
145
+ assert_equal [greedy_stub], test_case.mocks
146
+ end
147
+
148
+ def test_should_create_mock_with_name
149
+ mock = test_case.mock('named_mock')
150
+ assert_equal '#<Mock:named_mock>', mock.mocha_inspect
151
+ end
152
+
153
+ def test_should_create_stub_with_name
154
+ stub = test_case.stub('named_stub')
155
+ assert_equal '#<Mock:named_stub>', stub.mocha_inspect
156
+ end
157
+
158
+ def test_should_create_greedy_stub_with_name
159
+ greedy_stub = test_case.stub_everything('named_greedy_stub')
160
+ assert_equal '#<Mock:named_greedy_stub>', greedy_stub.mocha_inspect
161
+ end
162
+
163
+ end
@@ -0,0 +1,124 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+
3
+ require 'mocha/central'
4
+ require 'mocha/mock'
5
+ require 'method_definer'
6
+
7
+ class CentralTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+
11
+ def test_should_start_with_empty_stubba_methods
12
+ stubba = Central.new
13
+
14
+ assert_equal [], stubba.stubba_methods
15
+ end
16
+
17
+ def test_should_stub_method_if_not_already_stubbed
18
+ method = Mock.new
19
+ method.expects(:stub)
20
+ stubba = Central.new
21
+
22
+ stubba.stub(method)
23
+
24
+ method.verify
25
+ end
26
+
27
+ def test_should_not_stub_method_if_already_stubbed
28
+ method = Mock.new
29
+ method.expects(:stub).times(0)
30
+ stubba = Central.new
31
+ stubba_methods = Mock.new
32
+ stubba_methods.stubs(:include?).with(method).returns(true)
33
+ stubba.stubba_methods = stubba_methods
34
+
35
+ stubba.stub(method)
36
+
37
+ method.verify
38
+ end
39
+
40
+ def test_should_record_method
41
+ method = Mock.new
42
+ method.expects(:stub)
43
+ stubba = Central.new
44
+
45
+ stubba.stub(method)
46
+
47
+ assert_equal [method], stubba.stubba_methods
48
+ end
49
+
50
+ def test_should_unstub_all_methods
51
+ stubba = Central.new
52
+ method_1 = Mock.new
53
+ method_1.expects(:unstub)
54
+ method_2 = Mock.new
55
+ method_2.expects(:unstub)
56
+ stubba.stubba_methods = [method_1, method_2]
57
+
58
+ stubba.unstub_all
59
+
60
+ assert_equal [], stubba.stubba_methods
61
+ method_1.verify
62
+ method_2.verify
63
+ end
64
+
65
+ def test_should_collect_mocks_from_all_methods
66
+ method_1 = Mock.new
67
+ method_1.stubs(:mock).returns(:mock_1)
68
+
69
+ method_2 = Mock.new
70
+ method_2.stubs(:mock).returns(:mock_2)
71
+
72
+ stubba = Central.new
73
+ stubba.stubba_methods = [method_1, method_2]
74
+
75
+ assert_equal 2, stubba.unique_mocks.size
76
+ assert stubba.unique_mocks.include?(:mock_1)
77
+ assert stubba.unique_mocks.include?(:mock_2)
78
+ end
79
+
80
+ def test_should_return_unique_mochas
81
+ method_1 = Mock.new
82
+ method_1.stubs(:mock).returns(:mock_1)
83
+
84
+ method_2 = Mock.new
85
+ method_2.stubs(:mock).returns(:mock_1)
86
+
87
+ stubba = Central.new
88
+ stubba.stubba_methods = [method_1, method_2]
89
+
90
+ assert_equal [:mock_1], stubba.unique_mocks
91
+ end
92
+
93
+ def test_should_call_verify_on_all_unique_mocks
94
+ mock_class = Class.new do
95
+ attr_accessor :verify_called
96
+ def verify
97
+ self.verify_called = true
98
+ end
99
+ end
100
+ mocks = [mock_class.new, mock_class.new]
101
+ stubba = Central.new
102
+ stubba.replace_instance_method(:unique_mocks) { mocks }
103
+
104
+ stubba.verify_all
105
+
106
+ assert mocks.all? { |mock| mock.verify_called }
107
+ end
108
+
109
+ def test_should_call_verify_on_all_unique_mochas
110
+ mock_class = Class.new do
111
+ def verify(&block)
112
+ yield if block_given?
113
+ end
114
+ end
115
+ stubba = Central.new
116
+ stubba.replace_instance_method(:unique_mocks) { [mock_class.new] }
117
+ yielded = false
118
+
119
+ stubba.verify_all { yielded = true }
120
+
121
+ assert yielded
122
+ end
123
+
124
+ end