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: 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