skiplan_client 0.1.5 → 0.2.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.
- checksums.yaml +7 -0
- data/data/lumi_response.xml +0 -88
- data/lib/skiplan_client/skiplan.rb +1 -0
- data/lib/skiplan_client/version.rb +1 -1
- data/lib/skiplan_client/zone.rb +4 -1
- data/lib/skiplan_client.rb +27 -24
- data/skiplan_client.gemspec +4 -4
- data/test/skiplan_client/forecast_test.rb +1 -2
- data/test/skiplan_client/metrics_test.rb +1 -2
- data/test/skiplan_client/skiplan_client_test.rb +18 -12
- data/test/skiplan_client/zone_test.rb +13 -6
- metadata +26 -41
- data/test/skiplan_client/weather_object_test.rb +0 -10
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 56fb88b43862ee4f6f162950a21d7c84cbdf7b8e
|
|
4
|
+
data.tar.gz: 25733b6599e5c04f52e1501ce3dc276255f96c6d
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 111959f9f98523ced19818eae7859268e0b3d9d57a58da4ce488f5637161ee1459db2f3ed3e8a638d23dd4413e84fed3890c9e907adb5bac3030272467bb9669
|
|
7
|
+
data.tar.gz: 96d5af1b97db6a4e02fad472d39143ccd301ef509c44cc490c303721dab7daa8dae364b0949629765627b8a78fd31061488c78056d37f98f24a179008c3065c4
|
data/data/lumi_response.xml
CHANGED
|
@@ -1165,94 +1165,6 @@
|
|
|
1165
1165
|
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1166
1166
|
</PLAGES>
|
|
1167
1167
|
</PISTE>
|
|
1168
|
-
<PISTE nom="LA MOTTAZ-L'ARBELAY 1 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="1000" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1169
|
-
<PLAGES>
|
|
1170
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1171
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1172
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1173
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1174
|
-
</PLAGES>
|
|
1175
|
-
</PISTE>
|
|
1176
|
-
<PISTE nom="LA VALLEE DU BOUCHET 7,5 KM." etat="F" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="7500" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1177
|
-
<PLAGES>
|
|
1178
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1179
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1180
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1181
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1182
|
-
</PLAGES>
|
|
1183
|
-
</PISTE>
|
|
1184
|
-
<PISTE nom="LE BORNE 2 KM." etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="2000" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1185
|
-
<PLAGES>
|
|
1186
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1187
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1188
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1189
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1190
|
-
</PLAGES>
|
|
1191
|
-
</PISTE>
|
|
1192
|
-
<PISTE nom="LE CRET-LE RECHAT 3 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="3000" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1193
|
-
<PLAGES>
|
|
1194
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1195
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1196
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1197
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1198
|
-
</PLAGES>
|
|
1199
|
-
</PISTE>
|
|
1200
|
-
<PISTE nom="LE ROSAY-CHINAILLON 1,5 KM" etat="F" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="1500" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1201
|
-
<PLAGES>
|
|
1202
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1203
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1204
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1205
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1206
|
-
</PLAGES>
|
|
1207
|
-
</PISTE>
|
|
1208
|
-
<PISTE nom="LE TERRET 3 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="3000" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1209
|
-
<PLAGES>
|
|
1210
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1211
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1212
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1213
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1214
|
-
</PLAGES>
|
|
1215
|
-
</PISTE>
|
|
1216
|
-
<PISTE nom="LE VIEUX VILLAGE-LA MAZERIE 3 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="3000" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1217
|
-
<PLAGES>
|
|
1218
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1219
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1220
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1221
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1222
|
-
</PLAGES>
|
|
1223
|
-
</PISTE>
|
|
1224
|
-
<PISTE nom="LE VILLAGE-LE CROIX 3,5 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="3500" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1225
|
-
<PLAGES>
|
|
1226
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1227
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1228
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1229
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1230
|
-
</PLAGES>
|
|
1231
|
-
</PISTE>
|
|
1232
|
-
<PISTE nom="LE VILLAGE-LES POTAIS 3 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="3000" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1233
|
-
<PLAGES>
|
|
1234
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1235
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1236
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1237
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1238
|
-
</PLAGES>
|
|
1239
|
-
</PISTE>
|
|
1240
|
-
<PISTE nom="LES NANTS-LE MONT 2,5 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="2500" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1241
|
-
<PLAGES>
|
|
1242
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1243
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1244
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1245
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1246
|
-
</PLAGES>
|
|
1247
|
-
</PISTE>
|
|
1248
|
-
<PISTE nom="ROUTE DE LA DUCHE 14 KM" etat="O" type="PE" msg=" " niveau="" entretien_txt="" entretien_num="0" longueur="14000" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
|
1249
|
-
<PLAGES>
|
|
1250
|
-
<PLAGE prd_id="1" pgh_id="" heuredeb="" heurefin=""/>
|
|
1251
|
-
<PLAGE prd_id="2" pgh_id="" heuredeb="" heurefin=""/>
|
|
1252
|
-
<PLAGE prd_id="3" pgh_id="" heuredeb="" heurefin=""/>
|
|
1253
|
-
<PLAGE prd_id="4" pgh_id="" heuredeb="" heurefin=""/>
|
|
1254
|
-
</PLAGES>
|
|
1255
|
-
</PISTE>
|
|
1256
1168
|
</SECTEUR>
|
|
1257
1169
|
<SECTEUR nom="PISTE DE LUGE">
|
|
1258
1170
|
<PISTE nom="LE BORNE (VILLAGE)" etat="F" type="L" msg=" " niveau="V" entretien_txt="" entretien_num="0" longueur="0" heuredeb="00:00" heurefin="23:59" heuredebmod="00:00" heurefinmod="23:59">
|
data/lib/skiplan_client/zone.rb
CHANGED
|
@@ -5,7 +5,10 @@ class Zone
|
|
|
5
5
|
include AttributeHelper
|
|
6
6
|
|
|
7
7
|
def initialize(attributes)
|
|
8
|
-
|
|
8
|
+
normalized_attrs = attributes.dup
|
|
9
|
+
normalized_attrs['REMONTEE'] = [normalized_attrs['REMONTEE']] if normalized_attrs['REMONTEE'].is_a?(Hash)
|
|
10
|
+
normalized_attrs['PISTE'] = [normalized_attrs['PISTE']] if normalized_attrs['PISTE'].is_a?(Hash)
|
|
11
|
+
self.attributes = normalized_attrs
|
|
9
12
|
end
|
|
10
13
|
|
|
11
14
|
def name
|
data/lib/skiplan_client.rb
CHANGED
|
@@ -2,6 +2,7 @@ require 'skiplan_client/version'
|
|
|
2
2
|
require 'skiplan_client/forecast'
|
|
3
3
|
require 'skiplan_client/metrics'
|
|
4
4
|
require 'skiplan_client/zone'
|
|
5
|
+
require 'skiplan_client/skiplan'
|
|
5
6
|
require 'open-uri'
|
|
6
7
|
require 'nokogiri'
|
|
7
8
|
require 'active_support/core_ext/hash/conversions'
|
|
@@ -10,46 +11,48 @@ module SkiplanClient
|
|
|
10
11
|
|
|
11
12
|
# Configuration defaults
|
|
12
13
|
@config = {
|
|
13
|
-
:base_url => '
|
|
14
|
+
:base_url => ''
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
def self.configure(url)
|
|
17
18
|
@config[:base_url] = url
|
|
18
19
|
end
|
|
19
20
|
|
|
20
|
-
def self.
|
|
21
|
+
def self.weather(zone)
|
|
21
22
|
xml = Nokogiri::XML(open(@config[:base_url]))
|
|
22
|
-
|
|
23
|
+
skiplan = Skiplan.new
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
zone_nodes = xml.xpath('//ZONE[@reference="' + zone + '"]')
|
|
26
|
+
zone_nodes.each do |n|
|
|
27
|
+
skiplan.forecasts[n['nom']] = Forecast.new(Hash.from_xml(n.to_s)['ZONE'])
|
|
28
|
+
end
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
today_forecast = xml.xpath('//BULLETINS//JOUR//LANGUE[@val="fr"]')
|
|
31
|
+
skiplan.text_messages['today_forecast'] = Hash.from_xml(today_forecast.to_s)['LANGUE']
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
forecasts_comment = xml.xpath('//BULLETINS//COMMENTAIRES//LANGUE[@val="fr"]')
|
|
34
|
+
skiplan.text_messages['forecasts_comment'] = Hash.from_xml(forecasts_comment.to_s)['LANGUE']
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
skiplan
|
|
37
|
+
end
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
def self.ski_area
|
|
40
|
+
xml = Nokogiri::XML(open(@config[:base_url]))
|
|
41
|
+
skiplan = Skiplan.new
|
|
42
|
+
|
|
43
|
+
area_metrics = xml.xpath('//INDICES')
|
|
44
|
+
area_metrics.each do |area|
|
|
45
|
+
skiplan.metrics[area['nom']] = Metrics.new(Hash.from_xml(area.to_s)['INDICES'])
|
|
46
|
+
slopes_comment = area.xpath('.//COMMENTAIRES//LANGUE[@val="fr"]')
|
|
47
|
+
skiplan.text_messages[area['nom']] ||= {}
|
|
48
|
+
skiplan.text_messages[area['nom']]['slopes_comment'] = Hash.from_xml(slopes_comment.to_s)['LANGUE']
|
|
49
|
+
end
|
|
38
50
|
|
|
39
51
|
zones = xml.xpath('//SECTEUR')
|
|
40
52
|
zones.each do |z|
|
|
41
|
-
|
|
53
|
+
skiplan.zones[z['nom']] = Zone.new(Hash.from_xml(z.to_s)['SECTEUR'])
|
|
42
54
|
end
|
|
43
55
|
|
|
44
|
-
|
|
45
|
-
weather.text_messages['today_forecast'] = Hash.from_xml(today_forecast.to_s)['LANGUE']
|
|
46
|
-
|
|
47
|
-
forecasts_comment = xml.xpath('//BULLETINS//COMMENTAIRES//LANGUE[@val="fr"]')
|
|
48
|
-
weather.text_messages['forecasts_comment'] = Hash.from_xml(forecasts_comment.to_s)['LANGUE']
|
|
49
|
-
|
|
50
|
-
slopes_comment = xml.xpath('//INDICES//COMMENTAIRES//LANGUE[@val="fr"]')
|
|
51
|
-
weather.text_messages['slopes_comment'] = Hash.from_xml(slopes_comment.to_s)['LANGUE']
|
|
52
|
-
|
|
53
|
-
weather
|
|
56
|
+
skiplan
|
|
54
57
|
end
|
|
55
58
|
end
|
data/skiplan_client.gemspec
CHANGED
|
@@ -6,7 +6,7 @@ require 'skiplan_client/version'
|
|
|
6
6
|
Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "skiplan_client"
|
|
8
8
|
spec.version = SkiplanClient::VERSION
|
|
9
|
-
spec.authors = ["SimonRonzani"]
|
|
9
|
+
spec.authors = ["SimonRonzani", "jeanbaptistevilain"]
|
|
10
10
|
spec.email = ["ronzani.simon@gmail.com"]
|
|
11
11
|
spec.description = "SkiPlan API client gem"
|
|
12
12
|
spec.summary = "A simple Ruby wrapper for the SkiPlan XML api"
|
|
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
spec.add_development_dependency "bundler"
|
|
21
|
+
spec.add_development_dependency "bundler"
|
|
22
22
|
spec.add_development_dependency "rake"
|
|
23
23
|
spec.add_development_dependency "test-unit"
|
|
24
|
-
spec.add_development_dependency "shoulda"
|
|
25
|
-
spec.add_runtime_dependency "rails"
|
|
24
|
+
spec.add_development_dependency "shoulda-context"
|
|
25
|
+
spec.add_runtime_dependency "rails"
|
|
26
26
|
spec.add_runtime_dependency "nokogiri"
|
|
27
27
|
end
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# encoding : UTF-8
|
|
2
|
-
require 'rubygems'
|
|
3
|
-
gem 'shoulda'
|
|
4
2
|
require 'test/unit'
|
|
5
|
-
require 'shoulda'
|
|
3
|
+
require 'shoulda-context'
|
|
6
4
|
require 'skiplan_client'
|
|
7
5
|
require 'skiplan_client/skiplan'
|
|
8
6
|
|
|
@@ -17,9 +15,9 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
17
15
|
end
|
|
18
16
|
|
|
19
17
|
should 'retrieve weather data' do
|
|
20
|
-
weather = SkiplanClient.
|
|
18
|
+
weather = SkiplanClient.weather('CHINAILLON')
|
|
21
19
|
|
|
22
|
-
today_forecast = weather.forecasts['
|
|
20
|
+
today_forecast = weather.forecasts['CHINAILLON']
|
|
23
21
|
assert_equal '101' , today_forecast.weather_am
|
|
24
22
|
assert_equal '101' , today_forecast.weather_pm
|
|
25
23
|
assert_equal '+12' , today_forecast.temp_am
|
|
@@ -28,7 +26,7 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
28
26
|
assert_equal '4' , today_forecast.wind_speed
|
|
29
27
|
assert_equal 'SE' , today_forecast.wind_dir
|
|
30
28
|
|
|
31
|
-
tomorrow_forecast = weather.forecasts['
|
|
29
|
+
tomorrow_forecast = weather.forecasts['J+1']
|
|
32
30
|
assert_equal '104' , tomorrow_forecast.weather_am
|
|
33
31
|
assert_equal '106' , tomorrow_forecast.weather_pm
|
|
34
32
|
assert_equal '+17' , tomorrow_forecast.temp_am
|
|
@@ -36,7 +34,7 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
36
34
|
assert_equal '7' , tomorrow_forecast.wind_speed
|
|
37
35
|
assert_equal 'SO' , tomorrow_forecast.wind_dir
|
|
38
36
|
|
|
39
|
-
j2_forecast = weather.forecasts['
|
|
37
|
+
j2_forecast = weather.forecasts['J+2']
|
|
40
38
|
assert_equal '106' , j2_forecast.weather_am
|
|
41
39
|
assert_equal '104' , j2_forecast.weather_pm
|
|
42
40
|
assert_equal '+12' , j2_forecast.temp_am
|
|
@@ -44,7 +42,7 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
44
42
|
assert_equal '7' , j2_forecast.wind_speed
|
|
45
43
|
assert_equal 'O' , j2_forecast.wind_dir
|
|
46
44
|
|
|
47
|
-
j3_forecast = weather.forecasts['
|
|
45
|
+
j3_forecast = weather.forecasts['J+3']
|
|
48
46
|
assert_equal '101' , j3_forecast.weather_am
|
|
49
47
|
assert_equal '103' , j3_forecast.weather_pm
|
|
50
48
|
assert_equal '+16' , j3_forecast.temp_am
|
|
@@ -54,7 +52,7 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
54
52
|
end
|
|
55
53
|
|
|
56
54
|
should 'retrieve metrics data' do
|
|
57
|
-
metrics = SkiplanClient.
|
|
55
|
+
metrics = SkiplanClient.ski_area.metrics['GRAND BORNAND']
|
|
58
56
|
|
|
59
57
|
assert_equal '0/44', metrics.alpine[:total]
|
|
60
58
|
assert_equal '0/17', metrics.nordic[:total]
|
|
@@ -65,7 +63,7 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
65
63
|
end
|
|
66
64
|
|
|
67
65
|
should 'retrieve zones data' do
|
|
68
|
-
zones = SkiplanClient.
|
|
66
|
+
zones = SkiplanClient.ski_area.zones
|
|
69
67
|
|
|
70
68
|
assert_equal 10, zones.length
|
|
71
69
|
assert_equal 'ALPIN CHINAILLON', zones.keys[0]
|
|
@@ -73,6 +71,9 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
73
71
|
ac_zone = zones['ALPIN CHINAILLON']
|
|
74
72
|
assert_equal 10, ac_zone.skilifts.count
|
|
75
73
|
assert_equal 16, ac_zone.slopes.count
|
|
74
|
+
|
|
75
|
+
single_entry_zone = zones['PIETONS']
|
|
76
|
+
assert_equal 1, single_entry_zone.slopes.count
|
|
76
77
|
end
|
|
77
78
|
|
|
78
79
|
should 'change config url' do
|
|
@@ -80,11 +81,16 @@ class SkiplanClientTest < Test::Unit::TestCase
|
|
|
80
81
|
assert_equal 'my_new_url', config
|
|
81
82
|
end
|
|
82
83
|
|
|
83
|
-
should 'retrieve text messages' do
|
|
84
|
-
text_forecasts = SkiplanClient.
|
|
84
|
+
should 'retrieve forecasts text messages' do
|
|
85
|
+
text_forecasts = SkiplanClient.weather('CHINAILLON').text_messages
|
|
85
86
|
|
|
86
87
|
assert_equal 'Pluie. Vent faible variable.', text_forecasts['today_forecast']
|
|
87
88
|
assert_equal 'Col de la Colombière ouvert.', text_forecasts['forecasts_comment']
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
should 'retrieve ski area text messages' do
|
|
92
|
+
text_forecasts = SkiplanClient.ski_area.text_messages['GRAND BORNAND']
|
|
93
|
+
|
|
88
94
|
assert_equal 'LE DOMAINE SKIABLE EST FERME POUR LA SAISON 2013/2014.', text_forecasts['slopes_comment']
|
|
89
95
|
end
|
|
90
96
|
end
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# encoding : UTF-8
|
|
2
2
|
require 'rubygems'
|
|
3
|
-
gem 'shoulda'
|
|
4
3
|
require 'test/unit'
|
|
5
|
-
require 'shoulda'
|
|
4
|
+
require 'shoulda-context'
|
|
6
5
|
require 'skiplan_client/zone'
|
|
7
6
|
|
|
8
7
|
class ZoneTest < Test::Unit::TestCase
|
|
@@ -11,8 +10,8 @@ class ZoneTest < Test::Unit::TestCase
|
|
|
11
10
|
attributes = {'nom' => 'ALPIN CHINAILLON',
|
|
12
11
|
'REMONTEE' => [{'nom' => 'TS LA FLORIA', 'etat' => 'O', 'type' => 'TS', 'msg' => 'Fermee pour la saison', 'heuredeb' => '09:00', 'heurefin' => '16:45'},
|
|
13
12
|
{'nom' => 'TK LE STADE', 'etat' => 'F', 'type' => 'TK', 'msg' => 'Fermee pour la saison', 'heuredeb' => '09:00', 'heurefin' => '16:00'}],
|
|
14
|
-
'PISTE' => [{'nom' => 'LA SERPENTINE', 'etat' => 'F', 'type' => 'A', 'msg' => 'Piste de retour au Village', 'niveau' => 'V'},
|
|
15
|
-
{'nom' => 'LE VENAY', 'etat' => 'O', 'type' => 'A', 'msg' => '', 'niveau' => 'V'}]
|
|
13
|
+
'PISTE' => [{'nom' => 'LA SERPENTINE', 'etat' => 'F', 'type' => 'A', 'msg' => 'Piste de retour au Village', 'niveau' => 'V', 'entretien_num' => '1'},
|
|
14
|
+
{'nom' => 'LE VENAY', 'etat' => 'O', 'type' => 'A', 'msg' => '', 'niveau' => 'V', 'entretien_num' => '0'}]
|
|
16
15
|
}
|
|
17
16
|
@zone = Zone.new(attributes)
|
|
18
17
|
end
|
|
@@ -21,8 +20,16 @@ class ZoneTest < Test::Unit::TestCase
|
|
|
21
20
|
assert_equal 'ALPIN CHINAILLON', @zone.name
|
|
22
21
|
assert_equal [{'nom' => 'TS LA FLORIA', 'etat' => 'O', 'type' => 'TS', 'msg' => 'Fermee pour la saison', 'heuredeb' => '09:00', 'heurefin' => '16:45'},
|
|
23
22
|
{'nom' => 'TK LE STADE', 'etat' => 'F', 'type' => 'TK', 'msg' => 'Fermee pour la saison', 'heuredeb' => '09:00', 'heurefin' => '16:00'}], @zone.skilifts
|
|
24
|
-
assert_equal [{'nom' => 'LA SERPENTINE', 'etat' => 'F', 'type' => 'A', 'msg' => 'Piste de retour au Village', 'niveau' => 'V'},
|
|
25
|
-
{'nom' => 'LE VENAY', 'etat' => 'O', 'type' => 'A', 'msg' => '', 'niveau' => 'V'}], @zone.slopes
|
|
23
|
+
assert_equal [{'nom' => 'LA SERPENTINE', 'etat' => 'F', 'type' => 'A', 'msg' => 'Piste de retour au Village', 'niveau' => 'V', 'entretien_num' => '1'},
|
|
24
|
+
{'nom' => 'LE VENAY', 'etat' => 'O', 'type' => 'A', 'msg' => '', 'niveau' => 'V', 'entretien_num' => '0'}], @zone.slopes
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
should 'store an array of slopes even when only one slope is present' do
|
|
28
|
+
attributes = {'nom' => 'PIETONS',
|
|
29
|
+
'PISTE' => {'nom' => 'Chemin pieton', 'etat' => 'F', 'type' => 'PE', 'msg' => 'Chemin', 'entretien_num' => '0'}
|
|
30
|
+
}
|
|
31
|
+
@zone = Zone.new(attributes)
|
|
32
|
+
assert_equal [{'nom' => 'Chemin pieton', 'etat' => 'F', 'type' => 'PE', 'msg' => 'Chemin', 'entretien_num' => '0'}], @zone.slopes
|
|
26
33
|
end
|
|
27
34
|
|
|
28
35
|
should 'return the ratio of open skilifts' do
|
metadata
CHANGED
|
@@ -1,110 +1,98 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: skiplan_client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.2.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- SimonRonzani
|
|
8
|
+
- jeanbaptistevilain
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2015-
|
|
12
|
+
date: 2015-10-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
17
|
requirements:
|
|
19
|
-
- -
|
|
18
|
+
- - ">="
|
|
20
19
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '
|
|
20
|
+
version: '0'
|
|
22
21
|
type: :development
|
|
23
22
|
prerelease: false
|
|
24
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
24
|
requirements:
|
|
27
|
-
- -
|
|
25
|
+
- - ">="
|
|
28
26
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
27
|
+
version: '0'
|
|
30
28
|
- !ruby/object:Gem::Dependency
|
|
31
29
|
name: rake
|
|
32
30
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
31
|
requirements:
|
|
35
|
-
- -
|
|
32
|
+
- - ">="
|
|
36
33
|
- !ruby/object:Gem::Version
|
|
37
34
|
version: '0'
|
|
38
35
|
type: :development
|
|
39
36
|
prerelease: false
|
|
40
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
38
|
requirements:
|
|
43
|
-
- -
|
|
39
|
+
- - ">="
|
|
44
40
|
- !ruby/object:Gem::Version
|
|
45
41
|
version: '0'
|
|
46
42
|
- !ruby/object:Gem::Dependency
|
|
47
43
|
name: test-unit
|
|
48
44
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
45
|
requirements:
|
|
51
|
-
- -
|
|
46
|
+
- - ">="
|
|
52
47
|
- !ruby/object:Gem::Version
|
|
53
48
|
version: '0'
|
|
54
49
|
type: :development
|
|
55
50
|
prerelease: false
|
|
56
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
52
|
requirements:
|
|
59
|
-
- -
|
|
53
|
+
- - ">="
|
|
60
54
|
- !ruby/object:Gem::Version
|
|
61
55
|
version: '0'
|
|
62
56
|
- !ruby/object:Gem::Dependency
|
|
63
|
-
name: shoulda
|
|
57
|
+
name: shoulda-context
|
|
64
58
|
requirement: !ruby/object:Gem::Requirement
|
|
65
|
-
none: false
|
|
66
59
|
requirements:
|
|
67
|
-
- -
|
|
60
|
+
- - ">="
|
|
68
61
|
- !ruby/object:Gem::Version
|
|
69
62
|
version: '0'
|
|
70
63
|
type: :development
|
|
71
64
|
prerelease: false
|
|
72
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
-
none: false
|
|
74
66
|
requirements:
|
|
75
|
-
- -
|
|
67
|
+
- - ">="
|
|
76
68
|
- !ruby/object:Gem::Version
|
|
77
69
|
version: '0'
|
|
78
70
|
- !ruby/object:Gem::Dependency
|
|
79
71
|
name: rails
|
|
80
72
|
requirement: !ruby/object:Gem::Requirement
|
|
81
|
-
none: false
|
|
82
73
|
requirements:
|
|
83
|
-
- -
|
|
74
|
+
- - ">="
|
|
84
75
|
- !ruby/object:Gem::Version
|
|
85
|
-
version:
|
|
76
|
+
version: '0'
|
|
86
77
|
type: :runtime
|
|
87
78
|
prerelease: false
|
|
88
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
-
none: false
|
|
90
80
|
requirements:
|
|
91
|
-
- -
|
|
81
|
+
- - ">="
|
|
92
82
|
- !ruby/object:Gem::Version
|
|
93
|
-
version:
|
|
83
|
+
version: '0'
|
|
94
84
|
- !ruby/object:Gem::Dependency
|
|
95
85
|
name: nokogiri
|
|
96
86
|
requirement: !ruby/object:Gem::Requirement
|
|
97
|
-
none: false
|
|
98
87
|
requirements:
|
|
99
|
-
- -
|
|
88
|
+
- - ">="
|
|
100
89
|
- !ruby/object:Gem::Version
|
|
101
90
|
version: '0'
|
|
102
91
|
type: :runtime
|
|
103
92
|
prerelease: false
|
|
104
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
none: false
|
|
106
94
|
requirements:
|
|
107
|
-
- -
|
|
95
|
+
- - ">="
|
|
108
96
|
- !ruby/object:Gem::Version
|
|
109
97
|
version: '0'
|
|
110
98
|
description: SkiPlan API client gem
|
|
@@ -114,7 +102,7 @@ executables: []
|
|
|
114
102
|
extensions: []
|
|
115
103
|
extra_rdoc_files: []
|
|
116
104
|
files:
|
|
117
|
-
- .gitignore
|
|
105
|
+
- ".gitignore"
|
|
118
106
|
- Gemfile
|
|
119
107
|
- LICENSE.txt
|
|
120
108
|
- README.md
|
|
@@ -131,36 +119,33 @@ files:
|
|
|
131
119
|
- test/skiplan_client/forecast_test.rb
|
|
132
120
|
- test/skiplan_client/metrics_test.rb
|
|
133
121
|
- test/skiplan_client/skiplan_client_test.rb
|
|
134
|
-
- test/skiplan_client/weather_object_test.rb
|
|
135
122
|
- test/skiplan_client/zone_test.rb
|
|
136
123
|
homepage: https://github.com/jeanbaptistevilain/skiplan_client
|
|
137
124
|
licenses:
|
|
138
125
|
- MIT
|
|
126
|
+
metadata: {}
|
|
139
127
|
post_install_message:
|
|
140
128
|
rdoc_options: []
|
|
141
129
|
require_paths:
|
|
142
130
|
- lib
|
|
143
131
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
144
|
-
none: false
|
|
145
132
|
requirements:
|
|
146
|
-
- -
|
|
133
|
+
- - ">="
|
|
147
134
|
- !ruby/object:Gem::Version
|
|
148
135
|
version: '0'
|
|
149
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
|
-
none: false
|
|
151
137
|
requirements:
|
|
152
|
-
- -
|
|
138
|
+
- - ">="
|
|
153
139
|
- !ruby/object:Gem::Version
|
|
154
140
|
version: '0'
|
|
155
141
|
requirements: []
|
|
156
142
|
rubyforge_project:
|
|
157
|
-
rubygems_version:
|
|
143
|
+
rubygems_version: 2.2.5
|
|
158
144
|
signing_key:
|
|
159
|
-
specification_version:
|
|
145
|
+
specification_version: 4
|
|
160
146
|
summary: A simple Ruby wrapper for the SkiPlan XML api
|
|
161
147
|
test_files:
|
|
162
148
|
- test/skiplan_client/forecast_test.rb
|
|
163
149
|
- test/skiplan_client/metrics_test.rb
|
|
164
150
|
- test/skiplan_client/skiplan_client_test.rb
|
|
165
|
-
- test/skiplan_client/weather_object_test.rb
|
|
166
151
|
- test/skiplan_client/zone_test.rb
|