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: db8a47856a4648234134d7120a89deaba77ff229deb0dd46a8e5247004de636a
4
- data.tar.gz: 5495b66e1753a55a41e45ebe13cb11cb06f292cc2fd0f68089897a15b7527445
3
+ metadata.gz: a84c81afc36a5a5df92cd4089d42b0ff2d1dfec4863d9fd317ba3287cdb317fb
4
+ data.tar.gz: f310bf7f6351e64d2ec3625dcbaad378e3ae48a1f455f1690aa886620550cfcf
5
5
  SHA512:
6
- metadata.gz: 4341f6a7c5b737c71b491356b60fb150ee0c9d47c9d9b28bcdf2d62d724b51805ed6eb5985373b168f806495b1c81f88c867bd49a6bcf5fbc6af5c6a336d129c
7
- data.tar.gz: 9e947d42361b5a83fb691136a0cf90a1ff211cc2011a70356858a6583f41cea3391226c68fb8e5fc1c4b98962cce2aebee829da1f490496314d4e67e695bfcc2
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| Array(target_doc[k]) }.inject(&:+)
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
@@ -1,3 +1,3 @@
1
1
  class Gillbus
2
- VERSION = '0.22.2'.freeze
2
+ VERSION = '0.22.3'.freeze
3
3
  end
@@ -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>Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом &gt;&gt; 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>Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом &gt;&gt; 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
- <CRITICAL_INF ID="1">ВНИМАНИЕ: Особые условия паспортного режима пересечения пропускного пункта (только с паспортами РБ и РФ).</CRITICAL_INF>
120
+ <ITEM>Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом &gt;&gt; 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>
@@ -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.2
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-14 00:00:00.000000000 Z
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.6
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