gillbus 0.22.2 → 0.22.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.
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
|