gillbus 0.22.0 → 0.22.5

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: 9829a4cd9d8c4cbaa850fde5f1480348f8e49a1008c943fa59b4e780b2a9eed6
4
- data.tar.gz: f394c0f54b77c887c9ec079f8002c596dcdde952d43ece10aaed07637b4919f5
3
+ metadata.gz: d869ac0e4f306ffb08e0105d44342d46292173a7f0bf92ac8e04e53aaec81ee1
4
+ data.tar.gz: 01b901835bb4109000f7c65dc2aa8a13f0bd020e7b84a962b0c57f664cf3497b
5
5
  SHA512:
6
- metadata.gz: 59cb51519b2c5b16dc116da7feeca38087fe6a6528b7b1f3320db8fca43b69276e569e2cf46329d9ed600cb453c4a3e1e8397748ffb5a4b647f641508dff7413
7
- data.tar.gz: '05089d4de32bf5a5043be5c3ecfa1949572c1499f3b3d399dc875f7c4ffc9d908391180c07152dd926c7c697f37cb643832007e903b07843a03a99b3531d80e6'
6
+ metadata.gz: b450666814bc1be0d35f54e2801499167c552a5b72481e8a1b91b2509f2ca8b63195c9b4332f0ef7a2585db9d7579b77b2ca5ddf7e29241b64d2cf5efdcd3c8b
7
+ data.tar.gz: 88b5c89a7704f44796f0bd737a0004e55acfae7c75d543f35aee829ebbd6754ba7767a22b4c6cd683381b5ed0c0048f30777c6258df93a0cd64959f7e0a639e2
@@ -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
@@ -23,10 +23,10 @@ class Gillbus
23
23
 
24
24
  def params
25
25
  compact(
26
- startCityId: start_city_id,
27
- endCityId: end_city_id,
28
- startDateSearch: date(start_date_search),
29
- ticketCount: ticket_count,
26
+ startCityId: start_city_id,
27
+ endCityId: end_city_id,
28
+ startDateSearch: date(start_date_search),
29
+ ticketCount: ticket_count,
30
30
  )
31
31
  end
32
32
  end
@@ -44,6 +44,11 @@ class Gillbus
44
44
  # Если false, то будут искаться рейсы только в одну сторону.
45
45
  attr_accessor :round_trip
46
46
 
47
+ # limitSegmentTripShow (опциональный параметр)
48
+ # Ограничение максимального количества сегментных рейсов.
49
+ # Если ничего не передано или передано число -1, то выдача не ограничена.
50
+ attr_accessor :limit_segment_trip_show
51
+
47
52
  # backStartDateSearch (обязательный если roundTrip=true)
48
53
  # Дата отправления, на которую будет произведен поиск обратных рейсов.
49
54
  attr_accessor :back_start_date_search
@@ -93,20 +98,21 @@ class Gillbus
93
98
 
94
99
  def params
95
100
  compact(
96
- selectedModes: modes(selected_modes),
97
- connectionIds: list(connection_ids),
98
- tripFullSale: bool(trip_full_sale),
99
- fullSearch: bool(full_search),
100
- startCityId: start_city_id,
101
- endCityId: end_city_id,
102
- startDateSearch: date(start_date_search),
103
- roundTrip: bool(round_trip),
101
+ selectedModes: modes(selected_modes),
102
+ connectionIds: list(connection_ids),
103
+ tripFullSale: bool(trip_full_sale),
104
+ fullSearch: bool(full_search),
105
+ startCityId: start_city_id,
106
+ endCityId: end_city_id,
107
+ startDateSearch: date(start_date_search),
108
+ roundTrip: bool(round_trip),
109
+ limitSegmentTripShow: limit_segment_trip_show,
104
110
  backStartDateSearch: date(back_start_date_search),
105
- ticketCount: ticket_count,
106
- waitTimeout: wait_timeout,
107
- onlyBranded: bool(only_branded),
108
- tripOptions: bool(trip_options),
109
- insuranceId: insurance_id,
111
+ ticketCount: ticket_count,
112
+ waitTimeout: wait_timeout,
113
+ onlyBranded: bool(only_branded),
114
+ tripOptions: bool(trip_options),
115
+ insuranceId: insurance_id,
110
116
  **passengers_data,
111
117
  )
112
118
  end
@@ -67,6 +67,21 @@ class Gillbus
67
67
  # => "RU \"ПЕТРОКОМ - АВТО ПЛЮС\" ООО"
68
68
  field :carrier_name
69
69
 
70
+ # => "RU \"Еременчук Е.А.\" ИП"
71
+ field :carrier_legal_name
72
+
73
+ # => "260802027265"
74
+ field :carrier_inn
75
+
76
+ # => "г СНТ Лилия, Московская, Наро-фоминский"
77
+ field :carrier_address_fact
78
+
79
+ # => "г СНТ Лилия, Московская, Наро-фоминский"
80
+ field :carrier_address_leg
81
+
82
+ # => "316265100057314"
83
+ field :carrier_egrul_egis
84
+
70
85
  # => "09:10"
71
86
  field :time_in_road, :time
72
87
 
@@ -71,6 +71,21 @@ class Gillbus
71
71
  # => "RU \"ПЕТРОКОМ - АВТО ПЛЮС\" ООО"
72
72
  field :carrier_name
73
73
 
74
+ # => "RU \"Еременчук Е.А.\" ИП"
75
+ field :carrier_legal_name
76
+
77
+ # => "260802027265"
78
+ field :carrier_inn
79
+
80
+ # => "г СНТ Лилия, Московская, Наро-фоминский"
81
+ field :carrier_address_fact
82
+
83
+ # => "г СНТ Лилия, Московская, Наро-фоминский"
84
+ field :carrier_address_leg
85
+
86
+ # => "316265100057314"
87
+ field :carrier_egrul_egis
88
+
74
89
  # => "09:10"
75
90
  field :time_in_road, :time
76
91
 
@@ -85,7 +85,7 @@ class Gillbus
85
85
  note: note,
86
86
  ticketLocale: translated_locale(ticket_locale),
87
87
  sendTo: send_to,
88
- userUUID: user_uuid,
88
+ extCustomerUUID: user_uuid,
89
89
  externalID: external_id,
90
90
  returnLink: return_link,
91
91
  **pax,
@@ -137,6 +137,7 @@ class Gillbus
137
137
  # :seaman_passport 6 - паспорт моряка
138
138
  # :birth_certificate 7 - свидетельство о рождении
139
139
  # :ussr_passport 8 - паспорт формы СССР
140
+ # :tax_id 9 - CPF для WL Бразилии
140
141
  attr_accessor :document_type
141
142
 
142
143
  # passenger0passport... passengerNpassport (обязательный для авиаперевозки)
@@ -212,6 +213,7 @@ class Gillbus
212
213
  seaman_passport: 6,
213
214
  birth_certificate: 7,
214
215
  ussr_passport: 8,
216
+ tax_id: 9,
215
217
  }[value.try(:to_sym)]
216
218
  end
217
219
  end
@@ -1,3 +1,3 @@
1
1
  class Gillbus
2
- VERSION = '0.22.0'.freeze
2
+ VERSION = '0.22.5'.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
@@ -0,0 +1,231 @@
1
+ <DATA>
2
+ <COMPLETED>true</COMPLETED>
3
+ <TRIP>
4
+ <ID>-340796927707233606</ID>
5
+ <STATIC_TRIP_ID>5cdc47e62392904e080f164fa2698b43</STATIC_TRIP_ID>
6
+ <TRIP_ROUTE_ID>A016E31EC8C61A35E053E41C0CB99E98</TRIP_ROUTE_ID>
7
+ <RES_ID>0</RES_ID>
8
+ <NUMBER>MD_TEST - Москва - Краснодар Москва - Краснодар</NUMBER>
9
+ <START_CITY_NAME>Москва</START_CITY_NAME>
10
+ <END_CITY_NAME>Ростов-на-Дону</END_CITY_NAME>
11
+ <START_TIMEZONE>Europe/Moscow</START_TIMEZONE>
12
+ <END_TIMEZONE>Europe/Moscow</END_TIMEZONE>
13
+ <START_DATE>24.07.2020</START_DATE>
14
+ <END_DATE>25.07.2020</END_DATE>
15
+ <START_TIME>11:40</START_TIME>
16
+ <END_TIME>03:30</END_TIME>
17
+ <BUS_MODEL>Mercedes BENZ 0404 CARRUS</BUS_MODEL>
18
+ <BUS_CLASS/>
19
+ <BUS_ID/>
20
+ <BUS_FLOORS_NUMBER>1</BUS_FLOORS_NUMBER>
21
+ <PLATFORM/>
22
+ <TRIP_SEATS_MAP>true</TRIP_SEATS_MAP>
23
+ <SHOW_PICKUP_DROPOFF>false</SHOW_PICKUP_DROPOFF>
24
+ <BRANDED>false</BRANDED>
25
+ <HAS_TRANSFER>false</HAS_TRANSFER>
26
+ <PLACES_COUNT>60</PLACES_COUNT>
27
+ <FREE_PLACES_COUNT>53</FREE_PLACES_COUNT>
28
+ <FAKE_FREE_SEAT_COUNT>false</FAKE_FREE_SEAT_COUNT>
29
+ <FREE_BUSY_PLACES>53/60</FREE_BUSY_PLACES>
30
+ <CARRIER_ID>6C552CE3DBDC34E2E0530300F00AEA7B</CARRIER_ID>
31
+ <CARRIER_NAME>"Еременчук Е.А." ИП</CARRIER_NAME>
32
+ <CARRIER_LEGAL_NAME>RU "Еременчук Е.А." ИП</CARRIER_LEGAL_NAME>
33
+ <CARRIER_INN>260802027265</CARRIER_INN>
34
+ <CARRIER_ADDRESS_FACT>г СНТ Лилия, Московская, Наро-фоминский</CARRIER_ADDRESS_FACT>
35
+ <CARRIER_ADDRESS_LEG>г СНТ Лилия, Московская, Наро-фоминский</CARRIER_ADDRESS_LEG>
36
+ <CARRIER_EGRUL_EGIS>316265100057314</CARRIER_EGRUL_EGIS>
37
+ <TIME_IN_ROAD>15:50</TIME_IN_ROAD>
38
+ <FAKE_TIME_IN_ROAD>false</FAKE_TIME_IN_ROAD>
39
+ <RES_POINT_BEGIN_ID>9DD3E329EC8A3EE2E0530300F00A4CBA</RES_POINT_BEGIN_ID>
40
+ <POINT_BEGIN_ID>1409820</POINT_BEGIN_ID>
41
+ <STATION_BEGIN_ID>9DD3E329EC8A3EE2E0530300F00A4CBA</STATION_BEGIN_ID>
42
+ <STATION_BEGIN_NAME>Автовокзал Битца (ТРЦ "Шелковый Путь")</STATION_BEGIN_NAME>
43
+ <STATION_BEGIN_ADDRESS>Варшавское шоссе, 21 км, уч. 26</STATION_BEGIN_ADDRESS>
44
+ <RES_POINT_END_ID>4557C0CAC2CC3C79E0530300F00A06C8</RES_POINT_END_ID>
45
+ <POINT_END_ID>87348</POINT_END_ID>
46
+ <STATION_END_ID>4557C0CAC2CC3C79E0530300F00A06C8</STATION_END_ID>
47
+ <STATION_END_NAME>Автовокзал "Главный"</STATION_END_NAME>
48
+ <STATION_END_ADDRESS>проспект Сиверса; дом 1</STATION_END_ADDRESS>
49
+ <RESERVATION_ENABLED>true</RESERVATION_ENABLED>
50
+ <SALE_ENABLED>true</SALE_ENABLED>
51
+ <RETURN_ENABLED>true</RETURN_ENABLED>
52
+ <TIME_FOR_CANCEL>25</TIME_FOR_CANCEL>
53
+ <TRIP_FULL_SALE>false</TRIP_FULL_SALE>
54
+ <CAN_DISCOUNT>true</CAN_DISCOUNT>
55
+ <INTERNATIONAL>false</INTERNATIONAL>
56
+ <JOIN_BOOK_BUY>true</JOIN_BOOK_BUY>
57
+ <TRIP_MODE>1</TRIP_MODE>
58
+ <CUSTOM_STATUS>1</CUSTOM_STATUS>
59
+ <SPECIAL_CONDITIONS/>
60
+ <REDIRECT_URL/>
61
+ <TOTAL_COST>800</TOTAL_COST>
62
+ <CURRENCY>RUB</CURRENCY>
63
+ <CURRENCY_CODE>643</CURRENCY_CODE>
64
+ <TECH_AGREEMENT>false</TECH_AGREEMENT>
65
+ <CARRIER_CODE/>
66
+ <TARIFF>
67
+ <SHORT_NAME>Y</SHORT_NAME>
68
+ <IS_BASE>true</IS_BASE>
69
+ <FULL_NAME>Базовый тариф</FULL_NAME>
70
+ <START_DATE/>
71
+ <END_DATE/>
72
+ <DESCRIPTION>Базовый тариф стоимости проезда одного пассажира в одном направлении
73
+ </DESCRIPTION>
74
+ <TIME_TO_BUY_RESERVED>2</TIME_TO_BUY_RESERVED>
75
+ <TIME_TO_STOP_BOOKING>2</TIME_TO_STOP_BOOKING>
76
+ <TIME_TO_PAY_RESERVATION>22.07.2020 12:51:03</TIME_TO_PAY_RESERVATION>
77
+ <COST>800</COST>
78
+ <INSURANCE_COST>0</INSURANCE_COST>
79
+ <INSURANCE_ID/>
80
+ <INSURANCE_SUM>0</INSURANCE_SUM>
81
+ <INSURANCE_CUR/>
82
+ <AFTER_DISPATCH_NO_RETURN>true</AFTER_DISPATCH_NO_RETURN>
83
+ <PASSENGER_BIRTHDAY/>
84
+ <PASSENGER_ISIC_NUMBER/>
85
+ <PASSENGER_STUDENT_TICKET/>
86
+ <NOTE/>
87
+ <WITHOUT_SEAT>N</WITHOUT_SEAT>
88
+ <RETURN_CAUSE>Возврат маршрутной квитанции более чем за 2 часа до отправления Удерживается при возврате: 5% тарифа. Ориентировочная сумма возврата 760 RUB</RETURN_CAUSE>
89
+ <RETURN_CAUSE>Возврат маршрутной квитанции в течение 2 часов до отправления Удерживается при возврате: 15% тарифа. Ориентировочная сумма возврата 680 RUB</RETURN_CAUSE>
90
+ <RETURN_CAUSE>Возврат маршрутной квитанции в случае опоздания к отправлению транспортного средства в течение 3 суток после отправления, при наличии справки из медицинского учреждения (по причине болезни) или акта о несчастном случае Удерживается при возврате: 25% тарифа. Ориентировочная сумма возврата 600 RUB</RETURN_CAUSE>
91
+ <RETURN_CAUSE>Возврат маршрутной квитанции в случае опоздания к отправлению транспортного средства в течение 3 часов Удерживается при возврате: 25% тарифа. Ориентировочная сумма возврата 600 RUB</RETURN_CAUSE>
92
+ <RETURN_CAUSE>Принудительно, при отмене рейса, при непредоставлении места, при т/с более низкого класса, задержка отправления т/с более чем на час. Возвращается 100% стоимости билета. Ориентировочная сумма возврата 800 RUB</RETURN_CAUSE>
93
+ <PROMOTE>false</PROMOTE>
94
+ <IS_EXCLUSIVE_PRICE>false</IS_EXCLUSIVE_PRICE>
95
+ <FREE_BOOKING>false</FREE_BOOKING>
96
+ </TARIFF>
97
+ <POINT>
98
+ <NUMBER>0</NUMBER>
99
+ <ID>1409820</ID>
100
+ <LOCATION_ID>244430</LOCATION_ID>
101
+ <GEOGRAPHY_NAME>Москва</GEOGRAPHY_NAME>
102
+ <NAME>Автовокзал Битца (ТРЦ "Шелковый Путь")</NAME>
103
+ <ADDRESS>Варшавское шоссе, 21 км, уч. 26</ADDRESS>
104
+ <TIMEZONE>Europe/Moscow</TIMEZONE>
105
+ <ARRIVAL_DATE>24.07.2020</ARRIVAL_DATE>
106
+ <ARRIVAL_TIME/>
107
+ <DISPATCH_DATE>24.07.2020</DISPATCH_DATE>
108
+ <DISPATCH_TIME>11:40</DISPATCH_TIME>
109
+ <CHECK_POINT>false</CHECK_POINT>
110
+ <DISTANCE>0</DISTANCE>
111
+ <TRANSFER_POINT>false</TRANSFER_POINT>
112
+ <PLATFORM/>
113
+ <BUSMODEL/>
114
+ <AGREED>true</AGREED>
115
+ </POINT>
116
+ <POINT>
117
+ <NUMBER>1</NUMBER>
118
+ <ID>1647236</ID>
119
+ <LOCATION_ID>55903</LOCATION_ID>
120
+ <GEOGRAPHY_NAME>Тула</GEOGRAPHY_NAME>
121
+ <NAME>Остановка "Памятник Три штыка"</NAME>
122
+ <ADDRESS>улица Ленина; дом 94</ADDRESS>
123
+ <TIMEZONE>Europe/Moscow</TIMEZONE>
124
+ <ARRIVAL_DATE>24.07.2020</ARRIVAL_DATE>
125
+ <ARRIVAL_TIME>14:30</ARRIVAL_TIME>
126
+ <DISPATCH_DATE>24.07.2020</DISPATCH_DATE>
127
+ <DISPATCH_TIME>14:35</DISPATCH_TIME>
128
+ <CHECK_POINT>false</CHECK_POINT>
129
+ <DISTANCE>182</DISTANCE>
130
+ <TRANSFER_POINT>false</TRANSFER_POINT>
131
+ <PLATFORM/>
132
+ <BUSMODEL/>
133
+ <AGREED>true</AGREED>
134
+ </POINT>
135
+ <POINT>
136
+ <NUMBER>2</NUMBER>
137
+ <ID>87015</ID>
138
+ <LOCATION_ID>41236</LOCATION_ID>
139
+ <GEOGRAPHY_NAME>Воронеж</GEOGRAPHY_NAME>
140
+ <NAME>Железнодорожный вокзал "Воронеж-1"</NAME>
141
+ <ADDRESS>площадь Генерала Черняховского; дом 1</ADDRESS>
142
+ <TIMEZONE>Europe/Moscow</TIMEZONE>
143
+ <ARRIVAL_DATE>24.07.2020</ARRIVAL_DATE>
144
+ <ARRIVAL_TIME>19:30</ARRIVAL_TIME>
145
+ <DISPATCH_DATE>24.07.2020</DISPATCH_DATE>
146
+ <DISPATCH_TIME>19:35</DISPATCH_TIME>
147
+ <CHECK_POINT>false</CHECK_POINT>
148
+ <DISTANCE>523</DISTANCE>
149
+ <TRANSFER_POINT>false</TRANSFER_POINT>
150
+ <PLATFORM/>
151
+ <BUSMODEL/>
152
+ <AGREED>true</AGREED>
153
+ </POINT>
154
+ <POINT>
155
+ <NUMBER>3</NUMBER>
156
+ <ID>924816</ID>
157
+ <LOCATION_ID>91587</LOCATION_ID>
158
+ <GEOGRAPHY_NAME>Богучар</GEOGRAPHY_NAME>
159
+ <NAME>Автовокзал Богучар</NAME>
160
+ <ADDRESS>улица Дзержинского; дом 239</ADDRESS>
161
+ <TIMEZONE>Europe/Moscow</TIMEZONE>
162
+ <ARRIVAL_DATE>24.07.2020</ARRIVAL_DATE>
163
+ <ARRIVAL_TIME>23:00</ARRIVAL_TIME>
164
+ <DISPATCH_DATE>24.07.2020</DISPATCH_DATE>
165
+ <DISPATCH_TIME>23:05</DISPATCH_TIME>
166
+ <CHECK_POINT>false</CHECK_POINT>
167
+ <DISTANCE>746</DISTANCE>
168
+ <TRANSFER_POINT>false</TRANSFER_POINT>
169
+ <PLATFORM/>
170
+ <BUSMODEL/>
171
+ <AGREED>true</AGREED>
172
+ </POINT>
173
+ <POINT>
174
+ <NUMBER>4</NUMBER>
175
+ <ID>1647237</ID>
176
+ <LOCATION_ID>52524</LOCATION_ID>
177
+ <GEOGRAPHY_NAME>Каменск-Шахтинский</GEOGRAPHY_NAME>
178
+ <NAME>Остановка Каменск-Шахтинский (трасса)</NAME>
179
+ <ADDRESS>трасса М-4 Дон, 932 км</ADDRESS>
180
+ <TIMEZONE>Europe/Moscow</TIMEZONE>
181
+ <ARRIVAL_DATE>25.07.2020</ARRIVAL_DATE>
182
+ <ARRIVAL_TIME>01:30</ARRIVAL_TIME>
183
+ <DISPATCH_DATE>25.07.2020</DISPATCH_DATE>
184
+ <DISPATCH_TIME>01:35</DISPATCH_TIME>
185
+ <CHECK_POINT>false</CHECK_POINT>
186
+ <DISTANCE>946</DISTANCE>
187
+ <TRANSFER_POINT>false</TRANSFER_POINT>
188
+ <PLATFORM/>
189
+ <BUSMODEL/>
190
+ <AGREED>true</AGREED>
191
+ </POINT>
192
+ <POINT>
193
+ <NUMBER>5</NUMBER>
194
+ <ID>1647238</ID>
195
+ <LOCATION_ID>243086</LOCATION_ID>
196
+ <GEOGRAPHY_NAME>Шахты</GEOGRAPHY_NAME>
197
+ <NAME>Остановка Шахты (трасса)</NAME>
198
+ <ADDRESS>трасса М-4 Дон, 994 км</ADDRESS>
199
+ <TIMEZONE>Europe/Moscow</TIMEZONE>
200
+ <ARRIVAL_DATE>25.07.2020</ARRIVAL_DATE>
201
+ <ARRIVAL_TIME>02:30</ARRIVAL_TIME>
202
+ <DISPATCH_DATE>25.07.2020</DISPATCH_DATE>
203
+ <DISPATCH_TIME>02:35</DISPATCH_TIME>
204
+ <CHECK_POINT>false</CHECK_POINT>
205
+ <DISTANCE>1022</DISTANCE>
206
+ <TRANSFER_POINT>false</TRANSFER_POINT>
207
+ <PLATFORM/>
208
+ <BUSMODEL/>
209
+ <AGREED>true</AGREED>
210
+ </POINT>
211
+ <POINT>
212
+ <NUMBER>6</NUMBER>
213
+ <ID>87348</ID>
214
+ <LOCATION_ID>52516</LOCATION_ID>
215
+ <GEOGRAPHY_NAME>Ростов-на-Дону</GEOGRAPHY_NAME>
216
+ <NAME>Автовокзал "Главный"</NAME>
217
+ <ADDRESS>проспект Сиверса; дом 1</ADDRESS>
218
+ <TIMEZONE>Europe/Moscow</TIMEZONE>
219
+ <ARRIVAL_DATE>25.07.2020</ARRIVAL_DATE>
220
+ <ARRIVAL_TIME>03:30</ARRIVAL_TIME>
221
+ <DISPATCH_DATE>25.07.2020</DISPATCH_DATE>
222
+ <DISPATCH_TIME>03:40</DISPATCH_TIME>
223
+ <CHECK_POINT>false</CHECK_POINT>
224
+ <DISTANCE>1075</DISTANCE>
225
+ <TRANSFER_POINT>false</TRANSFER_POINT>
226
+ <PLATFORM>26 </PLATFORM>
227
+ <BUSMODEL/>
228
+ <AGREED>true</AGREED>
229
+ </POINT>
230
+ </TRIP>
231
+ </DATA>
@@ -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>
@@ -6,6 +6,7 @@ class SearchTripsRequestTest < Minitest::Test
6
6
  start_date_search: Date.new(2013, 2, 4),
7
7
  selected_modes: [:avia, :connections],
8
8
  round_trip: true,
9
+ limit_segment_trip_show: 3,
9
10
  passengers: [
10
11
  {
11
12
  birthday: Date.parse('1990-01-01'),
@@ -28,6 +29,7 @@ class SearchTripsRequestTest < Minitest::Test
28
29
  startDateSearch: '04.02.2013',
29
30
  selectedModes: '3;8',
30
31
  roundTrip: '1',
32
+ limitSegmentTripShow: 3,
31
33
  passenger0birthday: '01.01.1990',
32
34
  passenger0studentTicket: 'STUDENTTICKET#1',
33
35
  passenger0studentYear: 1,
@@ -73,6 +75,10 @@ class SearchTripsResponseTest < Minitest::Test
73
75
  Gillbus::SearchTrips::Response.parse_string(File.read('test/responses/searchTrips-round-trip-offers.xml'))
74
76
  end
75
77
 
78
+ def get_trips_with_full_carriers_info
79
+ Gillbus::SearchTrips::Response.parse_string(File.read('test/responses/searchTrips-full-carriers-info.xml'))
80
+ end
81
+
76
82
  def test_empty_completed
77
83
  response = get_empty_search_trips
78
84
  assert response.completed
@@ -199,7 +205,8 @@ class SearchTripsResponseTest < Minitest::Test
199
205
  'Технические остановки осуществляются каждые 2-3 часа.',
200
206
  ]
201
207
  critical_info = [
202
- 'ВНИМАНИЕ: Особые условия паспортного режима пересечения пропускного пункта (только с паспортами РБ и РФ).',
208
+ "Внимание! Ознакомьтесь со списком стран, въезд в которые ограничен в связи с коронавирусом >> https://busfor.com/ru/blog/covid-19-updates",
209
+ "в связи с дорожными условиями, возможно отклонение в расписании движения в пределах 1час30.",
203
210
  ]
204
211
  resource_options = [
205
212
  'Посадка начинается за 10 мин.',
@@ -309,4 +316,15 @@ class SearchTripsResponseTest < Minitest::Test
309
316
  assert_equal 3, response.trips.count
310
317
  assert_equal response.back_trips.first.id, response.trips.first.id
311
318
  end
319
+
320
+ def test_trips_with_full_carriers_info
321
+ response = get_trips_with_full_carriers_info
322
+ trip = response.trips.first
323
+
324
+ assert_equal "RU \"Еременчук Е.А.\" ИП", trip.carrier_legal_name
325
+ assert_equal "260802027265", trip.carrier_inn
326
+ assert_equal "г СНТ Лилия, Московская, Наро-фоминский", trip.carrier_address_fact
327
+ assert_equal "г СНТ Лилия, Московская, Наро-фоминский", trip.carrier_address_leg
328
+ assert_equal "316265100057314", trip.carrier_egrul_egis
329
+ end
312
330
  end
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.0
4
+ version: 0.22.5
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-03-18 00:00:00.000000000 Z
12
+ date: 2020-10-26 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
@@ -275,6 +276,7 @@ files:
275
276
  - test/responses/returnPositionFailure.xml
276
277
  - test/responses/returnPositionSuccess.xml
277
278
  - test/responses/searchTrips-empty.xml
279
+ - test/responses/searchTrips-full-carriers-info.xml
278
280
  - test/responses/searchTrips-insurance.xml
279
281
  - test/responses/searchTrips-new-options-format.xml
280
282
  - test/responses/searchTrips-prod-invalid.xml
@@ -312,7 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
314
  - !ruby/object:Gem::Version
313
315
  version: '0'
314
316
  requirements: []
315
- rubygems_version: 3.0.3
317
+ rubygems_version: 3.1.2
316
318
  signing_key:
317
319
  specification_version: 4
318
320
  summary: Driver for Gillbus IDS API
@@ -333,6 +335,7 @@ test_files:
333
335
  - test/get_trip_seats_test.rb
334
336
  - test/get_trip_segments_test.rb
335
337
  - test/lock_seats_test.rb
338
+ - test/parse_trip_options_test.rb
336
339
  - test/parse_trip_test.rb
337
340
  - test/reserve_tickets_test.rb
338
341
  - test/responses/bookingDifferentCurrencies.xml
@@ -363,6 +366,7 @@ test_files:
363
366
  - test/responses/returnPositionFailure.xml
364
367
  - test/responses/returnPositionSuccess.xml
365
368
  - test/responses/searchTrips-empty.xml
369
+ - test/responses/searchTrips-full-carriers-info.xml
366
370
  - test/responses/searchTrips-insurance.xml
367
371
  - test/responses/searchTrips-new-options-format.xml
368
372
  - test/responses/searchTrips-prod-invalid.xml