weather-forecasts 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +7 -0
  5. data/Gemfile +10 -0
  6. data/LICENSE +20 -0
  7. data/README.md +135 -0
  8. data/bin/wf-console +21 -0
  9. data/lib/weather-forecasts.rb +1 -0
  10. data/lib/weather_forecasts.rb +23 -0
  11. data/lib/weather_forecasts/client.rb +65 -0
  12. data/lib/weather_forecasts/client/error.rb +18 -0
  13. data/lib/weather_forecasts/client/help_console.rb +9 -0
  14. data/lib/weather_forecasts/client/query.rb +155 -0
  15. data/lib/weather_forecasts/client/query/query_property.rb +68 -0
  16. data/lib/weather_forecasts/client/query/query_utilities.rb +16 -0
  17. data/lib/weather_forecasts/client/query/select_by_days_query.rb +35 -0
  18. data/lib/weather_forecasts/client/query/select_coordinates_by_cities_query.rb +47 -0
  19. data/lib/weather_forecasts/client/query/select_coordinates_by_zip_query.rb +34 -0
  20. data/lib/weather_forecasts/client/query/select_corner_coordinates_query.rb +38 -0
  21. data/lib/weather_forecasts/client/query/select_gridpoint_coordinates_query.rb +35 -0
  22. data/lib/weather_forecasts/client/query/select_linepoint_coordinates_query.rb +33 -0
  23. data/lib/weather_forecasts/client/query/select_query.rb +48 -0
  24. data/lib/weather_forecasts/client/query/select_square_coordinates_query.rb +35 -0
  25. data/lib/weather_forecasts/client/query/selection_attributes.rb +19 -0
  26. data/lib/weather_forecasts/client/version.rb +5 -0
  27. data/lib/weather_forecasts/dwml.rb +38 -0
  28. data/lib/weather_forecasts/dwml/data_extractor.rb +55 -0
  29. data/lib/weather_forecasts/dwml/head_extractor.rb +49 -0
  30. data/lib/weather_forecasts/dwml/location.rb +33 -0
  31. data/lib/weather_forecasts/dwml/parameter_extractor.rb +281 -0
  32. data/lib/weather_forecasts/dwml/time_layout.rb +55 -0
  33. data/spec/fixtures/vcr_cassettes/select_by_days_query.yml +557 -0
  34. data/spec/fixtures/vcr_cassettes/select_coordinates_by_cities_query.yml +437 -0
  35. data/spec/fixtures/vcr_cassettes/select_coordinates_by_zip_query.yml +437 -0
  36. data/spec/fixtures/vcr_cassettes/select_corner_coordinates_query.yml +438 -0
  37. data/spec/fixtures/vcr_cassettes/select_gridpoint_coordinates_query.yml +467 -0
  38. data/spec/fixtures/vcr_cassettes/select_linepoint_coordinates_query.yml +440 -0
  39. data/spec/fixtures/vcr_cassettes/select_query.yml +1647 -0
  40. data/spec/fixtures/vcr_cassettes/select_square_coordinates_query.yml +443 -0
  41. data/spec/lib/ndfd/client/query/query_property_spec.rb +41 -0
  42. data/spec/lib/ndfd/client/query/select_by_days_query_spec.rb +35 -0
  43. data/spec/lib/ndfd/client/query/select_coordinates_by_cities_query_spec.rb +33 -0
  44. data/spec/lib/ndfd/client/query/select_coordinates_by_zip_query_spec.rb +34 -0
  45. data/spec/lib/ndfd/client/query/select_corner_coordinates_query_spec.rb +35 -0
  46. data/spec/lib/ndfd/client/query/select_gridpoint_coordinates_query_spec.rb +37 -0
  47. data/spec/lib/ndfd/client/query/select_linepoint_coordinates_query_spec.rb +36 -0
  48. data/spec/lib/ndfd/client/query/select_query_spec.rb +46 -0
  49. data/spec/lib/ndfd/client/query/select_square_coordinates_query_spec.rb +37 -0
  50. data/spec/lib/ndfd/client/query/selection_attributes_spec.rb +13 -0
  51. data/spec/lib/ndfd/client/query_spec.rb +91 -0
  52. data/spec/lib/ndfd/client_spec.rb +61 -0
  53. data/spec/spec_helper.rb +33 -0
  54. data/spec/support/resources/sample_document.xml +61 -0
  55. data/weather-forecasts.gemspec +39 -0
  56. metadata +224 -0
@@ -0,0 +1,443 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - Apache/2.2.15 (Red Hat)
23
+ Last-Modified:
24
+ - Thu, 13 Mar 2014 18:05:49 GMT
25
+ Accept-Ranges:
26
+ - bytes
27
+ Content-Length:
28
+ - '28583'
29
+ Content-Type:
30
+ - application/wsdl+xml
31
+ Date:
32
+ - Thu, 13 Mar 2014 19:49:58 GMT
33
+ Connection:
34
+ - keep-alive
35
+ body:
36
+ encoding: UTF-8
37
+ string: "<?xml version=\"1.0\"?>\n\n<!-- **********************************************************************
38
+ \ \n \n
39
+ \ ndfdXML.wsdl \n\n John L. Schattel MDL 4
40
+ July 2007 \n Aniesha L. Alford\n Red Hat Linux Apache
41
+ Server \n \n SOURCE CODE CONTROL INFORMATION \n\n Name: \n
42
+ \ %PM% \n %PID% \n\n Status: \n %PS% \n\n
43
+ \ History: \n %PL% \n\n
44
+ \ Change Document History: \n
45
+ \ %PIRC% \n\n
46
+ \ *************************************************************************
47
+ \ -->\n\n<definitions xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"
48
+ \n xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
49
+ \n xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\"
50
+ \n xmlns:si=\"http://soapinterop.org/xsd\" \n xmlns:tns=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
51
+ \n xmlns:typens=\"http://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd\"
52
+ \n xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" \n xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"
53
+ \n xmlns=\"http://schemas.xmlsoap.org/wsdl/\" \n targetNamespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\">\n<types>\n
54
+ <xsd:schema targetNamespace=\"http://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd\">\n
55
+ <xsd:import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\" />\n <xsd:import
56
+ namespace=\"http://schemas.xmlsoap.org/wsdl/\" />\n\n <xsd:simpleType name=\"sectorType\">\n
57
+ \ <xsd:restriction base='xsd:string'>\n <xsd:enumeration value='conus'/>\n
58
+ \ <xsd:enumeration value='nhemi'/>\n <xsd:enumeration value='alaska'/>\n
59
+ \ <xsd:enumeration value='guam'/>\n <xsd:enumeration value='hawaii'/>\n
60
+ \ <xsd:enumeration value='puertori'/>\n <xsd:enumeration value='npacocn'/>\n
61
+ \ </xsd:restriction>\n </xsd:simpleType>\n\n <xsd:simpleType name=\"unitType\">\n
62
+ \ <xsd:restriction base='xsd:string'>\n <xsd:enumeration value='e'/>\n <xsd:enumeration
63
+ value='m'/>\n </xsd:restriction>\n </xsd:simpleType>\n\n <xsd:simpleType
64
+ name=\"formatType\">\n <xsd:restriction base='xsd:string'>\n <xsd:enumeration
65
+ value='24 hourly'/>\n <xsd:enumeration value='12 hourly'/>\n </xsd:restriction>\n
66
+ </xsd:simpleType>\n\n <xsd:simpleType name=\"productType\">\n <xsd:restriction
67
+ base='xsd:string'>\n <xsd:enumeration value='time-series'/>\n <xsd:enumeration
68
+ value='glance'/>\n </xsd:restriction>\n </xsd:simpleType>\n\n <xsd:simpleType
69
+ name=\"latLonPairType\">\n <xsd:restriction base='xsd:string'>\n <xsd:pattern
70
+ value=\"[\\-]?\\d{1,2}\\.\\d+,[\\-]?\\d{1,3}\\.\\d+\" />\n </xsd:restriction>\n
71
+ </xsd:simpleType>\n\n <xsd:simpleType name=\"listLatLonType\">\n <xsd:restriction
72
+ base='xsd:string'>\n <xsd:pattern value=\"[\\-]?\\d{1,2}\\.\\d+,[\\-]?\\d{1,3}\\.\\d+(
73
+ [\\-]?\\d{1,2}\\.\\d+,[\\-]?\\d{1,3}\\.\\d+)*\" />\n </xsd:restriction>\n
74
+ </xsd:simpleType>\n\n <xsd:simpleType name=\"zipCodeType\">\n <xsd:restriction
75
+ base='xsd:string'>\n <xsd:pattern value=\"\\d{5}(\\-\\d{4})?\" />\n </xsd:restriction>\n
76
+ </xsd:simpleType>\n\n <xsd:simpleType name=\"zipCodeListType\">\n <xsd:restriction
77
+ base='xsd:string'>\n <xsd:pattern value=\"\\d{5}(\\-\\d{4})?( \\d{5}(\\-\\d{4})?)*\"
78
+ />\n </xsd:restriction>\n </xsd:simpleType>\n\n <xsd:simpleType name=\"featureTypeType\">\n
79
+ \ <xsd:restriction base='xsd:string'>\n <xsd:enumeration value='Forecast_Gml2Point'/>\n
80
+ \ <xsd:enumeration value='Forecast_Gml2AllWx'/>\n <xsd:enumeration value='Forecast_GmlsfPoint'/>\n
81
+ \ <xsd:enumeration value='Forecast_GmlObs'/>\n <xsd:enumeration value='NdfdMultiPointCoverage'/>\n
82
+ \ <xsd:enumeration value='Ndfd_KmlPoint'/>\n </xsd:restriction>\n </xsd:simpleType>\n\n
83
+ <xsd:simpleType name=\"compTypeType\">\n <xsd:restriction base='xsd:string'>\n
84
+ \ <xsd:enumeration value='IsEqual'/>\n <xsd:enumeration value='Between'/>\n
85
+ \ <xsd:enumeration value='GreaterThan'/>\n <xsd:enumeration value='GreaterThanEqualTo'/>\n
86
+ \ <xsd:enumeration value='LessThan'/>\n <xsd:enumeration value='LessThanEqualTo'/>\n
87
+ \ </xsd:restriction>\n </xsd:simpleType>\n\n <xsd:simpleType name=\"listCityNamesType\">\n
88
+ \ <xsd:restriction base='xsd:string'>\n <xsd:pattern value=\"[a-zA-Z'\\-]*(
89
+ ?[a-zA-Z'\\-]*)*,[A-Z][A-Z](\\|[a-zA-Z'\\-]*( ?[a-zA-Z'\\-]*)*,[A-Z][A-Z])*\"
90
+ />\n </xsd:restriction>\n </xsd:simpleType>\n\n <xsd:simpleType name=\"displayLevelType\">\n
91
+ \ <xsd:restriction base='xsd:integer'>\n <xsd:enumeration value='1'/>\n
92
+ \ <xsd:enumeration value='2'/>\n <xsd:enumeration value='3'/>\n <xsd:enumeration
93
+ value='4'/>\n <xsd:enumeration value='12'/>\n <xsd:enumeration value='34'/>\n
94
+ \ <xsd:enumeration value='1234'/>\n </xsd:restriction>\n </xsd:simpleType>\n\n
95
+ <xsd:complexType name=\"weatherParametersType\">\n <xsd:all>\n <xsd:element
96
+ name=\"maxt\" type=\"xsd:boolean\"/>\n <xsd:element name=\"mint\"
97
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"temp\" type=\"xsd:boolean\"/>\n
98
+ \ <xsd:element name=\"dew\" type=\"xsd:boolean\"/>\n <xsd:element
99
+ name=\"pop12\" type=\"xsd:boolean\"/>\n <xsd:element name=\"qpf\"
100
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"sky\" type=\"xsd:boolean\"/>\n
101
+ \ <xsd:element name=\"snow\" type=\"xsd:boolean\"/>\n <xsd:element
102
+ name=\"wspd\" type=\"xsd:boolean\"/>\n <xsd:element name=\"wdir\"
103
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"wx\" type=\"xsd:boolean\"/>\n
104
+ \ <xsd:element name=\"waveh\" type=\"xsd:boolean\"/>\n <xsd:element
105
+ name=\"icons\" type=\"xsd:boolean\"/>\n <xsd:element name=\"rh\"
106
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"appt\" type=\"xsd:boolean\"/>\n
107
+ \ <xsd:element name=\"incw34\" type=\"xsd:boolean\"/>\n <xsd:element
108
+ name=\"incw50\" type=\"xsd:boolean\"/>\n <xsd:element name=\"incw64\"
109
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"cumw34\" type=\"xsd:boolean\"/>\n
110
+ \ <xsd:element name=\"cumw50\" type=\"xsd:boolean\"/>\n <xsd:element
111
+ name=\"cumw64\" type=\"xsd:boolean\"/>\n <xsd:element name=\"critfireo\"
112
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"dryfireo\" type=\"xsd:boolean\"/>\n
113
+ \ <xsd:element name=\"conhazo\" type=\"xsd:boolean\"/>\n <xsd:element
114
+ name=\"ptornado\" type=\"xsd:boolean\"/>\n <xsd:element name=\"phail\"
115
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"ptstmwinds\" type=\"xsd:boolean\"/>\n
116
+ \ <xsd:element name=\"pxtornado\" type=\"xsd:boolean\"/>\n <xsd:element
117
+ name=\"pxhail\" type=\"xsd:boolean\"/>\n <xsd:element name=\"pxtstmwinds\"
118
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"ptotsvrtstm\" type=\"xsd:boolean\"/>\n
119
+ \ <xsd:element name=\"pxtotsvrtstm\" type=\"xsd:boolean\"/>\n <xsd:element
120
+ name=\"tmpabv14d\" type=\"xsd:boolean\"/>\n <xsd:element name=\"tmpblw14d\"
121
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"tmpabv30d\" type=\"xsd:boolean\"/>\n
122
+ \ <xsd:element name=\"tmpblw30d\" type=\"xsd:boolean\"/>\n <xsd:element
123
+ name=\"tmpabv90d\" type=\"xsd:boolean\"/>\n <xsd:element name=\"tmpblw90d\"
124
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"prcpabv14d\" type=\"xsd:boolean\"/>\n
125
+ \ <xsd:element name=\"prcpblw14d\" type=\"xsd:boolean\"/>\n <xsd:element
126
+ name=\"prcpabv30d\" type=\"xsd:boolean\"/>\n <xsd:element name=\"prcpblw30d\"
127
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"prcpabv90d\" type=\"xsd:boolean\"/>\n
128
+ \ <xsd:element name=\"prcpblw90d\" type=\"xsd:boolean\"/>\n <xsd:element
129
+ name=\"precipa_r\" type=\"xsd:boolean\"/>\n <xsd:element name=\"sky_r\"
130
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"td_r\" type=\"xsd:boolean\"/>\n
131
+ \ <xsd:element name=\"temp_r\" type=\"xsd:boolean\"/>\n <xsd:element
132
+ name=\"wdir_r\" type=\"xsd:boolean\"/>\n <xsd:element name=\"wspd_r\"
133
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"wwa\" type=\"xsd:boolean\"/>\n
134
+ \ <xsd:element name=\"wgust\" type=\"xsd:boolean\"/>\n <xsd:element
135
+ name=\"iceaccum\" type=\"xsd:boolean\"/>\n <xsd:element name=\"maxrh\"
136
+ \ type=\"xsd:boolean\"/>\n <xsd:element name=\"minrh\" type=\"xsd:boolean\"/>\n
137
+ \ </xsd:all>\n </xsd:complexType>\n\n</xsd:schema>\n</types>\n\n<message name=\"NDFDgenRequest\">\n
138
+ \ <part name=\"latitude\" type=\"xsd:decimal\" />\n <part name=\"longitude\"
139
+ \ type=\"xsd:decimal\" />\n <part name=\"product\" type=\"typens:productType\"
140
+ />\n <part name=\"startTime\" type=\"xsd:dateTime\" />\n <part
141
+ name=\"endTime\" type=\"xsd:dateTime\" />\n <part name=\"Unit\"
142
+ \ type=\"typens:unitType\" /> \n <part name=\"weatherParameters\"
143
+ type=\"typens:weatherParametersType\" />\n</message>\n\n<message name=\"NDFDgenResponse\">\n
144
+ \ <part name=\"dwmlOut\" type=\"xsd:string\" />\n</message>\n\n<message
145
+ name=\"NDFDgenLatLonListRequest\">\n <part name=\"listLatLon\" type=\"typens:listLatLonType\"
146
+ />\n <part name=\"product\" type=\"typens:productType\" />\n <part
147
+ name=\"startTime\" type=\"xsd:dateTime\" />\n <part name=\"endTime\"
148
+ \ type=\"xsd:dateTime\" />\n <part name=\"Unit\" type=\"typens:unitType\"
149
+ /> \n <part name=\"weatherParameters\" type=\"typens:weatherParametersType\"
150
+ />\n</message>\n\n<message name=\"NDFDgenLatLonListResponse\">\n <part name=\"dwmlOut\"
151
+ \ type=\"xsd:string\" />\n</message>\n\n<message name=\"LatLonListSubgridRequest\">\n
152
+ \ <part name=\"lowerLeftLatitude\" type=\"xsd:decimal\" />\n <part name=\"lowerLeftLongitude\"
153
+ \ type=\"xsd:decimal\" />\n <part name=\"upperRightLatitude\" type=\"xsd:decimal\"
154
+ />\n <part name=\"upperRightLongitude\" type=\"xsd:decimal\" />\n <part
155
+ name=\"resolution\" type=\"xsd:decimal\" />\n</message>\n\n<message
156
+ name=\"LatLonListSubgridResponse\">\n <part name=\"listLatLonOut\" type=\"typens:listLatLonType\"
157
+ />\n</message>\n\n<message name=\"LatLonListLineRequest\">\n <part name=\"endPoint1Lat\"
158
+ \ type=\"xsd:decimal\" />\n <part name=\"endPoint1Lon\" type=\"xsd:decimal\"
159
+ />\n <part name=\"endPoint2Lat\" type=\"xsd:decimal\" />\n <part
160
+ name=\"endPoint2Lon\" type=\"xsd:decimal\" />\n</message>\n\n<message
161
+ name=\"LatLonListLineResponse\">\n <part name=\"listLatLonOut\" type=\"typens:listLatLonType\"
162
+ />\n</message>\n\n<message name=\"LatLonListZipCodeRequest\">\n <part name=\"zipCodeList\"
163
+ \ type=\"typens:zipCodeListType\" />\n</message>\n\n<message name=\"LatLonListZipCodeResponse\">\n
164
+ \ <part name=\"listLatLonOut\" type=\"typens:listLatLonType\" />\n</message>\n\n<message
165
+ name=\"LatLonListSquareRequest\">\n <part name=\"centerPointLat\" type=\"xsd:decimal\"
166
+ />\n <part name=\"centerPointLon\" type=\"xsd:decimal\" />\n <part
167
+ name=\"distanceLat\" type=\"xsd:decimal\" />\n <part name=\"distanceLon\"
168
+ \ type=\"xsd:decimal\" />\n <part name=\"resolution\" type=\"xsd:decimal\"
169
+ />\n</message>\n\n<message name=\"LatLonListSquareResponse\">\n <part name=\"listLatLonOut\"
170
+ \ type=\"typens:listLatLonType\" />\n</message>\n\n<message name=\"CornerPointsRequest\">\n
171
+ \ <part name=\"sector\" type=\"typens:sectorType\" />\n</message>\n\n<message
172
+ name=\"CornerPointsResponse\">\n <part name=\"listLatLonOut\" type=\"typens:listLatLonType\"
173
+ />\n</message>\n\n<message name=\"LatLonListCityNamesRequest\">\n <part
174
+ name=\"displayLevel\" type=\"typens:displayLevelType\" />\n</message>\n\n<message
175
+ name=\"LatLonListCityNamesResponse\">\n <part name=\"listCityNamesOut\"
176
+ \ type=\"typens:listCityNamesType\" />\n</message>\n\n<message name=\"NDFDgenByDayRequest\">\n
177
+ \ <part name=\"latitude\" type=\"xsd:decimal\" />\n <part name=\"longitude\"
178
+ \ type=\"xsd:decimal\" />\n <part name=\"startDate\" type=\"xsd:date\"
179
+ />\n <part name=\"numDays\" type=\"xsd:integer\" />\n <part
180
+ name=\"Unit\" type=\"typens:unitType\" /> \n <part name=\"format\"
181
+ \ type=\"typens:formatType\" />\n</message>\n\n<message name=\"NDFDgenByDayResponse\">\n
182
+ \ <part name=\"dwmlByDayOut\" type=\"xsd:string\" />\n</message>\n\n<message
183
+ name=\"NDFDgenByDayLatLonListRequest\">\n <part name=\"listLatLon\" type=\"typens:listLatLonType\"
184
+ />\n <part name=\"startDate\" type=\"xsd:date\" />\n <part name=\"numDays\"
185
+ \ type=\"xsd:integer\" />\n <part name=\"Unit\" type=\"typens:unitType\"
186
+ /> \n <part name=\"format\" type=\"typens:formatType\" />\n</message>\n\n<message
187
+ name=\"NDFDgenByDayLatLonListResponse\">\n <part name=\"dwmlByDayOut\" type=\"xsd:string\"
188
+ />\n</message>\n\n<message name=\"GmlLatLonListRequest\">\n <part name=\"listLatLon\"
189
+ \ type=\"typens:listLatLonType\" />\n <part name=\"requestedTime\"
190
+ \ type=\"xsd:dateTime\" />\n <part name=\"featureType\" type=\"typens:featureTypeType\"
191
+ />\n <part name=\"weatherParameters\" type=\"typens:weatherParametersType\"
192
+ />\n</message>\n\n<message name=\"GmlLatLonListResponse\">\n <part name=\"dwGmlOut\"
193
+ \ type=\"xsd:string\" />\n</message>\n\n<message name=\"GmlTimeSeriesRequest\">\n
194
+ \ <part name=\"listLatLon\" type=\"typens:listLatLonType\" />\n <part
195
+ name=\"startTime\" type=\"xsd:dateTime\" />\n <part name=\"endTime\"
196
+ \ type=\"xsd:dateTime\" />\n <part name=\"compType\" type=\"typens:compTypeType\"
197
+ />\n <part name=\"featureType\" type=\"typens:featureTypeType\" />\n
198
+ \ <part name=\"propertyName\" type=\"xsd:string\" />\n</message>\n\n<message
199
+ name=\"GmlTimeSeriesResponse\">\n <part name=\"dwGmlOut\" type=\"xsd:string\"
200
+ />\n</message>\n\n<portType name=\"ndfdXMLPortType\">\n\n <operation name=\"NDFDgen\">\n
201
+ \ <documentation>Returns National Weather Service digital weather forecast
202
+ data</documentation>\n <input message=\"tns:NDFDgenRequest\"/>\n <output
203
+ message=\"tns:NDFDgenResponse\"/>\n </operation>\n\n <operation name=\"NDFDgenByDay\">\n
204
+ \ <documentation>Returns National Weather Service digital weather forecast
205
+ data summarized over either 24- or 12-hourly periods</documentation>\n <input
206
+ \ message=\"tns:NDFDgenByDayRequest\"/>\n <output message=\"tns:NDFDgenByDayResponse\"/>\n
207
+ \ </operation>\n\n <operation name=\"NDFDgenLatLonList\">\n <documentation>Returns
208
+ National Weather Service digital weather forecast data</documentation>\n <input
209
+ \ message=\"tns:NDFDgenLatLonListRequest\"/>\n <output message=\"tns:NDFDgenLatLonListResponse\"/>\n
210
+ \ </operation>\n\n <operation name=\"NDFDgenByDayLatLonList\">\n <documentation>Returns
211
+ National Weather Service digital weather forecast data summarized over either
212
+ 24- or 12-hourly periods</documentation>\n <input message=\"tns:NDFDgenByDayLatLonListRequest\"/>\n
213
+ \ <output message=\"tns:NDFDgenByDayLatLonListResponse\"/>\n </operation>\n\n
214
+ \ <operation name=\"GmlLatLonList\">\n <documentation>Returns National
215
+ Weather Service digital weather forecast data encoded in GML for a single
216
+ time</documentation>\n <input message=\"tns:GmlLatLonListRequest\"/>\n
217
+ \ <output message=\"tns:GmlLatLonListResponse\"/>\n </operation>\n\n
218
+ \ <operation name=\"GmlTimeSeries\">\n <documentation>Returns National
219
+ Weather Service digital weather forecast data encoded in GML for a time period</documentation>\n
220
+ \ <input message=\"tns:GmlTimeSeriesRequest\"/>\n <output message=\"tns:GmlTimeSeriesResponse\"/>\n
221
+ \ </operation>\n\n <operation name=\"LatLonListSubgrid\">\n <documentation>Returns
222
+ a list of latitude and longitude pairs in a rectangular subgrid defined by
223
+ the lower left and upper right points</documentation>\n <input message=\"tns:LatLonListSubgridRequest\"/>\n
224
+ \ <output message=\"tns:LatLonListSubgridResponse\"/>\n </operation>\n\n
225
+ \ <operation name=\"LatLonListLine\">\n <documentation>Returns a list
226
+ of latitude and longitude pairs along a line defined by the latitude and longitude
227
+ of the 2 endpoints</documentation>\n <input message=\"tns:LatLonListLineRequest\"/>\n
228
+ \ <output message=\"tns:LatLonListLineResponse\"/>\n </operation>\n\n
229
+ \ <operation name=\"LatLonListZipCode\">\n <documentation>Returns a
230
+ list of latitude and longitude pairs with each pair corresponding to an input
231
+ zip code.</documentation>\n <input message=\"tns:LatLonListZipCodeRequest\"/>\n
232
+ \ <output message=\"tns:LatLonListZipCodeResponse\"/>\n </operation>\n\n
233
+ \ <operation name=\"LatLonListSquare\">\n <documentation>Returns a list
234
+ of latitude and longitude pairs in a rectangle defined by a central point
235
+ and distance from that point in the latitudinal and longitudinal directions</documentation>\n
236
+ \ <input message=\"tns:LatLonListSquareRequest\"/>\n <output message=\"tns:LatLonListSquareResponse\"/>\n
237
+ \ </operation>\n\n <operation name=\"CornerPoints\">\n <documentation>Returns
238
+ four latitude and longitude pairs for corners of an NDFD grid and the minimum
239
+ resolution that will return the entire grid</documentation>\n <input
240
+ \ message=\"tns:CornerPointsRequest\"/>\n <output message=\"tns:CornerPointsResponse\"/>\n
241
+ \ </operation>\n\n <operation name=\"LatLonListCityNames\">\n <documentation>Returns
242
+ a list of latitude and longitude pairs paired with the city names they correspond
243
+ to</documentation>\n <input message=\"tns:LatLonListCityNamesRequest\"/>\n
244
+ \ <output message=\"tns:LatLonListCityNamesResponse\"/>\n </operation>\n\n</portType>\n\n<binding
245
+ name=\"ndfdXMLBinding\" type=\"tns:ndfdXMLPortType\">\n <soap:binding style=\"rpc\"
246
+ transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n <operation name=\"NDFDgen\">\n
247
+ \ <soap:operation soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgen\"
248
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
249
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
250
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
251
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
252
+ \ </operation>\n\n <operation name=\"NDFDgenByDay\">\n <soap:operation
253
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgenByDay\"
254
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
255
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
256
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
257
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
258
+ \ </operation>\n\n <operation name=\"NDFDgenLatLonList\">\n <soap:operation
259
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgenLatLonList\"
260
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
261
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
262
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
263
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
264
+ \ </operation>\n\n <operation name=\"NDFDgenByDayLatLonList\">\n <soap:operation
265
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#NDFDgenByDayLatLonList\"
266
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
267
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
268
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
269
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
270
+ \ </operation>\n\n <operation name=\"GmlLatLonList\">\n <soap:operation
271
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#GmlLatLonList\"
272
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
273
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
274
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
275
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
276
+ \ </operation>\n\n <operation name=\"GmlTimeSeries\">\n <soap:operation
277
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#GmlTimeSeries\"
278
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
279
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
280
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
281
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
282
+ \ </operation>\n\n <operation name=\"LatLonListSubgrid\">\n <soap:operation
283
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListSubgrid\"
284
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
285
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
286
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
287
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
288
+ \ </operation>\n\n <operation name=\"LatLonListLine\">\n <soap:operation
289
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListLine\"
290
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
291
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
292
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
293
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
294
+ \ </operation>\n\n <operation name=\"LatLonListZipCode\">\n <soap:operation
295
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListZipCode\"
296
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
297
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
298
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
299
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
300
+ \ </operation>\n\n <operation name=\"LatLonListSquare\">\n <soap:operation
301
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListSquare\"
302
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
303
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
304
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
305
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
306
+ \ </operation>\n\n <operation name=\"CornerPoints\">\n <soap:operation
307
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#CornerPoints\"
308
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
309
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
310
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
311
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
312
+ \ </operation>\n\n <operation name=\"LatLonListCityNames\">\n <soap:operation
313
+ soapAction=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListCityNames\"
314
+ style=\"rpc\"/>\n <input>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
315
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </input>\n
316
+ \ <output>\n <soap:body use=\"encoded\" namespace=\"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl\"
317
+ encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n </output>\n
318
+ \ </operation>\n\n</binding>\n\n<service name=\"ndfdXML\">\n <documentation>The
319
+ service has 12 exposed functions, NDFDgen, NDFDgenLatLonList, NDFDgenByDay,
320
+ NDFDgenByDayLatLonList, \n LatLonListSubgrid, LatLonListLine,
321
+ LatLonListZipCode, CornerPoints, LatLonListSquare, GmlLatLonList, GmlTimeSeries,
322
+ and LatLonListCityNames. \n For the NDFDgen function, the
323
+ client needs to provide a latitude and longitude pair and the product type.
324
+ The Unit will default\n to U.S. Standard (english) unless
325
+ Metric is chosen by client. The client also needs to provide the start and
326
+ end time (Local) \n of the period that it wants data for
327
+ (if shorter than the 7 days is wanted). For the time-series product, the
328
+ client needs to \n provide an array of boolean values corresponding
329
+ to which NDFD values are desired.\n For the NDFDgenByDay
330
+ function, the client needs to provide a latitude and longitude pair, the date
331
+ (Local) it wants to start \n retrieving data for and the
332
+ number of days worth of data. The Unit will default to U.S. Standard (english)
333
+ unless Metric is \n chosen by client. The client also needs
334
+ to provide the format that is desired. \n For the multi
335
+ point versions, NDFDgenLatLonList and NDFDgenByDayLatLonList a space delimited
336
+ list of latitude and longitude \n\t\t pairs are substituted for the single
337
+ latitude and longitude input. Each latitude and longitude \n pair
338
+ is composed of a latitude and longitude delimited by a comma. \n\t\t For
339
+ the LatLonListSubgrid, the user provides a comma delimited latitude and longitude
340
+ pair for the lower left and for \n the upper right corners
341
+ of a rectangular subgrid. The function can also take a integer \n resolution
342
+ to reduce the number of grid points returned. The service then returns a list
343
+ of \n latitude and longitude pairs for all the grid points
344
+ contained in the subgrid. \n weather values should appear
345
+ in the time series product. \n\t\t For the LatLonListLine, The inputs are
346
+ the same as the function NDFDgen except the latitude and longitude pair is
347
+ \n\t\t replaced by two latitude and longitude pairs, one for each end point
348
+ a line. The two points are delimited with a space. \n The
349
+ service then returns data for all the NDFD points on the line formed by the
350
+ two points. \n\t\t For the LatLonListZipCode function, the input is the
351
+ same as the NDFDgen function except the latitude and longitude values \n\t\t
352
+ \ are relaced by a zip code for the 50 United States and Puerto Rico.\n\t\t
353
+ \ For the LatLonListSquare function, the input is the same as the NDFDgen
354
+ function except the latitude and longitude values \n\t\t are relaced by a
355
+ zip code for the 50 United States and Puerto Rico.\n\t\t For the CornerPoints
356
+ function, the service requires a valid NDFD grid name. The function returns
357
+ a \n list of four latitude and longitude pairs, one for each
358
+ corner of the NDFD grid. The function \n also returns the
359
+ minimum resolution required to return the entire grid below the maximum points
360
+ \n threshold.\n For the GmlLatLonList function,
361
+ the service requires a list of latitude and longitude pairs, the time (UTC)
362
+ the user \n\t\t wants data for, the GML feature type and the array of boolean
363
+ values corresponding to which NDFD values are desired.\n For
364
+ the GmlTimeSeries function, the service requires a list of latitude and longitude
365
+ pairs, the start and end time (UTC) the user \n\t\t wants data for, a comparison
366
+ type (IsEqual, Between, GreaterThan, GreaterThan, GreaterThanEqualTo, LessThan,
367
+ and \n LessThanEqualTo), the GML feature type and The input
368
+ variable \"propertyName\" contains a comma delimited string of NDFD element
369
+ to \n indicate which weather parameters are being requested.\n
370
+ \ For the LatLonListCityNames function, the services requires
371
+ a detail level that that ranges from 1 to 4. Level 1 generally represents\n
372
+ \ large main cities. Level 2 represents progressively smaller
373
+ cities or large cities that are close to another even larger city. Levels\n
374
+ \ 3 and 4 are part one and two of a list of cities that help
375
+ increase the areal coverage of the cities dataset. This functions\n returns
376
+ a list of latitude and longitude values along with a seperate list of city
377
+ name for those point.</documentation>\n\n <port name=\"ndfdXMLPort\" binding=\"tns:ndfdXMLBinding\">\n
378
+ \ <soap:address location=\"http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php\"/>\n
379
+ \ </port>\n</service>\n\n</definitions>\n"
380
+ http_version:
381
+ recorded_at: Thu, 13 Mar 2014 19:50:01 GMT
382
+ - request:
383
+ method: post
384
+ uri: http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php
385
+ body:
386
+ encoding: UTF-8
387
+ string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
388
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl"
389
+ xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="http://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd"><env:Body><tns:LatLonListSquare><centerPointLat>39.547101</centerPointLat><centerPointLon>-105.215759</centerPointLon><distanceLat>0.547101</distanceLat><distanceLon>0.215759</distanceLon><resolution>10</resolution></tns:LatLonListSquare></env:Body></env:Envelope>
390
+ headers:
391
+ Soapaction:
392
+ - '"http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListSquare"'
393
+ Content-Type:
394
+ - text/xml;charset=UTF-8
395
+ Content-Length:
396
+ - '610'
397
+ Accept-Encoding:
398
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
399
+ Accept:
400
+ - "*/*"
401
+ User-Agent:
402
+ - Ruby
403
+ response:
404
+ status:
405
+ code: 200
406
+ message: OK
407
+ headers:
408
+ Server:
409
+ - Apache/2.2.15 (Red Hat)
410
+ X-Soap-Server:
411
+ - NuSOAP/0.9.5 (1.123)
412
+ Content-Type:
413
+ - text/xml; charset=ISO-8859-1
414
+ Vary:
415
+ - Accept-Encoding
416
+ Cache-Control:
417
+ - max-age=174
418
+ Expires:
419
+ - Thu, 13 Mar 2014 19:52:53 GMT
420
+ Date:
421
+ - Thu, 13 Mar 2014 19:49:59 GMT
422
+ Content-Length:
423
+ - '1472'
424
+ Connection:
425
+ - keep-alive
426
+ body:
427
+ encoding: UTF-8
428
+ string: <?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
429
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
430
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:LatLonListSquareResponse
431
+ xmlns:ns1="http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl"><listLatLonOut
432
+ xsi:type="xsd:string">&lt;?xml version=&apos;1.0&apos;?&gt;&lt;dwml version=&apos;1.0&apos;
433
+ xmlns:xsd=&apos;http://www.w3.org/2001/XMLSchema&apos; xmlns:xsi=&apos;http://www.w3.org/2001/XMLSchema-instance&apos;
434
+ xsi:noNamespaceSchemaLocation=&apos;http://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd&apos;&gt;&lt;latLonList&gt;39.465985,-105.308129
435
+ 39.510020,-105.312477 39.554046,-105.316828 39.598062,-105.321183 39.642069,-105.325542
436
+ 39.469331,-105.251081 39.513367,-105.255404 39.557393,-105.259732 39.601410,-105.264063
437
+ 39.645418,-105.268398 39.472658,-105.194029 39.516695,-105.198329 39.560722,-105.202632
438
+ 39.604739,-105.206939 39.648748,-105.211250 39.475966,-105.136973 39.520004,-105.141249
439
+ 39.564032,-105.145529 39.608050,-105.149812 39.652059,-105.154099 39.479256,-105.079914
440
+ 39.523294,-105.084166 39.567323,-105.088422 39.611342,-105.092681 39.655351,-105.096944&lt;/latLonList&gt;&lt;/dwml&gt;</listLatLonOut></ns1:LatLonListSquareResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
441
+ http_version:
442
+ recorded_at: Thu, 13 Mar 2014 19:50:02 GMT
443
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe WeatherForecasts::Client::QueryProperty do
4
+ let(:name) { :thing }
5
+ let(:klass) { WeatherForecasts::Client::QueryProperty }
6
+
7
+ subject { klass.new(name) }
8
+
9
+ describe "#initialize" do
10
+ it "sets the appropriate defaults" do
11
+ subject.name.should == name
12
+ subject.type.should == String
13
+ subject.options.should be_nil
14
+ subject.default.should be_nil
15
+ subject.required.should be_false
16
+ subject.required_keys.should be_empty
17
+ end
18
+ end
19
+
20
+ describe "#valid?" do
21
+ it "raises an error on failure to validate required values" do
22
+ instance = klass.new(name, :required => true)
23
+ expect { instance.valid?({}) }.to raise_error(WeatherForecasts::Client::RequiredPropertyError)
24
+ end
25
+
26
+ it "raises an error on failure to validate matching types" do
27
+ instance = klass.new(name, :type => String)
28
+ expect { instance.valid?(name => 5) }.to raise_error(WeatherForecasts::Client::InvalidPropertyTypeError)
29
+ end
30
+
31
+ it "raises an error on failure to validate required keys" do
32
+ instance = klass.new(name, :type => Array, :required_keys => [:lat, :long])
33
+ expect { instance.valid?(name => []) }.to raise_error(WeatherForecasts::Client::RequiredKeysMissingError)
34
+ end
35
+
36
+ it "raises an error on failure to validate the correct use of a set of options" do
37
+ instance = klass.new(name, :type => String, :options => ["one", "two"])
38
+ expect { instance.valid?(name => "three") }.to raise_error(WeatherForecasts::Client::InvalidOptionSpecifiedError)
39
+ end
40
+ end
41
+ end