mls 0.14.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class MLSTest < Minitest::Test
4
+
5
+ def setup
6
+ MLS.url = "http://test_api_key@testhost.com"
7
+ MLS.instance.instance_variable_set(:@server_config, nil)
8
+ end
9
+
10
+
11
+ # MLS.asset_host ============================================================
12
+
13
+ test '#asset_host' do
14
+ stub_request(:get, "http://testhost.com/config").to_return(:body => '{"asset_host": "myhost"}')
15
+
16
+ assert_equal( 'myhost', MLS.asset_host )
17
+ end
18
+
19
+ # MLS.image_host ============================================================
20
+
21
+ test '#image_host' do
22
+ stub_request(:get, "http://testhost.com/config").to_return(:body => '{"image_host": "myhost"}')
23
+
24
+ assert_equal( 'myhost', MLS.image_host )
25
+ end
26
+
27
+ end
@@ -1,25 +1,34 @@
1
- # require 'simplecov'
2
- # SimpleCov.start do
3
- # add_filter "/test/"
4
- # use_merging true
5
- # end
1
+ # To make testing/debugging easier, test within this source tree versus an
2
+ # installed gem
3
+ dir = File.dirname(__FILE__)
4
+ root = File.expand_path(File.join(dir, '..'))
5
+ lib = File.expand_path(File.join(root, 'lib'))
6
+
7
+ $LOAD_PATH << lib
6
8
 
7
9
  require 'mls'
8
- require 'turn'
10
+ require "minitest/autorun"
11
+ require 'minitest/unit'
12
+ require 'minitest/reporters'
9
13
  require 'faker'
10
- require 'test/unit'
11
- require 'fakeweb'
12
-
13
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__),'../'))
14
- require 'lib/mls/factories_helper'
14
+ require 'webmock/minitest'
15
+ require "mocha"
16
+ require "mocha/mini_test"
17
+ require 'active_support/testing/time_helpers'
15
18
 
16
- MLS_HOST = ENV['MLS_URL'] || 'http://localhost:4000'
19
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
17
20
 
18
- MLS.url = ENV["MLS_TEST_URL"] || 'http://LBJXFC%2BhDiRRCYj6kXtXREfgNXRCJa8ALvPn%2FIeyjSe2QsQyHZ%2F%2BWwN2VZM2cw%3D%3D@localhost:5000'#
19
- # MLS.auth_cookie = MLS::Account.authenticate('jonbracy@gmail.com', 'test').auth_cookie
21
+ # require 'factory_girl'
22
+ #
23
+ # factories_dir = File.join(File.dirname(__FILE__), 'factories')
24
+ # FactoryGirl.definition_file_paths = [factories_dir]
25
+ # FactoryGirl.find_definitions
20
26
 
21
27
  # File 'lib/active_support/testing/declarative.rb', somewhere in rails....
22
- class ::Test::Unit::TestCase
28
+ class Minitest::Test
29
+
30
+ include ActiveSupport::Testing::TimeHelpers
31
+
23
32
  def self.test(name, &block)
24
33
  test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
25
34
  defined = instance_method(test_name) rescue false
@@ -32,15 +41,5 @@ class ::Test::Unit::TestCase
32
41
  end
33
42
  end
34
43
  end
35
- end
36
-
37
- def mock_response(method=:get, code='200', body='')
38
- FakeWeb.register_uri(method, "http://mls.test/test", :status => [code, "Filler"], :body => body)
39
- uri = URI.parse("http://mls.test/test")
40
- case method
41
- when :get
42
- Net::HTTP.get_response(uri)
43
- when :post
44
- Net::HTTP.post_form(uri)
45
- end
46
- end
44
+
45
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mls
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - James R. Bracy
8
7
  - Jon Bracy
8
+ - James R. Bracy
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-13 00:00:00.000000000 Z
12
+ date: 2014-09-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -71,18 +71,18 @@ dependencies:
71
71
  name: minitest
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 4.7.4
76
+ version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: 4.7.4
83
+ version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: turn
85
+ name: minitest-reporters
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - ">="
@@ -96,7 +96,7 @@ dependencies:
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
- name: fakeweb
99
+ name: mocha
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ">="
@@ -110,13 +110,13 @@ dependencies:
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
- name: activesupport
113
+ name: faker
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
- type: :runtime
119
+ type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
@@ -124,13 +124,13 @@ dependencies:
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
- name: faker
127
+ name: factory_girl
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
- type: :runtime
133
+ type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
@@ -138,13 +138,13 @@ dependencies:
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
- name: factory_girl
141
+ name: webmock
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
- type: :runtime
147
+ type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
@@ -152,13 +152,13 @@ dependencies:
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
- name: yajl-ruby
155
+ name: sdoc-templates-42floors
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
158
  - - ">="
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
- type: :runtime
161
+ type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
@@ -166,7 +166,7 @@ dependencies:
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
- name: rest-client
169
+ name: sunstone
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - ">="
@@ -181,6 +181,7 @@ dependencies:
181
181
  version: '0'
182
182
  description: Ruby library for integrating with the 42Floors MLS
183
183
  email:
184
+ - jon@42floors.com
184
185
  - james@42floors.com
185
186
  executables: []
186
187
  extensions: []
@@ -191,57 +192,28 @@ files:
191
192
  - README.rdoc
192
193
  - Rakefile
193
194
  - lib/mls.rb
194
- - lib/mls/attribute.rb
195
- - lib/mls/attributes/array.rb
196
- - lib/mls/attributes/boolean.rb
197
- - lib/mls/attributes/datetime.rb
198
- - lib/mls/attributes/decimal.rb
199
- - lib/mls/attributes/fixnum.rb
200
- - lib/mls/attributes/hash.rb
201
- - lib/mls/attributes/string.rb
202
- - lib/mls/errors.rb
203
- - lib/mls/factories/account.rb
204
- - lib/mls/factories/address.rb
205
- - lib/mls/factories/listing.rb
206
- - lib/mls/factories_helper.rb
207
- - lib/mls/model.rb
208
- - lib/mls/models/account.rb
209
- - lib/mls/models/address.rb
210
- - lib/mls/models/brokerage.rb
211
- - lib/mls/models/floorplan.rb
212
- - lib/mls/models/flyer.rb
213
- - lib/mls/models/listing.rb
214
- - lib/mls/models/pdf.rb
215
- - lib/mls/models/photo.rb
216
- - lib/mls/models/property.rb
217
- - lib/mls/models/region.rb
218
- - lib/mls/models/tour.rb
219
- - lib/mls/models/video.rb
220
- - lib/mls/parser.rb
221
- - lib/mls/resource.rb
222
- - lib/rdoc/generator/template/42floors/_context.rhtml
223
- - lib/rdoc/generator/template/42floors/_head.rhtml
224
- - lib/rdoc/generator/template/42floors/class.rhtml
225
- - lib/rdoc/generator/template/42floors/file.rhtml
226
- - lib/rdoc/generator/template/42floors/index.rhtml
227
- - lib/rdoc/generator/template/42floors/resources/apple-touch-icon.png
228
- - lib/rdoc/generator/template/42floors/resources/css/github.css
229
- - lib/rdoc/generator/template/42floors/resources/css/main.css
230
- - lib/rdoc/generator/template/42floors/resources/css/panel.css
231
- - lib/rdoc/generator/template/42floors/resources/css/reset.css
232
- - lib/rdoc/generator/template/42floors/resources/favicon.ico
233
- - lib/rdoc/generator/template/42floors/resources/i/arrows.png
234
- - lib/rdoc/generator/template/42floors/resources/i/results_bg.png
235
- - lib/rdoc/generator/template/42floors/resources/i/tree_bg.png
236
- - lib/rdoc/generator/template/42floors/resources/js/highlight.pack.js
237
- - lib/rdoc/generator/template/42floors/resources/js/jquery-1.3.2.min.js
238
- - lib/rdoc/generator/template/42floors/resources/js/jquery-effect.js
239
- - lib/rdoc/generator/template/42floors/resources/js/main.js
240
- - lib/rdoc/generator/template/42floors/resources/js/searchdoc.js
241
- - lib/rdoc/generator/template/42floors/resources/panel/index.html
242
- - lib/rdoc/generator/template/42floors/se_index.rhtml
195
+ - lib/mls/account.rb
196
+ - lib/mls/address.rb
197
+ - lib/mls/agency.rb
198
+ - lib/mls/brokerage.rb
199
+ - lib/mls/coworking_space.rb
200
+ - lib/mls/floorplan.rb
201
+ - lib/mls/flyer.rb
202
+ - lib/mls/lease.rb
203
+ - lib/mls/listing.rb
204
+ - lib/mls/locality.rb
205
+ - lib/mls/photo.rb
206
+ - lib/mls/property.rb
207
+ - lib/mls/region.rb
208
+ - lib/mls/sale.rb
209
+ - lib/mls/space.rb
210
+ - lib/mls/sublease.rb
211
+ - lib/mls/use.rb
243
212
  - mls.gemspec
244
213
  - test/fixtures/flyer.pdf
214
+ - test/mls/attribute_test.rb
215
+ - test/mls/resource_test.rb
216
+ - test/mls_test.rb
245
217
  - test/test_helper.rb
246
218
  - test/units/models/test_account.rb
247
219
  - test/units/models/test_address.rb
@@ -249,12 +221,8 @@ files:
249
221
  - test/units/models/test_flyer.rb
250
222
  - test/units/models/test_listing.rb
251
223
  - test/units/models/test_photo.rb
252
- - test/units/properties/test_boolean.rb
253
- - test/units/test_errors.rb
254
- - test/units/test_mls.rb
255
224
  - test/units/test_model.rb
256
225
  - test/units/test_parser.rb
257
- - test/units/test_property.rb
258
226
  - test/units/test_resource.rb
259
227
  homepage: http://mls.42floors.com
260
228
  licenses: []
@@ -281,6 +249,9 @@ specification_version: 4
281
249
  summary: 42Floors MLS Client
282
250
  test_files:
283
251
  - test/fixtures/flyer.pdf
252
+ - test/mls/attribute_test.rb
253
+ - test/mls/resource_test.rb
254
+ - test/mls_test.rb
284
255
  - test/test_helper.rb
285
256
  - test/units/models/test_account.rb
286
257
  - test/units/models/test_address.rb
@@ -288,10 +259,7 @@ test_files:
288
259
  - test/units/models/test_flyer.rb
289
260
  - test/units/models/test_listing.rb
290
261
  - test/units/models/test_photo.rb
291
- - test/units/properties/test_boolean.rb
292
- - test/units/test_errors.rb
293
- - test/units/test_mls.rb
294
262
  - test/units/test_model.rb
295
263
  - test/units/test_parser.rb
296
- - test/units/test_property.rb
297
264
  - test/units/test_resource.rb
265
+ has_rdoc:
@@ -1,44 +0,0 @@
1
- class MLS::Attribute
2
- DEFAULT_OPTIONS = { :serialize => :always }
3
-
4
- attr_reader :model, :name, :instance_variable_name, :options, :default
5
- attr_reader :reader_visibility, :writer_visibility
6
-
7
- def initialize(name, options={})
8
- @name = name
9
- @instance_variable_name = "@#{@name}".freeze
10
- @options = DEFAULT_OPTIONS.merge(options)
11
-
12
- set_default_value
13
- determine_visibility
14
- end
15
-
16
- def set_default_value
17
- @default = @options[:default]
18
- end
19
-
20
- def determine_visibility # default :public
21
- @reader_visibility = @options[:reader] || :public
22
- @writer_visibility = @options[:writer] || :public
23
- end
24
-
25
- def self.determine_class(type)
26
- return type if type < MLS::Attribute
27
- find_class(::ActiveSupport::Inflector.demodulize(type))
28
- end
29
-
30
- def self.inherited(descendant)
31
- demodulized_names[::ActiveSupport::Inflector.demodulize(descendant.name)] ||= descendant
32
- end
33
-
34
- def self.demodulized_names
35
- @demodulized_names ||= {}
36
- end
37
-
38
- def self.find_class(name)
39
- klass = demodulized_names[name]
40
- klass ||= const_get(name) if const_defined?(name)
41
- klass
42
- end
43
-
44
- end
@@ -1,11 +0,0 @@
1
- class MLS::Attribute::Array < MLS::Attribute
2
-
3
- def load(value) # from_json
4
- value
5
- end
6
-
7
- def dump(value)
8
- value
9
- end
10
-
11
- end
@@ -1,9 +0,0 @@
1
- class MLS::Attribute::Boolean < MLS::Attribute
2
-
3
- def load(value) # from_json
4
- value
5
- end
6
-
7
- alias :dump :load #only for primatives
8
-
9
- end
@@ -1,25 +0,0 @@
1
- class MLS::Attribute::DateTime < MLS::Attribute
2
-
3
- def load(value) # from_json
4
- if value.is_a?(::String)
5
- ::DateTime.iso8601(value)
6
- elsif value.nil? || value.is_a?(::DateTime)
7
- value
8
- elsif value.is_a?(::Time) || value.is_a?(::Date)
9
- value.to_datetime
10
- else
11
- raise 'unsupported date type'
12
- end
13
- end
14
-
15
- def dump(value)
16
- if value.is_a?(::DateTime) || value.is_a?(::Time) || value.is_a?(::Date)
17
- value.iso8601
18
- elsif value.nil?
19
- nil
20
- else
21
- raise 'unsupported date type'
22
- end
23
- end
24
-
25
- end
@@ -1,21 +0,0 @@
1
- class MLS::Attribute::Decimal < MLS::Attribute
2
-
3
- def load(value) # from_json
4
- if value.nil?
5
- nil
6
- elsif value.is_a?(BigDecimal)
7
- value
8
- else
9
- BigDecimal.new(value.to_s)
10
- end
11
- end
12
-
13
- def dump(value)
14
- if value.is_a?(BigDecimal)
15
- value.to_s
16
- else
17
- value
18
- end
19
- end
20
-
21
- end