def test_import_stops_txt_bom(self): if PY3: # pragma: no cover text = (BOM_UTF8.decode('utf-8') + """\ stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,\ location_type,parent_station,stop_timezone FUR_CREEK_RES,FC,Furnace Creek Resort,,36.425288,-117.133162,A,\ http://example.com/fcr,0,FUR_CREEK_STA, FUR_CREEK_STA,,Furnace Creek Station,"Our Station",36.425288,-117.133162,A,\ http://example.com,1,,America/Los_Angeles """) else: text = (BOM_UTF8 + b"""\ stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,\ location_type,parent_station,stop_timezone FUR_CREEK_RES,FC,Furnace Creek Resort,,36.425288,-117.133162,A,\ http://example.com/fcr,0,FUR_CREEK_STA, FUR_CREEK_STA,,Furnace Creek Station,"Our Station",36.425288,-117.133162,A,\ http://example.com,1,,America/Los_Angeles """) stops_txt = StringIO(text) Stop.import_txt(stops_txt, self.feed) self.assertEqual(Stop.objects.count(), 2) station = Stop.objects.get(stop_id='FUR_CREEK_STA') stop = Stop.objects.get(stop_id='FUR_CREEK_RES') self.assertEqual(stop.parent_station, station)
def test_import_stops_txt_duplicate(self): stops_txt = StringIO("""\ stop_id,stop_name,stop_desc,stop_lat,stop_lon FUR_CREEK_RES,Furnace Creek Resort (Demo),,36.425288,-117.133162 FUR_CREEK_RES,Furnace Creek Resort,,36.42,-117.13 """) Stop.import_txt(stops_txt, self.feed) stop = Stop.objects.get() self.assertEqual(stop.feed, self.feed) self.assertEqual(stop.stop_id, 'FUR_CREEK_RES') self.assertEqual(stop.name, 'Furnace Creek Resort (Demo)')
def test_import_stops_txt_parent_is_space(self): """If parent station is an empty string, then leave unset Issue #36 """ stops_txt = StringIO("""\ stop_id,stop_name,stop_desc,stop_lat,stop_lon,parent_station FUR_CREEK_RES,Furnace Creek Resort (Demo),,36.425288,-117.133162," " """) Stop.import_txt(stops_txt, self.feed) stop = Stop.objects.get() self.assertEqual(stop.parent_station, None)
def test_import_stops_txt_bom(self): stops_txt = StringIO(bom_prefix_csv("""\ stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,\ location_type,parent_station,stop_timezone FUR_CREEK_RES,FC,Furnace Creek Resort,,36.425288,-117.133162,A,\ http://example.com/fcr,0,FUR_CREEK_STA, FUR_CREEK_STA,,Furnace Creek Station,"Our Station",36.425288,-117.133162,A,\ http://example.com,1,,America/Los_Angeles """)) Stop.import_txt(stops_txt, self.feed) self.assertEqual(Stop.objects.count(), 2) station = Stop.objects.get(stop_id='FUR_CREEK_STA') stop = Stop.objects.get(stop_id='FUR_CREEK_RES') self.assertEqual(stop.parent_station, station)
def test_import_stops_txt_strip_spaces(self): """A whitespace-only field is treated as empty. From SFMTA feed. """ stops_txt = StringIO("""\ stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url 98,198,2ND ST & MARKET ST, ,37.789255,-122.401225, ,%s """ % ' ') # Get around flake8 warning on trailing whitespace Stop.import_txt(stops_txt, self.feed) stop = Stop.objects.get() self.assertEqual(stop.name, '2ND ST & MARKET ST') self.assertEqual(stop.desc, '') self.assertEqual(stop.zone, None) self.assertEqual(stop.url, '')
def test_import_stops_txt_plus_point(self): """Test issue #70, latitude / longitude with leading plus sign.""" stops_txt = StringIO("""\ stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,location_type,parent_station 10258,TANEU,TANNEURS,,+49.119799,+06.182966,1, """) Stop.import_txt(stops_txt, self.feed) stop = Stop.objects.get() self.assertEqual(stop.feed, self.feed) self.assertEqual(stop.stop_id, '10258') self.assertEqual(stop.code, 'TANEU') self.assertEqual(stop.name, 'TANNEURS') self.assertEqual(stop.desc, '') self.assertEqual(str(stop.lat), '49.119799') self.assertEqual(str(stop.lon), '6.182966') self.assertEqual(stop.location_type, '1') self.assertEqual(stop.parent_station, None)
def test_import_stops_txt_stop_before_station_plus_extra(self): stops_txt = StringIO("""\ stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,\ location_type,parent_station,stop_timezone,extra FUR_CREEK_RES,FC,Furnace Creek Resort,,36.425288,-117.133162,A,\ http://example.com/fcr,0,FUR_CREEK_STA,,a stop FUR_CREEK_STA,,Furnace Creek Station,"Our Station",36.425288,-117.133162,A,\ http://example.com,1,,America/Los_Angeles,a station """) Stop.import_txt(stops_txt, self.feed) self.assertEqual(Stop.objects.count(), 2) station = Stop.objects.get(stop_id='FUR_CREEK_STA') stop = Stop.objects.get(stop_id='FUR_CREEK_RES') self.assertEqual(stop.parent_station, station) self.assertEqual(stop.extra_data, {'extra': 'a stop'}) self.assertEqual(station.extra_data, {'extra': 'a station'}) expected = {'extra_columns': {'Stop': ['extra']}} self.assertEqual(expected, self.feed.meta)
def test_import_stops_txt_maximal(self): stops_txt = StringIO("""\ stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,\ location_type,parent_station,stop_timezone,wheelchair_boarding FUR_CREEK_STA,,Furnace Creek Station,"Our Station",36.425288,-117.133162,A,\ http://example.com,1,,America/Los_Angeles,1 FUR_CREEK_RES,FC,Furnace Creek Resort,,36.425288,-117.133162,A,\ http://example.com/fcr,0,FUR_CREEK_STA, FEZ_CREEK_STA,,Fez Creek Station,"Our Station",36.425288,-117.133162,A,\ http://example.com,1,,America/Los_Angeles FEZ_CREEK_RES,FC,Fez Creek Resort,,36.425288,-117.133162,A,\ http://example.com/fcr,0,FEZ_CREEK_STA, """) Stop.import_txt(stops_txt, self.feed) self.assertEqual(Stop.objects.count(), 4) station = Stop.objects.get(stop_id='FUR_CREEK_STA') zone = Zone.objects.get(feed=self.feed, zone_id='A') self.assertEqual(station.code, '') self.assertEqual(station.name, 'Furnace Creek Station') self.assertEqual(station.desc, 'Our Station') self.assertEqual(str(station.lat), '36.425288') self.assertEqual(str(station.lon), '-117.133162') self.assertEqual(station.zone, zone) self.assertEqual(station.url, 'http://example.com') self.assertEqual(station.location_type, '1') self.assertEqual(station.parent_station, None) self.assertEqual(station.timezone, 'America/Los_Angeles') self.assertEqual(station.wheelchair_boarding, '1') stop = Stop.objects.get(stop_id='FUR_CREEK_RES') self.assertEqual(stop.code, 'FC') self.assertEqual(stop.name, 'Furnace Creek Resort') self.assertEqual(stop.desc, '') self.assertEqual(str(stop.lat), '36.425288') self.assertEqual(str(stop.lon), '-117.133162') self.assertEqual(stop.zone, zone) self.assertEqual(stop.url, 'http://example.com/fcr') self.assertEqual(stop.location_type, '0') self.assertEqual(stop.parent_station, station) self.assertEqual(stop.timezone, '') stop2 = Stop.objects.get(stop_id='FEZ_CREEK_RES') self.assertEqual(stop2.parent_station.stop_id, 'FEZ_CREEK_STA')
def test_import_stops_txt_minimal(self): stops_txt = StringIO.StringIO("""\ stop_id,stop_name,stop_desc,stop_lat,stop_lon FUR_CREEK_RES,Furnace Creek Resort (Demo),,36.425288,-117.133162 """) Stop.import_txt(stops_txt, self.feed) stop = Stop.objects.get() self.assertEqual(stop.feed, self.feed) self.assertEqual(stop.stop_id, 'FUR_CREEK_RES') self.assertEqual(stop.code, '') self.assertEqual(stop.name, 'Furnace Creek Resort (Demo)') self.assertEqual(stop.desc, '') self.assertEqual(str(stop.lat), '36.425288') self.assertEqual(str(stop.lon), '-117.133162') self.assertEqual(stop.zone, None) self.assertEqual(stop.url, '') self.assertEqual(stop.location_type, '') self.assertEqual(stop.parent_station, None) self.assertEqual(stop.timezone, '')
def test_import_stops_txt_extra_columns(self): stops_txt = StringIO("""\ stop_id,stop_name,stop_desc,stop_lat,stop_lon,platform_code FUR_CREEK_RES,Furnace Creek Resort (Demo),,36.425288,-117.133162,7 """) Stop.import_txt(stops_txt, self.feed) stop = Stop.objects.get() self.assertEqual(stop.feed, self.feed) self.assertEqual(stop.stop_id, 'FUR_CREEK_RES') self.assertEqual(stop.code, '') self.assertEqual(stop.name, 'Furnace Creek Resort (Demo)') self.assertEqual(stop.desc, '') self.assertEqual(str(stop.lat), '36.425288') self.assertEqual(str(stop.lon), '-117.133162') self.assertEqual(stop.zone, None) self.assertEqual(stop.url, '') self.assertEqual(stop.location_type, '') self.assertEqual(stop.parent_station, None) self.assertEqual(stop.timezone, '') self.assertEqual(stop.wheelchair_boarding, '') self.assertEqual({'platform_code': '7'}, stop.extra_data) expected = {'extra_columns': {'Stop': ['platform_code']}} self.assertEqual(expected, self.feed.meta)
def test_import_stops_txt_none(self): stops_txt = StringIO.StringIO("""\ stop_id,stop_name,stop_desc,stop_lat,stop_lon """) Stop.import_txt(stops_txt, self.feed) self.assertFalse(Stop.objects.exists())