def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .predictive_arrivals(port_id=51) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/predictive-arrivals/_api_key_/' )[1].split('/')) ] test_query = [('portid', '51'), ('protocol', 'jsono')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].imo.value, 8817564) self.assertEqual(request.models[0].ship_id.value, 213546) self.assertEqual(request.models[0].mmsi.value, 240708000) self.assertEqual(request.models[0].ship_class.value, 'HANDYSIZE') self.assertEqual(request.models[0].ship_name.value, 'AEGEAN III') self.assertEqual(request.models[0].market.value, 'WET BULK') self.assertEqual(request.models[0].from_port_id.value, 5) self.assertEqual(request.models[0].from_port.value, 'ELEFSIS') self.assertEqual(request.models[0].next_port_id.value, 51) self.assertEqual(request.models[0].next_port.value, 'PATRA') self.assertEqual(request.models[0].next_area.value, "EMED") self.assertEqual(request.models[0].next_port_prob.value, 0.786) self.assertEqual(request.models[0].next_area_prob.value, 1.000)
def test_meta_json(self): request = Client( self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .port_distances_and_routes(**self._request_params) self.assertEqual(request.meta, self._meta_data)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .vessel_historical_track(period='daily', days=3, mmsi=241486000) query = [tuple(q.split(':')) for q in sorted(request.api_reguest.url.split( 'https://services.marinetraffic.com/api/exportvesseltrack/_api_key_/' )[1].split('/'))] test_query = [ ('days', '3'), ('mmsi', '241486000'), ('msgtype', 'simple'), ('period', 'daily'), ('protocol', 'jsono'), ('v', '2') ] self.assertEqual(query, test_query) self.assertEqual(request.models[0].mmsi.value, 241486000) self.assertEqual(request.models[0].status.value, 0) self.assertEqual(request.models[0].speed.value, 146) self.assertEqual(request.models[0].latitude.value, 34.485870) self.assertEqual(request.models[0].longitude.value, 11.904260) self.assertEqual(request.models[0].course.value, 189) self.assertEqual(request.models[0].heading.value, 190) self.assertEqual(request.models[0].timestamp.value, datetime(2017, 7, 12, 10, 6, 0)) self.assertEqual(request.models[0].ship_id.value, 4910653) self.assertEqual(request.models[0].wind_angle.value, 340) self.assertEqual(request.models[0].wind_speed.value, 18) self.assertEqual(request.models[0].wind_temp.value, 12)
def test_set_parameters(self): request = Client( self._api_key, fake_response_path=self.fake_ok_response_path)\ .port_distances_and_routes(*['foo', 'bar'], **self._request_params) self.assertEqual(request.api_reguest._timeout, 10)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .vessel_events(mmsi=355906000, event_type=19, timespan=160) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/vesselevents/_api_key_/' )[1].split('/')) ] test_query = [('event_type', '19'), ('mmsi', '355906000'), ('msgtype', 'simple'), ('protocol', 'jsono'), ('timespan', '160')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].mmsi.value, 355906000) self.assertEqual(request.models[0].ship_name.value, "MSC OSCAR") self.assertEqual(request.models[0].timestamp.value, datetime(2016, 4, 10, 12, 2, 0)) self.assertEqual(request.models[0].event_id.value, 2) self.assertEqual(request.models[0].event_name.value, 'INTERMEDIATE_DAILY_POS') self.assertEqual(request.models[0].event_content.value, 'At Lat:35.9598 / Lon:-6.02252')
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .search_vessel(imo=9375783) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/shipsearch/_api_key_/' )[1].split('/')) ] test_query = [('imo', '9375783'), ('protocol', 'jsono')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].id.value, 280171) self.assertEqual(request.models[0].name.value, 'FOUR SMILE') self.assertEqual(request.models[0].mmsi.value, 247271800) self.assertEqual(request.models[0].imo.value, 9189146) self.assertEqual(request.models[0].call_sign.value, 'IBPQ') self.assertEqual(request.models[0].type_name.value, 'Oil Products Tanker') self.assertEqual(request.models[0].dwt.value, 160573) self.assertEqual(request.models[0].flag.value, 'IT') self.assertEqual(request.models[0].country.value, 'Italy') self.assertEqual(request.models[0].build_year.value, 2001) self.assertEqual( request.models[0].details_page_url.value, 'https://www.marinetraffic.com/en/ais/details/ships/shipid:280171/mmsi:247271800/vessel:280171' )
def test_meta_xml_with_meta(self): request = Client( self._api_key, fake_response_path=self.fake_ok_response_path_xml_with_meta)\ .port_distances_and_routes(protocol='xml', **self._request_params) self.assertEqual(request.meta, self._meta_data)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .predictive_destinations(imo=8105088, fromportid=1) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/predictive-destination-areas/_api_key_/' )[1].split('/')) ] test_query = [('fromportid', '1'), ('imo', '8105088'), ('protocol', 'jsono')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].imo.value, 8105088) self.assertEqual(request.models[0].ship_id.value, 214973) self.assertEqual(request.models[0].mmsi.value, 241324000) self.assertEqual(request.models[0].ship_id.value, 214973) self.assertEqual(request.models[0].ship_class.value, 'HANDYSIZE') self.assertEqual(request.models[0].manager.value, 'SEKA 02 MARITIME') self.assertEqual(request.models[0].owner.value, 'SEKA 02 MARITIME') self.assertEqual(request.models[0].from_port_id.value, 1) self.assertEqual(request.models[0].from_port.value, 'PIRAEUS') self.assertEqual(request.models[0].next_port_1_id.value, 812) self.assertEqual(request.models[0].next_port_1.value, 'KALI LIMENES') self.assertEqual(request.models[0].next_port_1_prob.value, 0.563) self.assertEqual(request.models[0].next_area_1.value, 'EMED') self.assertEqual(request.models[0].next_area_1_prob.value, 0.875) self.assertEqual(request.models[0].next_port_2_id.value, 29) self.assertEqual(request.models[0].next_port_2.value, 'AGIOI THEODOROI') self.assertEqual(request.models[0].next_port_2_prob.value, 0.250) self.assertEqual(request.models[0].next_area_2.value, 'EMED') self.assertEqual(request.models[0].next_area_2_prob.value, 0.875) self.assertEqual(request.models[0].next_port_3_id.value, 17) self.assertEqual(request.models[0].next_port_3.value, 'CORINTH CANAL') self.assertEqual(request.models[0].next_port_3_prob.value, 0.063) self.assertEqual(request.models[0].next_area_3.value, 'EMED') self.assertEqual(request.models[0].next_area_3_prob.value, 0.875) self.assertEqual(request.models[0].next_port_4_id.value, 2507) self.assertEqual(request.models[0].next_port_4.value, 'TRIPOLI') self.assertEqual(request.models[0].next_port_4_prob.value, 0.063) self.assertEqual(request.models[0].next_area_4.value, 'WMED') self.assertEqual(request.models[0].next_area_4_prob.value, 0.063) self.assertEqual(request.models[0].next_port_5_id.value, 1688) self.assertEqual(request.models[0].next_port_5.value, 'TUZLA') self.assertEqual(request.models[0].next_port_5_prob.value, 0.063) self.assertEqual(request.models[0].next_area_5.value, 'BSEA') self.assertEqual(request.models[0].next_area_5_prob.value, 0.063)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .expected_arrivals(timespan=2, country='US', dwt_min=10000, dwt_max=160000, shiptype=7) query = [tuple(q.split(':')) for q in sorted(request.api_reguest.url.split( 'https://services.marinetraffic.com/api/expectedarrivals/_api_key_/' )[1].split('/'))] test_query = [ ('country', 'US'), ('dwt_max', '160000'), ('dwt_min', '10000'), ('protocol', 'jsono'), ('shiptype', '7'), ('timespan', '2'), ('v', '3') ] self.assertEqual(query, test_query) self.assertEqual(request.models[0].imo.value, 7350325) self.assertEqual(request.models[0].mmsi.value, 239308000) self.assertEqual(request.models[0].ship_name.value, 'IONIS') self.assertEqual(request.models[0].type_name.value, 'Ro-Ro/Passenger Ship') self.assertEqual(request.models[0].ship_type.value, 71) self.assertEqual(request.models[0].call_sign.value, 'SVKU') self.assertEqual(request.models[0].flag.value, 'GR') self.assertEqual(request.models[0].length.value, 96) self.assertEqual(request.models[0].width.value, 17) self.assertEqual(request.models[0].draught.value, 44) self.assertEqual(request.models[0].grt.value, 2604) self.assertEqual(request.models[0].dwt.value, 880) self.assertEqual(request.models[0].year_built.value, 1977) self.assertEqual(request.models[0].latitude.value, 37.914780) self.assertEqual(request.models[0].longitude.value, 23.604830) self.assertEqual(request.models[0].speed.value, 164) self.assertEqual(request.models[0].course.value, 63) self.assertEqual(request.models[0].status.value, 0) self.assertEqual(request.models[0].eta.value, datetime(2016, 10, 20, 10, 36, 0)) self.assertEqual(request.models[0].eta_calc.value, '') self.assertEqual(request.models[0].eta_updated.value, '') self.assertEqual(request.models[0].last_port_id.value, 6) self.assertEqual(request.models[0].last_port.value, 'AEGINA') self.assertEqual(request.models[0].last_port_unlocode.value, 'GRAEG') self.assertEqual(request.models[0].last_port_country.value, 'GR') self.assertEqual(request.models[0].last_port_time.value, datetime(2016, 10, 19, 13, 6, 0)) self.assertEqual(request.models[0].port_id.value, 0) self.assertEqual(request.models[0].port_unlocode.value, '') self.assertEqual(request.models[0].current_port.value, '') self.assertEqual(request.models[0].current_port_country.value, '') self.assertEqual(request.models[0].next_port_id.value, 1) self.assertEqual(request.models[0].next_port_unlocode.value, 'GRPIR') self.assertEqual(request.models[0].next_port_name.value, 'PIRAEUS') self.assertEqual(request.models[0].next_port_country.value, 'GR') self.assertEqual(request.models[0].timestamp.value, datetime(2016, 10, 19, 14, 3, 8))
def test_error_response_xml(self): with self.assertRaises(Exception) as context: Client( self._api_key, fake_response_path=self.fake_error_response_path_xml)\ .port_distances_and_routes(protocol='xml', **self._request_params) self.assertTrue( 'Request errors: code 12: TEST ERROR' in str(context.exception))
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .vessel_photos(vessel_id=310627000) url = 'https://services.marinetraffic.com/api/exportvesselphoto/_api_key_/' \ 'vessel_id:310627000' self.assertEqual(request.api_reguest.url, url) self.assertEqual(request.models[0].url.value, 'https://services.marinetraffic.com/photos/show/864354')
def setUp(self): self._api_key = '_api_key_' self.fake_ok_response_path_json = os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'tests', 'responses', 'ps01_response.json') self._request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json) \ .vessel_historical_track(period='daily', days=3, mmsi=241486000)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .single_vessel_positions(timespan=20, mmsi=310627000) query = [tuple(q.split(':')) for q in sorted(request.api_reguest.url.split( 'https://services.marinetraffic.com/api/exportvessel/_api_key_/' )[1].split('/'))] test_query = [ ('mmsi', '310627000'), ('msgtype', 'simple'), ('protocol', 'jsono'), ('timespan', '20'), ('v', '5') ] self.assertEqual(query, test_query) self.assertEqual(request.models[0].mmsi.value, 205623000) self.assertEqual(request.models[0].imo.value, 9549645) self.assertEqual(request.models[0].latitude.value, 37.24538) self.assertEqual(request.models[0].longitude.value, 25.590981) self.assertEqual(request.models[0].speed.value, 65) self.assertEqual(request.models[0].heading.value, 250) self.assertEqual(request.models[0].course.value, 288) self.assertEqual(request.models[0].status.value, 0) self.assertEqual(request.models[0].timestamp.value, datetime(2016, 4, 18, 19, 21, 0)) self.assertEqual(request.models[0].dsrc.value, 'SAT') self.assertEqual(request.models[0].ship_name.value, 'MALACHITE') self.assertEqual(request.models[0].ship_type.value, 70) self.assertEqual(request.models[0].call_sign.value, 'ONHL') self.assertEqual(request.models[0].flag.value, 'BE') self.assertEqual(request.models[0].length.value, 90) self.assertEqual(request.models[0].width.value, 14) self.assertEqual(request.models[0].grt.value, 3517) self.assertEqual(request.models[0].dwt.value, 5000) self.assertEqual(request.models[0].year_built.value, 2012) self.assertEqual(request.models[0].type_name.value, 'Passengers Ship') self.assertEqual(request.models[0].ais_type_summary.value, 'Passenger') self.assertEqual(request.models[0].current_port.value, '') self.assertEqual(request.models[0].current_port_id.value, 0) self.assertEqual(request.models[0].current_port_unlocode.value, '') self.assertEqual(request.models[0].last_port.value, 'FREMANTLE') self.assertEqual(request.models[0].last_port_time.value, datetime(2016, 4, 16, 18, 26, 0)) self.assertEqual(request.models[0].destination.value, 'DERINCE') self.assertEqual(request.models[0].eta.value, datetime(2017, 4, 20, 14, 0, 0)) self.assertEqual(request.models[0].draught.value, 50) self.assertEqual(request.models[0].last_port_id.value, 768) self.assertEqual(request.models[0].last_port_unlocode.value, 'AUFRE') self.assertEqual(request.models[0].next_port_id.value, 890) self.assertEqual(request.models[0].next_port_unlocode.value, 'AUADL') self.assertEqual(request.models[0].next_port_name.value, 'ADELAIDE') self.assertEqual(request.models[0].next_port_country.value, 'AU') self.assertEqual(request.models[0].eta_calc.value, datetime(2017, 5, 20, 14, 0, 0))
def test_ok_response_csv(self): request = Client( self._api_key, fake_response_path=self.fake_ok_response_path_csv)\ .port_distances_and_routes(protocol='csv', **self._request_params) self.assertEqual(request.formatted_data, self._test_response) self.assertEqual(request.models[0].distance.value, 7891) self.assertFalse(request.models[0].panama.value) self.assertTrue(request.models[0].suez.value) self.assertEqual(request.models[0].final_path.value, self._final_path)
def test_prepare_url(self): request = Client( self._api_key, fake_response_path=self.fake_ok_response_path)\ .port_distances_and_routes(**self._request_params) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split(self._base_url)[1].split('/')) ] test_query = [('includealternatives', '1'), ('includeinland', '0'), ('port_start_id', '1'), ('port_target_id', '10'), ('protocol', 'jsono')] self.assertEqual(query, test_query)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .port_distances_and_routes() url = 'https://services.marinetraffic.com/api/exportroutes/_api_key_/' \ 'protocol:jsono' self.assertEqual(request.api_reguest.url, url) self.assertEqual(request.models[0].distance.value, 7891) self.assertFalse(request.models[0].panama.value) self.assertTrue(request.models[0].suez.value) self.assertEqual(request.models[0].final_path.value, [(23.5935, 37.9475), (23.5997, 37.9455), (23.605, 37.9413), (122.867, 31.0829), (122.308, 31.1024), (122.093, 31.228)])
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .eta_to_port(portid=2036, shipid=292, speed_calc=18.8) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/etatoport/_api_key_/' )[1].split('/')) ] test_query = [('portid', '2036'), ('protocol', 'jsono'), ('shipid', '292'), ('speed_calc', '18.8')] self.assertEqual(query, test_query) print(type(request.models[0].last_port_time.value)) self.assertEqual(request.models[0].ship_id.value, 292) self.assertEqual(request.models[0].mmsi.value, 228313800) self.assertEqual(request.models[0].imo.value, 9450600) self.assertEqual(request.models[0].last_port_id.value, 166) self.assertEqual(request.models[0].last_port.value, "CAPE TOWN") self.assertEqual(request.models[0].last_port_unlocode.value, "ZACPT") self.assertEqual(request.models[0].last_port_time.value, datetime(2018, 12, 8, 8, 13, 1)) self.assertEqual(request.models[0].next_port_name.value, "ROTTERDAM") self.assertEqual(request.models[0].next_port_unlocode.value, "NLRTM") self.assertEqual(request.models[0].eta_calc.value, datetime(2018, 12, 26, 11, 48, 2)) self.assertEqual(request.models[0].distance_travelled.value, 200) self.assertEqual(request.models[0].distance_to_go.value, 100) self.assertEqual(request.models[0].speed.value, 50) self.assertEqual(request.models[0].draught.value, 1234) self.assertEqual(request.models[0].draught_max.value, 4321) self.assertEqual(request.models[0].load_status_name.value, "test1") self.assertEqual(request.models[0].route.value, "test2") self.assertEqual(request.models[0].etd_calc.value, datetime(2018, 12, 26, 11, 48, 2)) self.assertEqual(request.models[0].time_anch.value, 10.10) self.assertEqual(request.models[0].time_port.value, 20.20)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .vessel_particulars(imo=9375783) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/vesselmasterdata/_api_key_/' )[1].split('/')) ] test_query = [('imo', '9375783'), ('protocol', 'jsono'), ('v', '3')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].mmsi.value, 304932000) self.assertEqual(request.models[0].imo.value, 9375783) self.assertEqual(request.models[0].name.value, 'STAPELMOOR') self.assertEqual(request.models[0].build_place.value, '') self.assertEqual(request.models[0].build_year.value, 2006) self.assertEqual(request.models[0].breadth_extreme.value, 12.4) self.assertEqual(request.models[0].summer_dwt.value, 2930) self.assertEqual(request.models[0].displacement_summer.value, 0) self.assertEqual(request.models[0].call_sign.value, 'V2BU8') self.assertEqual(request.models[0].flag.value, 'AG') self.assertEqual(request.models[0].draught.value, 4.36) self.assertEqual(request.models[0].overall_length.value, 88.53) self.assertEqual(request.models[0].fuel_consumption.value, '') self.assertEqual(request.models[0].max_speed.value, 0) self.assertEqual(request.models[0].condition_speed.value, 10.5) self.assertEqual(request.models[0].wet_cargo_capacity.value, 0) self.assertEqual(request.models[0].owner.value, '') self.assertEqual(request.models[0].manager.value, '') self.assertEqual(request.models[0].vessel_type.value, 'GENERAL CARGO') self.assertEqual(request.models[0].manager_owner.value, 'BOJEN REEDEREI')
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .port_congestion(year=2018, market='wet bulk', ship_class='handysize', week=15, port_id=1) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/port-congestion/_api_key_/' )[1].split('/')) ] test_query = [('market', 'wet bulk'), ('portid', '1'), ('protocol', 'jsono'), ('shipclass', 'handysize'), ('week', '15'), ('year', '2018')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].port_id.value, 1) self.assertEqual(request.models[0].year.value, 2018) self.assertEqual(request.models[0].week.value, 15) self.assertEqual(request.models[0].market.value, 'WET BULK') self.assertEqual(request.models[0].ship_class.value, 'HANDYSIZE') self.assertEqual(request.models[0].time_anch.value, 0.3) self.assertEqual(request.models[0].time_port.value, 0.7) self.assertEqual(request.models[0].vessels.value, 17) self.assertEqual(request.models[0].calls.value, 33) self.assertEqual(request.models[0].time_anch_stdev.value, 1.1) self.assertEqual(request.models[0].time_anch_diff.value, 0.1) self.assertEqual(request.models[0].time_anch_diff_perc.value, 50.0) self.assertEqual(request.models[0].time_port_stdev.value, 9.0) self.assertEqual(request.models[0].time_port_diff.value, 0.0) self.assertEqual(request.models[0].time_port_diff_perc.value, 0.0)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .port_calls(portid=1, gt_min=4000, dwt_min=9000, timespan=60) query = [tuple(q.split(':')) for q in sorted(request.api_reguest.url.split( 'https://services.marinetraffic.com/api/portcalls/_api_key_/' )[1].split('/'))] test_query = [ ('dwt_min', '9000'), ('gt_min', '4000'), ('msgtype', 'simple'), ('portid', '1'), ('protocol', 'jsono'), ('timespan', '60'), ('v', '4') ] self.assertEqual(query, test_query) self.assertEqual(request.models[0].mmsi.value, 566312000) self.assertEqual(request.models[0].ship_name.value, "MARITIME KELLY ANNE") self.assertEqual(request.models[0].ship_id.value, 708694) self.assertEqual(request.models[0].local_timestamp.value, datetime(2016, 3, 3, 7, 10, 0)) self.assertEqual(request.models[0].utc_timestamp.value, datetime(2016, 3, 3, 12, 10, 0)) self.assertEqual(request.models[0].move_type.value, True) self.assertEqual(request.models[0].type_name.value, 'Container Ship') self.assertEqual(request.models[0].unlocode.value, 'USMSY') self.assertEqual(request.models[0].draught.value, 45) self.assertEqual(request.models[0].load_status.value, 0) self.assertEqual(request.models[0].port_operation.value, 0) self.assertEqual(request.models[0].in_transit.value, False) self.assertEqual(request.models[0].voyage_avg_speed.value, 57) self.assertEqual(request.models[0].voyage_max_speed.value, 73) self.assertEqual(request.models[0].voyage_idle_time.value, 0) self.assertEqual(request.models[0].elapsed_noanch.value, 11)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .fleet_vessel_positions(timespan=10) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/exportvessels/_api_key_/' )[1].split('/')) ] test_query = [('msgtype', 'simple'), ('protocol', 'jsono'), ('timespan', '10'), ('v', '8')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].mmsi.value, 304010417) self.assertEqual(request.models[0].imo.value, 9015462) self.assertEqual(request.models[0].ship_id.value, 359396) self.assertEqual(request.models[0].latitude.value, 47.758499) self.assertEqual(request.models[0].longitude.value, -5.154223) self.assertEqual(request.models[0].speed.value, 74) self.assertEqual(request.models[0].heading.value, 329) self.assertEqual(request.models[0].course.value, 327) self.assertEqual(request.models[0].status.value, 0) self.assertEqual(request.models[0].timestamp.value, datetime(2017, 5, 19, 9, 39, 57)) self.assertEqual(request.models[0].dsrc.value, 'TER') self.assertEqual(request.models[0].utc_seconds.value, 54) self.assertEqual(request.models[0].ship_name.value, 'DORNUM') self.assertEqual(request.models[0].ship_type.value, 70) self.assertEqual(request.models[0].call_sign.value, 'V2OZ') self.assertEqual(request.models[0].flag.value, 'AG') self.assertEqual(request.models[0].length.value, 81.7900009) self.assertEqual(request.models[0].width.value, 11.3000002) self.assertEqual(request.models[0].grt.value, 1662) self.assertEqual(request.models[0].dwt.value, 2369) self.assertEqual(request.models[0].year_built.value, 1993) self.assertEqual(request.models[0].rot.value, 6) self.assertEqual(request.models[0].type_name.value, 'General Cargo') self.assertEqual(request.models[0].ais_type_summary.value, 'Cargo') self.assertEqual(request.models[0].current_port.value, '') self.assertEqual(request.models[0].current_port_id.value, 0) self.assertEqual(request.models[0].current_port_unlocode.value, '') self.assertEqual(request.models[0].current_port_country.value, '') self.assertEqual(request.models[0].last_port.value, 'BILBAO ANCH') self.assertEqual(request.models[0].last_port_time.value, datetime(2017, 5, 16, 15, 37, 0)) self.assertEqual(request.models[0].destination.value, 'GREENORE') self.assertEqual(request.models[0].eta.value, datetime(2017, 5, 20, 8, 0, 0)) self.assertEqual(request.models[0].draught.value, 44) self.assertEqual(request.models[0].last_port_id.value, 20648) self.assertEqual(request.models[0].last_port_unlocode.value, '') self.assertEqual(request.models[0].last_port_country.value, 'ES') self.assertEqual(request.models[0].next_port_id.value, 251) self.assertEqual(request.models[0].next_port_unlocode.value, 'IEGRN') self.assertEqual(request.models[0].next_port_name.value, 'GREENORE') self.assertEqual(request.models[0].next_port_country.value, 'IE') self.assertEqual(request.models[0].eta_calc.value, datetime(2017, 5, 21, 9, 55, 0)) self.assertEqual(request.models[0].eta_updated.value, datetime(2017, 5, 19, 9, 7, 0)) self.assertEqual(request.models[0].distance_to_go.value, 407) self.assertEqual(request.models[0].distance_travelled.value, 364) self.assertEqual(request.models[0].awg_speed.value, 8.5) self.assertEqual(request.models[0].max_speed.value, 8.80000019)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json) \ .berth_calls(dwt_min=2000, dwt_max=70000, timespan=20) query = [ tuple(q.split(':')) for q in sorted( request.api_reguest.url.split( 'https://services.marinetraffic.com/api/berth-calls/_api_key_/' )[1].split('/')) ] test_query = [('dwt_max', '70000'), ('dwt_min', '2000'), ('msgtype', 'simple'), ('protocol', 'jsono'), ('timespan', '20')] self.assertEqual(query, test_query) self.assertEqual(request.models[0].ship_id.value, 414650) self.assertEqual(request.models[0].mmsi.value, 354530000) self.assertEqual(request.models[0].imo.value, 9349813) self.assertEqual(request.models[0].dock_local_time.value, datetime(2018, 3, 13, 13, 50, 0)) self.assertEqual(request.models[0].dock_utc_time.value, datetime(2018, 3, 13, 11, 50, 0)) self.assertEqual(request.models[0].dock_offset_time.value, 2.0) self.assertEqual(request.models[0].undock_local_time.value, '') self.assertEqual(request.models[0].undock_utc_time.value, '') self.assertEqual(request.models[0].undock_offset_time.value, 0.0) self.assertEqual(request.models[0].ship_name.value, 'MSC CARMEN') self.assertEqual(request.models[0].type_name.value, 'Container Ship') self.assertEqual(request.models[0].grt.value, 50963) self.assertEqual(request.models[0].dwt.value, 63359) self.assertEqual(request.models[0].flag.value, 'PA') self.assertEqual(request.models[0].year_built.value, 2008) self.assertEqual(request.models[0].berth_id.value, 6) self.assertEqual(request.models[0].berth_name.value, 'Container Terminal') self.assertEqual(request.models[0].terminal_id.value, 978) self.assertEqual(request.models[0].terminal_name.value, 'Container Terminal') self.assertEqual(request.models[0].port_name.value, 'PIRAEUS') self.assertEqual(request.models[0].port_id.value, 1) self.assertEqual(request.models[0].unlocode.value, 'GRPIR') self.assertEqual(request.models[0].country_code.value, None) self.assertEqual(request.models[0].destination_id.value, 32) self.assertEqual(request.models[0].destination.value, 'PAROS') self.assertEqual(request.models[0].arrival_local_time.value, datetime(2018, 3, 13, 13, 43, 0)) self.assertEqual(request.models[0].arrival_utc_time.value, datetime(2018, 3, 13, 11, 43, 0)) self.assertEqual(request.models[0].arrival_draught.value, 130) self.assertEqual(request.models[0].arrival_load_status.value, 3) self.assertEqual(request.models[0].distance_travelled.value, 2931) self.assertEqual(request.models[0].voyage_average_speed.value, 188) self.assertEqual(request.models[0].voyage_max_speed.value, 226) self.assertEqual(request.models[0].voyage_idle_time.value, 7) self.assertEqual(request.models[0].origin_name.value, 'ANTWERP') self.assertEqual(request.models[0].origin_port_id.value, 117) self.assertEqual(request.models[0].origin_departure_time.value, datetime(2018, 3, 7, 5, 36, 0)) self.assertEqual(request.models[0].total_voyage_time.value, 9007) self.assertEqual(request.models[0].departure_local_time.value, '') self.assertEqual(request.models[0].departure_utc_time.value, '') self.assertEqual(request.models[0].departure_draught.value, 0) self.assertEqual(request.models[0].departure_load_status.value, 0) self.assertEqual(request.models[0].port_operation.value, 0) self.assertEqual(request.models[0].time_at_berth.value, 0) self.assertEqual(request.models[0].time_at_port.value, 0)
def test_ok_response_json(self): request = Client(self._api_key, fake_response_path=self.fake_ok_response_path_json)\ .voyage_forecasts(mmsi=355906000) query = [tuple(q.split(':')) for q in sorted(request.api_reguest.url.split( 'https://services.marinetraffic.com/api/voyageforecast/_api_key_/' )[1].split('/'))] test_query = [ ('mmsi', '355906000'), ('protocol', 'jsono') ] self.assertEqual(query, test_query) self.assertEqual(request.models[0].mmsi.value, 355906000) self.assertEqual(request.models[0].destination.value, "TANGER MED") self.assertEqual(request.models[0].last_port_id.value, 2037) self.assertEqual(request.models[0].last_port.value, "ROTTERDAM MAASVLAKTE") self.assertEqual(request.models[0].last_port_unlocode.value, "NLMSV") self.assertEqual(request.models[0].last_port_time.value, datetime(2016, 4, 19, 3, 11, 0)) self.assertEqual(request.models[0].next_port_id.value, 1099) self.assertEqual(request.models[0].next_port_name.value, "TANGER MED") self.assertEqual(request.models[0].next_port_unlocode.value, "MAPTM") self.assertEqual(request.models[0].eta.value, datetime(2016, 4, 24, 8, 0, 0)) self.assertEqual(request.models[0].eta_calc.value, datetime(2016, 4, 25, 1, 50, 0)) self.assertEqual(request.models[0].distance_travelled.value, 112) self.assertEqual(request.models[0].distance_to_go.value, 1367) self.assertEqual(request.models[0].speed.value, 103) self.assertEqual(request.models[0].draught.value, 106) self.assertEqual(request.models[0].draught_max.value, 160) self.assertEqual(request.models[0].load_status_name.value, "IN_BALLAST") self.assertEqual(request.models[0].route.value, [ (1.3061, 51.9496), (1.3198, 51.9253), (1.5319, 51.9358), (1.5484, 51.9297), (1.5628, 51.9072), (1.5685, 51.8651), (1.6181, 51.8556), (1.7286, 51.8272), (1.7608, 51.6416), (1.8051, 51.546), (1.8844, 51.4768), (1.9062, 51.4114), (1.7662, 51.2317), (1.5251, 51.108), (1.4385, 51.0599), (1.3317, 51.0018), (0.5845, 50.6069), (-1.3323, 50.2716), (-2.9896, 49.9666), (-3.9515, 49.6075), (-4.5608, 49.376), (-5.7686, 48.8919), (-7.0977, 47.3094), (-9.2948, 44.3644), (-10.0952, 43.2789), (-10.1024, 42.2256), (-10.0907, 41.1925), (-10.0974, 39.8082), (-10.0934, 38.716), (-9.7988, 37.6639), (-9.5553, 36.7994), (-9.3081, 36.5738), (-8.1363, 36.2893), (-6.2082, 35.9012), (-5.7619, 35.9011), (-5.5676, 35.9165), (-5.5384, 35.9225), (-5.519, 35.9244), (-5.5015, 35.9219), (-5.4886, 35.9094), (-5.49, 35.9048) ])