gillbus 0.22.2 → 0.22.3
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a84c81afc36a5a5df92cd4089d42b0ff2d1dfec4863d9fd317ba3287cdb317fb
|
4
|
+
data.tar.gz: f310bf7f6351e64d2ec3625dcbaad378e3ae48a1f455f1690aa886620550cfcf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bdfb8d3102cce03f3df2b0eab59af8dc22839918a7ddb5eb2f54c1f021a33f011e432de30731ea08e00bb249b0d4a6de0f240ccf5b7cc7f931a06dbd3079a6f
|
7
|
+
data.tar.gz: 47670119a9c538d081f09710f7f4b1104a10a1fa81989a8a482b26d69cca620a7bca5f4f0f0ca131d5ce954c32e1b089c5cc8ad60da3913f6a34f0178de0583d
|
@@ -46,12 +46,31 @@ class Gillbus
|
|
46
46
|
if key.is_a?(Regexp)
|
47
47
|
target_doc.select { |k| k =~ key }
|
48
48
|
elsif key.is_a?(Array)
|
49
|
-
key.map { |k|
|
49
|
+
key.map { |k| ensure_array(target_doc[k]) }.inject(&:+)
|
50
50
|
else
|
51
51
|
target_doc[key]
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
# Нужно удостовериться, что элемент завёрнут в массив,
|
56
|
+
# чтобы дальше эти массивы сложить в методе fetch_value.
|
57
|
+
# Есть нюанс, что при сложении ['Item'] + [{'ID'=>'1'}, 'Subitem'] получается
|
58
|
+
# ['Item', {'ID'=>'1'}, 'Subitem'], а нам надо ['Item', [{'ID'=>'1'}, 'Subitem']]
|
59
|
+
# Поэтому item_with_id заворачиваем во внешний массив
|
60
|
+
def ensure_array(val)
|
61
|
+
if is_item_with_id?(val)
|
62
|
+
[val]
|
63
|
+
else
|
64
|
+
Array(val)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Детектит элементы вида <CRITICAL_INF ID="1">Text</CRITICAL_INF>,
|
69
|
+
# которые парсятся как [{'ID'=>'1'}, 'Text']
|
70
|
+
def is_item_with_id?(val)
|
71
|
+
val.is_a?(Array) && val.size == 2 && val.first.is_a?(Hash) && val.first.keys == ['ID']
|
72
|
+
end
|
73
|
+
|
55
74
|
def make_one_or_many(type, val)
|
56
75
|
# [:type]
|
57
76
|
if type.is_a? Array
|
data/lib/gillbus/version.rb
CHANGED
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
class ParseTripOptionsTest < Minitest::Test
|
5
|
+
def test_with_only_item
|
6
|
+
xml = <<~XML.strip
|
7
|
+
<DATA><TRIP><OPTIONS><CRITICAL_INFO>
|
8
|
+
<ITEM>Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом >> https://busfor.com/ru/blog/covid-19-updates</ITEM>
|
9
|
+
</CRITICAL_INFO></OPTIONS></TRIP></DATA>
|
10
|
+
XML
|
11
|
+
|
12
|
+
subject = Gillbus::SearchTrips::Response.parse_string(xml).trips.first.options.critical_info
|
13
|
+
|
14
|
+
expected_result = [
|
15
|
+
"Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом >> https://busfor.com/ru/blog/covid-19-updates",
|
16
|
+
]
|
17
|
+
|
18
|
+
assert_equal expected_result, subject
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_with_item_and_one_critical_inf
|
22
|
+
xml = <<~XML.strip
|
23
|
+
<DATA><TRIP><OPTIONS><CRITICAL_INFO>
|
24
|
+
<ITEM>Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом >> https://busfor.com/ru/blog/covid-19-updates</ITEM>
|
25
|
+
<CRITICAL_INF ID="16">в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.</CRITICAL_INF>
|
26
|
+
</CRITICAL_INFO></OPTIONS></TRIP></DATA>
|
27
|
+
XML
|
28
|
+
|
29
|
+
subject = Gillbus::SearchTrips::Response.parse_string(xml).trips.first.options.critical_info
|
30
|
+
|
31
|
+
expected_result = [
|
32
|
+
"Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом >> https://busfor.com/ru/blog/covid-19-updates",
|
33
|
+
"в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.",
|
34
|
+
]
|
35
|
+
|
36
|
+
assert_equal expected_result, subject
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_with_one_critical_inf
|
40
|
+
xml = <<~XML.strip
|
41
|
+
<DATA><TRIP><OPTIONS><CRITICAL_INFO>
|
42
|
+
<CRITICAL_INF ID="16">в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.</CRITICAL_INF>
|
43
|
+
</CRITICAL_INFO></OPTIONS></TRIP></DATA>
|
44
|
+
XML
|
45
|
+
|
46
|
+
subject = Gillbus::SearchTrips::Response.parse_string(xml).trips.first.options.critical_info
|
47
|
+
|
48
|
+
expected_result = [
|
49
|
+
"в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.",
|
50
|
+
]
|
51
|
+
|
52
|
+
assert_equal expected_result, subject
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_with_two_critical_inf
|
56
|
+
xml = <<~XML.strip
|
57
|
+
<DATA><TRIP><OPTIONS><CRITICAL_INFO>
|
58
|
+
<CRITICAL_INF ID="1">Всё будет хорошо</CRITICAL_INF>
|
59
|
+
<CRITICAL_INF ID="16">в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.</CRITICAL_INF>
|
60
|
+
</CRITICAL_INFO></OPTIONS></TRIP></DATA>
|
61
|
+
XML
|
62
|
+
|
63
|
+
subject = Gillbus::SearchTrips::Response.parse_string(xml).trips.first.options.critical_info
|
64
|
+
|
65
|
+
expected_result = [
|
66
|
+
"Всё будет хорошо",
|
67
|
+
"в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.",
|
68
|
+
]
|
69
|
+
|
70
|
+
assert_equal expected_result, subject
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_with_item_and_two_critical_inf
|
74
|
+
xml = <<~XML.strip
|
75
|
+
<DATA><TRIP><OPTIONS><CRITICAL_INFO>
|
76
|
+
<ITEM>Будьте внимательны, дорогие мои!</ITEM>
|
77
|
+
<CRITICAL_INF ID="1">Всё будет хорошо</CRITICAL_INF>
|
78
|
+
<CRITICAL_INF ID="16">в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.</CRITICAL_INF>
|
79
|
+
</CRITICAL_INFO></OPTIONS></TRIP></DATA>
|
80
|
+
XML
|
81
|
+
|
82
|
+
subject = Gillbus::SearchTrips::Response.parse_string(xml).trips.first.options.critical_info
|
83
|
+
|
84
|
+
expected_result = [
|
85
|
+
"Будьте внимательны, дорогие мои!",
|
86
|
+
"Всё будет хорошо",
|
87
|
+
"в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.",
|
88
|
+
]
|
89
|
+
|
90
|
+
assert_equal expected_result, subject
|
91
|
+
end
|
92
|
+
end
|
@@ -117,7 +117,8 @@
|
|
117
117
|
<TECHNICAL_STO ID="1">Технические остановки осуществляются каждые 2-3 часа.</TECHNICAL_STO>
|
118
118
|
</TECHNICAL_STOP>
|
119
119
|
<CRITICAL_INFO>
|
120
|
-
<
|
120
|
+
<ITEM>Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом >> https://busfor.com/ru/blog/covid-19-updates</ITEM>
|
121
|
+
<CRITICAL_INF ID="16">в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.</CRITICAL_INF>
|
121
122
|
</CRITICAL_INFO>
|
122
123
|
<SEATING>
|
123
124
|
<SEATIN ID="1">Свободная рассадка.</SEATIN>
|
data/test/search_trips_test.rb
CHANGED
@@ -201,7 +201,8 @@ class SearchTripsResponseTest < Minitest::Test
|
|
201
201
|
'Технические остановки осуществляются каждые 2-3 часа.',
|
202
202
|
]
|
203
203
|
critical_info = [
|
204
|
-
|
204
|
+
"Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом >> https://busfor.com/ru/blog/covid-19-updates",
|
205
|
+
"в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.",
|
205
206
|
]
|
206
207
|
resource_options = [
|
207
208
|
'Посадка начинается за 10 мин.',
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gillbus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.22.
|
4
|
+
version: 0.22.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey "codesnik" Trofimenko
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-04-
|
12
|
+
date: 2020-04-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -245,6 +245,7 @@ files:
|
|
245
245
|
- test/get_trip_seats_test.rb
|
246
246
|
- test/get_trip_segments_test.rb
|
247
247
|
- test/lock_seats_test.rb
|
248
|
+
- test/parse_trip_options_test.rb
|
248
249
|
- test/parse_trip_test.rb
|
249
250
|
- test/reserve_tickets_test.rb
|
250
251
|
- test/responses/bookingDifferentCurrencies.xml
|
@@ -312,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
312
313
|
- !ruby/object:Gem::Version
|
313
314
|
version: '0'
|
314
315
|
requirements: []
|
315
|
-
rubygems_version: 3.0.
|
316
|
+
rubygems_version: 3.0.3
|
316
317
|
signing_key:
|
317
318
|
specification_version: 4
|
318
319
|
summary: Driver for Gillbus IDS API
|
@@ -333,6 +334,7 @@ test_files:
|
|
333
334
|
- test/get_trip_seats_test.rb
|
334
335
|
- test/get_trip_segments_test.rb
|
335
336
|
- test/lock_seats_test.rb
|
337
|
+
- test/parse_trip_options_test.rb
|
336
338
|
- test/parse_trip_test.rb
|
337
339
|
- test/reserve_tickets_test.rb
|
338
340
|
- test/responses/bookingDifferentCurrencies.xml
|