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
@@ -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