mls 0.2.2 → 0.2.3
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.
- data/.gitignore +1 -0
- data/README.rdoc +54 -0
- data/Rakefile +20 -2
- data/lib/mls.rb +307 -78
- data/lib/mls/errors.rb +13 -4
- data/lib/mls/model.rb +36 -5
- data/lib/mls/models/account.rb +74 -66
- data/lib/mls/models/address.rb +87 -6
- data/lib/mls/models/area.rb +27 -0
- data/lib/mls/models/flyer.rb +41 -0
- data/lib/mls/models/listing.rb +180 -34
- data/lib/mls/models/photo.rb +25 -3
- data/lib/mls/models/tour_request.rb +18 -31
- data/lib/mls/parser.rb +5 -4
- data/lib/mls/properties/datetime.rb +5 -1
- data/lib/mls/properties/decimal.rb +3 -1
- data/lib/mls/properties/hash.rb +7 -0
- data/lib/mls/resource.rb +35 -5
- data/lib/rdoc/generator/template/42floors/_context.rhtml +209 -0
- data/lib/rdoc/generator/template/42floors/_head.rhtml +7 -0
- data/lib/rdoc/generator/template/42floors/class.rhtml +39 -0
- data/lib/rdoc/generator/template/42floors/file.rhtml +35 -0
- data/lib/rdoc/generator/template/42floors/index.rhtml +13 -0
- data/lib/rdoc/generator/template/42floors/resources/apple-touch-icon.png +0 -0
- data/lib/rdoc/generator/template/42floors/resources/css/github.css +129 -0
- data/lib/rdoc/generator/template/42floors/resources/css/main.css +339 -0
- data/lib/rdoc/generator/template/42floors/resources/css/panel.css +389 -0
- data/lib/rdoc/generator/template/42floors/resources/css/reset.css +48 -0
- data/lib/rdoc/generator/template/42floors/resources/favicon.ico +0 -0
- data/lib/rdoc/generator/template/42floors/resources/i/arrows.png +0 -0
- data/lib/rdoc/generator/template/42floors/resources/i/results_bg.png +0 -0
- data/lib/rdoc/generator/template/42floors/resources/i/tree_bg.png +0 -0
- data/lib/rdoc/generator/template/42floors/resources/js/highlight.pack.js +1 -0
- data/lib/rdoc/generator/template/42floors/resources/js/jquery-1.3.2.min.js +19 -0
- data/lib/rdoc/generator/template/42floors/resources/js/jquery-effect.js +593 -0
- data/lib/rdoc/generator/template/42floors/resources/js/main.js +20 -0
- data/lib/rdoc/generator/template/42floors/resources/js/searchdoc.js +442 -0
- data/lib/rdoc/generator/template/42floors/resources/panel/index.html +73 -0
- data/lib/rdoc/generator/template/42floors/se_index.rhtml +8 -0
- data/mls.gemspec +7 -4
- data/test/factories/account.rb +18 -0
- data/test/factories/address.rb +15 -0
- data/test/factories/listing.rb +30 -0
- data/test/factories/tour_request.rb +9 -0
- data/test/fixtures/flyer.pdf +68 -0
- data/test/test_helper.rb +44 -5
- data/test/units/models/test_account.rb +20 -43
- data/test/units/models/test_flyer.rb +22 -0
- data/test/units/models/test_listing.rb +119 -0
- data/test/units/models/test_photo.rb +136 -3
- data/test/units/models/test_tour_request.rb +25 -20
- data/test/units/test_errors.rb +12 -4
- data/test/units/test_mls.rb +263 -3
- data/test/units/test_resource.rb +1 -0
- metadata +78 -57
- data/lib/mls/models/user.rb +0 -7
- data/lib/mls/version.rb +0 -3
@@ -2,10 +2,143 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class TestPhoto < ::Test::Unit::TestCase
|
4
4
|
|
5
|
-
def test_instance_methods
|
6
|
-
photo = MLS::Photo.new({})
|
7
5
|
|
8
|
-
|
6
|
+
def test_create_photo
|
7
|
+
photo = MLS::Photo.create(TEST_IMAGE)
|
8
|
+
assert photo.id
|
9
|
+
assert photo.digest
|
9
10
|
end
|
10
11
|
|
11
12
|
end
|
13
|
+
|
14
|
+
TEST_IMAGE = StringIO.new(Base64.decode64(<<PHOTO))
|
15
|
+
/9j/4AAQSkZJRgABAQEASABIAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlu
|
16
|
+
bwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMg
|
17
|
+
c1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAA
|
18
|
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAA
|
19
|
+
ADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAAC
|
20
|
+
GAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRk
|
21
|
+
AAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRt
|
22
|
+
ZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAA
|
23
|
+
CAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXds
|
24
|
+
ZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2
|
25
|
+
Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA
|
26
|
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA
|
27
|
+
AAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABv
|
28
|
+
ogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+E
|
29
|
+
AAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAA
|
30
|
+
AAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
31
|
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5
|
32
|
+
NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAA
|
33
|
+
AAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt
|
34
|
+
IHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJl
|
35
|
+
bmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA
|
36
|
+
AAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0y
|
37
|
+
LjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4A
|
38
|
+
EM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAA
|
39
|
+
AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3Vy
|
40
|
+
dgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBU
|
41
|
+
AFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEA
|
42
|
+
xgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFF
|
43
|
+
AUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB
|
44
|
+
8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB
|
45
|
+
AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oD
|
46
|
+
xwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTw
|
47
|
+
BP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgG
|
48
|
+
WQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gfl
|
49
|
+
B/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJ
|
50
|
+
ugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuw
|
51
|
+
C8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N
|
52
|
+
+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh
|
53
|
+
EH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMT
|
54
|
+
IxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYD
|
55
|
+
FiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZ
|
56
|
+
RRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyj
|
57
|
+
HMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEg
|
58
|
+
bCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRN
|
59
|
+
JHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEo
|
60
|
+
oijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M
|
61
|
+
LUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox
|
62
|
+
8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp
|
63
|
+
NyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8
|
64
|
+
ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHu
|
65
|
+
QjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BI
|
66
|
+
BUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4l
|
67
|
+
Tm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U
|
68
|
+
21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuV
|
69
|
+
W+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi
|
70
|
+
8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpI
|
71
|
+
ap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy
|
72
|
+
S3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pG
|
73
|
+
eqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC
|
74
|
+
9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuW
|
75
|
+
i/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU
|
76
|
+
9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5A
|
77
|
+
nq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co
|
78
|
+
UqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL
|
79
|
+
ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9
|
80
|
+
Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/
|
81
|
+
yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHT
|
82
|
+
RNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i
|
83
|
+
3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq
|
84
|
+
5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb7
|
85
|
+
94r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////4QE6RXhpZgAATU0A
|
86
|
+
KgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEo
|
87
|
+
AAMAAAABAAIAAAExAAIAAAARAAAAcgEyAAIAAAAUAAAAhIdpAAQAAAABAAAA
|
88
|
+
mAAAAAAAAABIAAAAAQAAAEgAAAABUGl4ZWxtYXRvciAyLjAuMQAAMjAxMjow
|
89
|
+
ODowNyAxMTowODo4NQAACZAAAAcAAAAEMDIyMZADAAIAAAAUAAABCpAEAAIA
|
90
|
+
AAAUAAABHpEBAAcAAAAEAAAAAKAAAAcAAAAEMDEwMKABAAMAAAABAAEAAKAC
|
91
|
+
AAQAAAABAAAAZKADAAQAAAABAAAAhqQGAAMAAAABAAAAAAAAAAAyMDEyOjA0
|
92
|
+
OjI4IDE1OjI0OjEzADIwMTI6MDQ6MjggMTU6MjQ6MTMA/+EBeGh0dHA6Ly9u
|
93
|
+
cy5hZG9iZS5jb20veGFwLzEuMC8APHg6eG1wbWV0YSB4bWxuczp4PSJhZG9i
|
94
|
+
ZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAiPgogICA8cmRm
|
95
|
+
OlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt
|
96
|
+
cmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph
|
97
|
+
Ym91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3Jn
|
98
|
+
L2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6c3ViamVjdD4KICAg
|
99
|
+
ICAgICAgICAgPHJkZjpCYWcvPgogICAgICAgICA8L2RjOnN1YmplY3Q+CiAg
|
100
|
+
ICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBt
|
101
|
+
ZXRhPgoA/9sAQwAgFhgcGBQgHBocJCIgJjBQNDAsLDBiRko6UHRmenhyZnBu
|
102
|
+
gJC4nICIropucKDaoq6+xM7Qznya4vLgyPC4ys7G/9sAQwEiJCQwKjBeNDRe
|
103
|
+
xoRwhMbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG
|
104
|
+
xsbGxsbGxsbG/8AAEQgAhgBkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAA
|
105
|
+
AAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUS
|
106
|
+
ITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2
|
107
|
+
Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqS
|
108
|
+
k5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh
|
109
|
+
4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME
|
110
|
+
BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXET
|
111
|
+
IjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG
|
112
|
+
R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZ
|
113
|
+
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp
|
114
|
+
6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A1wKXFOxRiruSMZQyFTnBGODio4oB
|
115
|
+
CoAkkYZ/iOamyKGHT6igYuKMUuKKBCYoxS0YpAGKMUYpaAIrb/j3j/3RUuKj
|
116
|
+
tv8Aj2i/3RUuKQ2NxRTsUUxDaRu31qTFRPLEDtLrkYPX3pNodh1I/wB38R/O
|
117
|
+
lSSNz8jBvoaZdSJDAzucAD0ouA+jIHUisJ9WnlY7PkX0HXFVGupywPzfjzmo
|
118
|
+
c+wWOoBB6Glrm4ryVFZmJXb0JrW0/UBcblcgY6HpmhT7g0XqD0NMeeKN9jOA
|
119
|
+
akb7pPtVXQFZJo7ewjllbChRUyTRuIyrA+YMr71h6pcr9ntrVcZCB2/Liqov
|
120
|
+
G3wOxJ8oYGDjjNK47HVUViWutGOLEyNI2Sdy+lFO4rFafVLiSLaXwDjJXiqY
|
121
|
+
kYFm3gsTjg0KIu6OTjuakMUMv3Y2TA7Go5Sie3neNwyMuRyMH1rX1KYLp77k
|
122
|
+
3bl6A4xWFbmKKQqyFu/bNW3lkIxgNnoTjI7YpJOIaMzI4HkR5AMheo9B60qS
|
123
|
+
OgwpC1qW4Z47gKoB8gqMDGayxbyk7QvPWmawajsSRSTTuIMglvun3q5YIIJN
|
124
|
+
8qDeR8itwCRUEcBtyjhScNlmNS3oME8h8s7OikN1z0pWJm+bUa0geZ3Zupzy
|
125
|
+
auXeq7dPVYJMTZweO1YqyDIGN3tU7W5lTdG20Y3FT0zQlZ3JsyOaR5Z/mJYq
|
126
|
+
No46ColBY7VBJ9BU7Qz+azBDz0OajEUsZ3FSPfNUA0oy8MpFFNcl2yW/Wino
|
127
|
+
K5qvdqkat9njRW5Q7c5HvVeS8aVcMUQZyNq4qs7DaArMAOxOahZmH8Q/AUJC
|
128
|
+
ZZXA+YOBn1IGakN2yghhk564qtbhZAxd8HHemZKkhQCM8HFMVjW0y4aS4k29
|
129
|
+
WRuPwqgbyQsTliTzzU2kyMl8jMcDNF5EIdQlLZ2liVI9DUbM0SvYkS4Ekao8
|
130
|
+
b72HDBuPyq3dLDlROxBEag8+1EKC4khkY/KiDOazdQlWa8kkTJGcA57Dip+I
|
131
|
+
bXKiCeUCZvL+6OB9KkjnJwCelQkeg/MUAsvQD8quxFzQSUKjM7cAZxWfNO8r
|
132
|
+
ZY8dh6UHcepA9s0ggc9MH8RSSsDZHminFGBwQc/SiqEWTBSeQfarFJSuVYg8
|
133
|
+
lvUUCBj3FWN3oqj8M0F29TRcLEIgdPm9vpVqxmD4ilG4e/NQ5qOF9kyt6Gpe
|
134
|
+
qKjobDg/ZpyMAhTyDwaxvLPtW3KQLCYgdQP51k1MHoE1qQ+W3tThGe+2paSr
|
135
|
+
uTYbsGOi0nlDrgVKI3xkjA9TxRhR1f8AIZoAj2n1oqTKf3SfqaKAEzSGkpc0
|
136
|
+
AFFMZiOi5/GmedjqposBOihzjdg/zqGS3l3Ex4dOowadCySSqJGKL3I5qORT
|
137
|
+
GpaJ2DZ+6OlNCNK1mMlv9mcgM/G7HSoXi8tyskigg4IHNM0/m4jLE9ck0jMW
|
138
|
+
csTyTmotZlva47MY6KW/3jS+a3RcKP8AZGKjozTJFPPJOaKTNJmgBaKTNFMC
|
139
|
+
DzW9qPNajym9qTy29KrQWou9/T9KQs7dV/SnKHXoop2X/uj86AI/JY9wKVY2
|
140
|
+
B++afl/7o/OmtI4/gpagWbc4lY9whx+VMplvMokUkDPfNWrqNAfMhIMZ/Q1N
|
141
|
+
rFXuQUlFFAgozS0UAGaKKKYDe1LSZooAKKKKACiiigBCoPUClHFFFAC0tNpa
|
142
|
+
QxaKSigBaKAM9xRTArBjS7zRRVEhvNG80UUALvNKHNFFIBQ9LuzRRQMN1Luo
|
143
|
+
opALmjNFFAwzRRRQB//Z
|
144
|
+
PHOTO
|
@@ -2,25 +2,30 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class TestTourRequest < ::Test::Unit::TestCase
|
4
4
|
|
5
|
-
def test_properties
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
# def test_properties
|
6
|
+
# tr = MLS::TourRequest.new
|
7
|
+
#
|
8
|
+
# assert tr.respond_to?(:message)
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# def test_attr_accessors
|
12
|
+
# tr = MLS::TourRequest.new
|
13
|
+
#
|
14
|
+
# assert tr.respond_to?(:listing)
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# def test_class_methods
|
18
|
+
# assert MLS::TourRequest.respond_to?(:get_all_for_account)
|
19
|
+
# assert MLS::TourRequest.respond_to?(:create)
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# def test_parser
|
23
|
+
# assert defined?(MLS::TourRequest::Parser)
|
24
|
+
# end
|
25
|
+
|
26
|
+
test 'it' do
|
27
|
+
@account = FactoryGirl.create(:account)
|
28
|
+
@listing = FactoryGirl.create(:listing)
|
9
29
|
end
|
10
|
-
|
11
|
-
def test_attr_accessors
|
12
|
-
tr = MLS::TourRequest.new
|
13
|
-
|
14
|
-
assert tr.respond_to?(:listing)
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_class_methods
|
18
|
-
assert MLS::TourRequest.respond_to?(:get_all_for_account)
|
19
|
-
assert MLS::TourRequest.respond_to?(:create)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_parser
|
23
|
-
assert defined?(MLS::TourRequest::Parser)
|
24
|
-
end
|
25
|
-
|
30
|
+
|
26
31
|
end
|
data/test/units/test_errors.rb
CHANGED
@@ -7,18 +7,26 @@ class TestErrors < ::Test::Unit::TestCase
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_bad_request
|
10
|
-
assert defined?(MLS::BadRequest)
|
10
|
+
assert defined?(MLS::Exception::BadRequest)
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_unauthorized
|
14
|
-
assert defined?(MLS::Unauthorized)
|
14
|
+
assert defined?(MLS::Exception::Unauthorized)
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_not_found
|
18
|
-
assert defined?(MLS::NotFound)
|
18
|
+
assert defined?(MLS::Exception::NotFound)
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_api_version_unsupported
|
22
|
-
assert defined?(MLS::ApiVersionUnsupported)
|
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)
|
23
31
|
end
|
24
32
|
end
|
data/test/units/test_mls.rb
CHANGED
@@ -27,8 +27,268 @@ class TestMLS < ::Test::Unit::TestCase
|
|
27
27
|
assert mls.respond_to?(:auth_ping)
|
28
28
|
assert mls.respond_to?(:default_logger)
|
29
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 '/api/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
|
30
186
|
|
31
|
-
|
32
|
-
|
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) }
|
33
292
|
end
|
34
|
-
|
293
|
+
|
294
|
+
end
|