mls 0.14.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Rakefile +6 -6
  4. data/lib/mls.rb +73 -427
  5. data/lib/mls/account.rb +15 -0
  6. data/lib/mls/address.rb +4 -0
  7. data/lib/mls/agency.rb +6 -0
  8. data/lib/mls/brokerage.rb +7 -0
  9. data/lib/mls/coworking_space.rb +5 -0
  10. data/lib/mls/floorplan.rb +11 -0
  11. data/lib/mls/flyer.rb +11 -0
  12. data/lib/mls/lease.rb +2 -0
  13. data/lib/mls/listing.rb +135 -0
  14. data/lib/mls/locality.rb +6 -0
  15. data/lib/mls/photo.rb +18 -0
  16. data/lib/mls/property.rb +24 -0
  17. data/lib/mls/region.rb +13 -0
  18. data/lib/mls/sale.rb +2 -0
  19. data/lib/mls/space.rb +3 -0
  20. data/lib/mls/sublease.rb +2 -0
  21. data/lib/mls/use.rb +25 -0
  22. data/mls.gemspec +11 -15
  23. data/test/mls/attribute_test.rb +55 -0
  24. data/test/mls/resource_test.rb +31 -0
  25. data/test/mls_test.rb +27 -0
  26. data/test/test_helper.rb +26 -27
  27. metadata +43 -75
  28. data/lib/mls/attribute.rb +0 -44
  29. data/lib/mls/attributes/array.rb +0 -11
  30. data/lib/mls/attributes/boolean.rb +0 -9
  31. data/lib/mls/attributes/datetime.rb +0 -25
  32. data/lib/mls/attributes/decimal.rb +0 -21
  33. data/lib/mls/attributes/fixnum.rb +0 -16
  34. data/lib/mls/attributes/hash.rb +0 -15
  35. data/lib/mls/attributes/string.rb +0 -15
  36. data/lib/mls/errors.rb +0 -29
  37. data/lib/mls/factories/account.rb +0 -34
  38. data/lib/mls/factories/address.rb +0 -16
  39. data/lib/mls/factories/listing.rb +0 -29
  40. data/lib/mls/factories_helper.rb +0 -7
  41. data/lib/mls/model.rb +0 -125
  42. data/lib/mls/models/account.rb +0 -174
  43. data/lib/mls/models/address.rb +0 -58
  44. data/lib/mls/models/brokerage.rb +0 -31
  45. data/lib/mls/models/floorplan.rb +0 -45
  46. data/lib/mls/models/flyer.rb +0 -45
  47. data/lib/mls/models/listing.rb +0 -394
  48. data/lib/mls/models/pdf.rb +0 -15
  49. data/lib/mls/models/photo.rb +0 -40
  50. data/lib/mls/models/property.rb +0 -114
  51. data/lib/mls/models/region.rb +0 -56
  52. data/lib/mls/models/tour.rb +0 -54
  53. data/lib/mls/models/video.rb +0 -18
  54. data/lib/mls/parser.rb +0 -74
  55. data/lib/mls/resource.rb +0 -99
  56. data/lib/rdoc/generator/template/42floors/_context.rhtml +0 -209
  57. data/lib/rdoc/generator/template/42floors/_head.rhtml +0 -7
  58. data/lib/rdoc/generator/template/42floors/class.rhtml +0 -39
  59. data/lib/rdoc/generator/template/42floors/file.rhtml +0 -35
  60. data/lib/rdoc/generator/template/42floors/index.rhtml +0 -13
  61. data/lib/rdoc/generator/template/42floors/resources/apple-touch-icon.png +0 -0
  62. data/lib/rdoc/generator/template/42floors/resources/css/github.css +0 -129
  63. data/lib/rdoc/generator/template/42floors/resources/css/main.css +0 -339
  64. data/lib/rdoc/generator/template/42floors/resources/css/panel.css +0 -389
  65. data/lib/rdoc/generator/template/42floors/resources/css/reset.css +0 -48
  66. data/lib/rdoc/generator/template/42floors/resources/favicon.ico +0 -0
  67. data/lib/rdoc/generator/template/42floors/resources/i/arrows.png +0 -0
  68. data/lib/rdoc/generator/template/42floors/resources/i/results_bg.png +0 -0
  69. data/lib/rdoc/generator/template/42floors/resources/i/tree_bg.png +0 -0
  70. data/lib/rdoc/generator/template/42floors/resources/js/highlight.pack.js +0 -1
  71. data/lib/rdoc/generator/template/42floors/resources/js/jquery-1.3.2.min.js +0 -19
  72. data/lib/rdoc/generator/template/42floors/resources/js/jquery-effect.js +0 -593
  73. data/lib/rdoc/generator/template/42floors/resources/js/main.js +0 -20
  74. data/lib/rdoc/generator/template/42floors/resources/js/searchdoc.js +0 -442
  75. data/lib/rdoc/generator/template/42floors/resources/panel/index.html +0 -73
  76. data/lib/rdoc/generator/template/42floors/se_index.rhtml +0 -8
  77. data/test/units/properties/test_boolean.rb +0 -4
  78. data/test/units/test_errors.rb +0 -32
  79. data/test/units/test_mls.rb +0 -294
  80. data/test/units/test_property.rb +0 -35
@@ -1,73 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
3
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4
-
5
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
6
- <head>
7
- <title>search index</title>
8
- <link rel="stylesheet" href="../css/reset.css" type="text/css" media="screen" charset="utf-8" />
9
- <link rel="stylesheet" href="../css/panel.css" type="text/css" media="screen" charset="utf-8" />
10
- <script src="../js/search_index.js" type="text/javascript" charset="utf-8"></script>
11
- <script src="../js/searcher.js" type="text/javascript" charset="utf-8"></script>
12
- <script src="tree.js" type="text/javascript" charset="utf-8"></script>
13
- <script src="../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
14
- <script src="../js/searchdoc.js" type="text/javascript" charset="utf-8"></script>
15
- <script type="text/javascript" charset="utf-8">
16
- function placeholder() {
17
- if ($('<input type="text">')[0].placeholder !== undefined) return;
18
-
19
- $('#search-label').click(function() {
20
- $('#search').focus();
21
- $('#search-label').hide();
22
- });
23
-
24
- $('#search').focus(function() {
25
- $('#search-label').hide();
26
- });
27
- $('#search').blur(function() {
28
- this.value == '' && $('#search-label').show()
29
- });
30
-
31
- $('#search')[0].value == '' && $('#search-label').show();
32
- }
33
- $(function() {
34
- placeholder();
35
- $('#links').hide();
36
- var panel = new Searchdoc.Panel($('#panel'), search_data, tree, top.frames[1]);
37
- $('#search').focus();
38
-
39
- var s = window.parent.location.search.match(/\?q=([^&]+)/);
40
- if (s) {
41
- s = decodeURIComponent(s[1]).replace(/\+/g, ' ');
42
- if (s.length > 0)
43
- {
44
- $('#search').val(s);
45
- panel.search(s, true);
46
- }
47
- }
48
- })
49
- </script>
50
- </head>
51
- <body>
52
- <div class="panel panel_tree" id="panel">
53
- <div class="header">
54
- <div>
55
- <label for="search" id="search-label" style="display: none">Search</label>
56
- <table>
57
- <tr><td>
58
- <input type="Search" placeholder="Search" autosave="searchdoc" results="10" id="search" autocomplete="off"/>
59
- </td></tr>
60
- </table></div>
61
- </div>
62
- <div class="tree">
63
- <ul>
64
- </ul>
65
- </div>
66
- <div class="result">
67
- <ul>
68
- </ul>
69
- </div>
70
- </div>
71
- <a href="links.html" id="links">index</a>
72
- </body>
73
- </html>
@@ -1,8 +0,0 @@
1
- <html>
2
- <head>File index</head>
3
- <body>
4
- <% @files.each do |file| %>
5
- <a href="../<%= file.path %>"><%= file.relative_name %></a>
6
- <% end %>
7
- </body>
8
- </html>
@@ -1,4 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestBoolean < ::Test::Unit::TestCase
4
- end
@@ -1,32 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestErrors < ::Test::Unit::TestCase
4
-
5
- def test_exception
6
- assert defined?(MLS::Exception)
7
- end
8
-
9
- def test_bad_request
10
- assert defined?(MLS::Exception::BadRequest)
11
- end
12
-
13
- def test_unauthorized
14
- assert defined?(MLS::Exception::Unauthorized)
15
- end
16
-
17
- def test_not_found
18
- assert defined?(MLS::Exception::NotFound)
19
- end
20
-
21
- def test_api_version_unsupported
22
- assert defined?(MLS::Exception::ApiVersionUnsupported)
23
- end
24
-
25
- def test_record_invalide
26
- assert defined?(MLS::Exception::RecordInvalid)
27
- end
28
-
29
- def test_service_unavailable
30
- assert defined?(MLS::Exception::ServiceUnavailable)
31
- end
32
- end
@@ -1,294 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestMLS < ::Test::Unit::TestCase
4
-
5
- def test_API_VERSION
6
- assert_equal "0.1.0", MLS::API_VERSION
7
- end
8
-
9
- def test_attr_accessors
10
- mls = MLS.instance
11
-
12
- assert mls.respond_to?(:url)
13
- assert mls.respond_to?(:url=)
14
- assert mls.respond_to?(:api_key)
15
- assert mls.respond_to?(:auth_cookie)
16
- assert mls.respond_to?(:logger)
17
- assert mls.respond_to?(:connection)
18
- assert mls.respond_to?(:prepare_request)
19
-
20
- assert mls.respond_to?(:put)
21
- assert mls.respond_to?(:post)
22
- assert mls.respond_to?(:get)
23
- assert mls.respond_to?(:delete)
24
-
25
- assert mls.respond_to?(:handle_response)
26
- assert mls.respond_to?(:ping)
27
- assert mls.respond_to?(:auth_ping)
28
- assert mls.respond_to?(:default_logger)
29
- end
30
-
31
- # MLS.get =================================================================
32
-
33
- test '#get' do
34
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get')
35
- response = MLS.get('/test')
36
- assert_equal 'get', response.body
37
- end
38
-
39
- test '#get with params' do
40
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test?key=value", :body => 'get')
41
- response = MLS.get('/test', :key => 'value')
42
-
43
- assert_equal '/test?key=value', FakeWeb.last_request.path
44
- end
45
-
46
- test '#get to 404 raises MLS::Exception::NotFound' do
47
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get', :status => ['404', ''])
48
-
49
- assert_raises(MLS::Exception::NotFound) { MLS.get('/test') }
50
- end
51
-
52
- test '#get to 404 doesnt raise NotFound if in valid_response_codes' do
53
- assert_nothing_raised {
54
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get', :status => ['404', ''])
55
- MLS.get('/test', nil, 404)
56
-
57
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get', :status => ['404', ''])
58
- MLS.get('/test', nil, 400..499)
59
-
60
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get', :status => ['404', ''])
61
- MLS.get('/test', nil, 300..399, 404)
62
-
63
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get', :status => ['404', ''])
64
- MLS.get('/test', nil, 404, 300..399)
65
-
66
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get', :status => ['404', ''])
67
- MLS.get('/test', nil, [300..399, 404])
68
- }
69
- end
70
-
71
- test '#get with block' do
72
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get')
73
- MLS.get('/test') do |response|
74
- assert_equal 'get', response.body
75
- end
76
-
77
- # make sure block is not called when not in valid_response_codes
78
- FakeWeb.register_uri(:get, "#{MLS_HOST}/test", :body => 'get', :status => ['401', ''])
79
- assert_raises(MLS::Exception::Unauthorized) {
80
- MLS.get('/test') do |response|
81
- raise MLS::Exception, 'Should not get here'
82
- end
83
- }
84
- end
85
-
86
- # MLS.put =================================================================
87
-
88
- test '#put' do
89
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put')
90
- response = MLS.put('/test')
91
- assert_equal 'put', response.body
92
- end
93
-
94
- test '#put with a body' do
95
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put')
96
- response = MLS.put('/test', :key => 'value')
97
-
98
- assert_equal '{"key":"value"}', FakeWeb.last_request.body
99
- end
100
-
101
- test '#put to 404 raises MLS::Exception::NotFound' do
102
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put', :status => ['404', ''])
103
-
104
- assert_raises(MLS::Exception::NotFound) { MLS.put('/test') }
105
- end
106
-
107
- test '#put to 404 doesnt raise NotFound if in valid_response_codes' do
108
- assert_nothing_raised {
109
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put', :status => ['404', ''])
110
- MLS.put('/test', nil, 404)
111
-
112
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put', :status => ['404', ''])
113
- MLS.put('/test', nil, 400..499)
114
-
115
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put', :status => ['404', ''])
116
- MLS.put('/test', nil, 300..399, 404)
117
-
118
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put', :status => ['404', ''])
119
- MLS.put('/test', nil, 404, 300..399)
120
-
121
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put', :status => ['404', ''])
122
- MLS.put('/test', nil, [300..399, 404])
123
- }
124
- end
125
-
126
- test '#put with block' do
127
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put')
128
- MLS.put('/test') do |response|
129
- assert_equal 'put', response.body
130
- end
131
-
132
- # make sure block is not called when not in valid_response_codes
133
- FakeWeb.register_uri(:put, "#{MLS_HOST}/test", :body => 'put', :status => ['401', ''])
134
- assert_raises(MLS::Exception::Unauthorized) {
135
- MLS.put('/test') do |response|
136
- raise MLS::Exception, 'Should not get here'
137
- end
138
- }
139
- end
140
-
141
- # MLS.post =================================================================
142
-
143
- test '#post' do
144
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post')
145
- response = MLS.post('/test')
146
- assert_equal 'post', response.body
147
- end
148
-
149
- test '#post with a body' do
150
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post')
151
- response = MLS.post('/test', :key => 'value')
152
-
153
- assert_equal '{"key":"value"}', FakeWeb.last_request.body
154
- end
155
-
156
- test '#post to 404 raises MLS::Exception::NotFound' do
157
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post', :status => ['404', ''])
158
-
159
- assert_raises(MLS::Exception::NotFound) { MLS.post('/test') }
160
- end
161
-
162
- test '#post to 404 doesnt raise NotFound if in valid_response_codes' do
163
- assert_nothing_raised {
164
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post', :status => ['404', ''])
165
- MLS.post('/test', nil, 404)
166
-
167
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post', :status => ['404', ''])
168
- MLS.post('/test', nil, 400..499)
169
-
170
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post', :status => ['404', ''])
171
- MLS.post('/test', nil, 300..399, 404)
172
-
173
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post', :status => ['404', ''])
174
- MLS.post('/test', nil, 404, 300..399)
175
-
176
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post', :status => ['404', ''])
177
- MLS.post('/test', nil, [300..399, 404])
178
- }
179
- end
180
-
181
- test '#post with block' do
182
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post')
183
- MLS.post('/test') do |response|
184
- assert_equal 'post', response.body
185
- end
186
-
187
- # make sure block is not called when not in valid_response_codes
188
- FakeWeb.register_uri(:post, "#{MLS_HOST}/test", :body => 'post', :status => ['401', ''])
189
- assert_raises(MLS::Exception::Unauthorized) {
190
- MLS.post('/test') do |response|
191
- raise MLS::Exception, 'Should not get here'
192
- end
193
- }
194
- end
195
-
196
- # MLS.delete ================================================================
197
-
198
- test '#delete' do
199
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete')
200
- response = MLS.delete('/test')
201
- assert_equal 'delete', response.body
202
- end
203
-
204
- test '#delete with a body' do
205
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete')
206
- response = MLS.delete('/test', :key => 'value')
207
-
208
- assert_equal '{"key":"value"}', FakeWeb.last_request.body
209
- end
210
-
211
- test '#delete to 404 raises MLS::Exception::NotFound' do
212
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete', :status => ['404', ''])
213
-
214
- assert_raises(MLS::Exception::NotFound) { MLS.delete('/test') }
215
- end
216
-
217
- test '#delete to 404 doesnt raise NotFound if in valid_response_codes' do
218
- assert_nothing_raised {
219
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete', :status => ['404', ''])
220
- MLS.delete('/test', nil, 404)
221
-
222
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete', :status => ['404', ''])
223
- MLS.delete('/test', nil, 400..499)
224
-
225
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete', :status => ['404', ''])
226
- MLS.delete('/test', nil, 300..399, 404)
227
-
228
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete', :status => ['404', ''])
229
- MLS.delete('/test', nil, 404, 300..399)
230
-
231
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete', :status => ['404', ''])
232
- MLS.delete('/test', nil, [300..399, 404])
233
- }
234
- end
235
-
236
- test '#delete with block' do
237
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete')
238
- MLS.delete('/test') do |response|
239
- assert_equal 'delete', response.body
240
- end
241
-
242
- # make sure block is not called when not in valid_response_codes
243
- FakeWeb.register_uri(:delete, "#{MLS_HOST}/test", :body => 'delete', :status => ['401', ''])
244
- assert_raises(MLS::Exception::Unauthorized) {
245
- MLS.delete('/test') do |response|
246
- raise MLS::Exception, 'Should not get here'
247
- end
248
- }
249
- end
250
-
251
- # MLS.handle_response ======================================================
252
-
253
- test 'handle_response raises BadRequest on 400' do
254
- response = mock_response(:get, 400)
255
- assert_raises(MLS::Exception::BadRequest) { MLS.handle_response(response) }
256
- end
257
-
258
- test 'handle_response raises Unauthorized on 401' do
259
- response = mock_response(:get, 401)
260
- assert_raises(MLS::Exception::Unauthorized) { MLS.handle_response(response) }
261
- end
262
-
263
- test 'handle_response raises NotFound on 404' do
264
- response = mock_response(:get, 404)
265
- assert_raises(MLS::Exception::NotFound) { MLS.handle_response(response) }
266
- end
267
-
268
- test 'handle_response raises NotFound on 410' do
269
- response = mock_response(:get, 410)
270
- assert_raises(MLS::Exception::NotFound) { MLS.handle_response(response) }
271
- end
272
-
273
- test 'handle_response raises ApiVersionUnsupported on 422' do
274
- response = mock_response(:get, 422)
275
- assert_raises(MLS::Exception::ApiVersionUnsupported) { MLS.handle_response(response) }
276
- end
277
-
278
- test 'handle_response raises ServiceUnavailable on 503' do
279
- response = mock_response(:get, 503)
280
- assert_raises(MLS::Exception::ServiceUnavailable) { MLS.handle_response(response) }
281
- end
282
-
283
- test 'handle_response raises Exception on 350, 450, & 550' do
284
- response = mock_response(:get, 350)
285
- assert_raises(MLS::Exception) { MLS.handle_response(response) }
286
-
287
- response = mock_response(:get, 450)
288
- assert_raises(MLS::Exception) { MLS.handle_response(response) }
289
-
290
- response = mock_response(:get, 550)
291
- assert_raises(MLS::Exception) { MLS.handle_response(response) }
292
- end
293
-
294
- end
@@ -1,35 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestAttribute < ::Test::Unit::TestCase
4
-
5
- def test_DEFAULT_OPTIONS
6
- assert_equal :always, MLS::Attribute::DEFAULT_OPTIONS[:serialize]
7
- end
8
-
9
- def test_attr_readers
10
- attribute = MLS::Attribute.new(:name => "blah")
11
-
12
- assert attribute.respond_to?(:model)
13
- assert attribute.respond_to?(:name)
14
- assert attribute.respond_to?(:instance_variable_name)
15
- assert attribute.respond_to?(:options)
16
- assert attribute.respond_to?(:default)
17
- assert attribute.respond_to?(:reader_visibility)
18
- assert attribute.respond_to?(:writer_visibility)
19
- end
20
-
21
- def test_instance_methods
22
- attribute = MLS::Attribute.new(:name => "blah")
23
-
24
- assert attribute.respond_to?(:set_default_value)
25
- assert attribute.respond_to?(:determine_visibility)
26
- end
27
-
28
- def test_class_methods
29
- assert MLS::Attribute.respond_to?(:determine_class)
30
- assert MLS::Attribute.respond_to?(:inherited)
31
- assert MLS::Attribute.respond_to?(:demodulized_names)
32
- assert MLS::Attribute.respond_to?(:find_class)
33
- end
34
-
35
- end