def test_generate_creates_proper_json(self): generate_counselor_json(self.counselors, self.zipcodes, self.tempdir) with open(os.path.join(self.tempdir, '20001.json')) as f: data = json.load(f) self.assertEqual(data['zip'], { 'lat': 115.5, 'lng': 97.5, 'zipcode': '20001', }) agencies = data['counseling_agencies'] self.assertEqual(len(agencies), 2) expected_agencies = [ { 'agc_ADDR_LATITUDE': 120, 'agc_ADDR_LONGITUDE': 98, 'distance': 311.35243783709234, }, { 'agc_ADDR_LATITUDE': 125, 'agc_ADDR_LONGITUDE': 99, 'distance': 658.4536705140896, }, ] for a, b in zip(agencies, expected_agencies): self.assertCountEqual(a.keys(), b.keys()) for k in a: self.assertAlmostEqual(a[k], b[k])
def handle(self, *args, **options): zipcode_csv_file = options['zipcode_csv_file'] zipcode_gazetteer_file = options['zipcode_gazetteer_file'] if zipcode_csv_file: zipcodes = GeocodedZipCodeCsv.read(zipcode_csv_file) elif zipcode_gazetteer_file: zipcodes = GazetteerZipCodeFile.read(zipcode_gazetteer_file) else: raise CommandError( 'One of --zipcode-csv-file or --zipcode-gazetteer-file ' 'must be provided to enable mapping from zipcode to ' 'latitude/longitude coordinates.') # Retrieve counselors from the HUD website. counselors = fetch_counselors() # Standardize formatting of counselor data. counselors = clean_counselors(counselors) # Add in any missing latitude/longitude information for counselors. counselors = geocode_counselors(counselors, zipcodes=zipcodes) # Generate JSON files for each zipcode. generate_counselor_json(counselors, zipcodes, options['target'])
def handle(self, *args, **options): zipcode_csv_file = options['zipcode_csv_file'] zipcode_gazetteer_file = options['zipcode_gazetteer_file'] if zipcode_csv_file: zipcodes = GeocodedZipCodeCsv.read(zipcode_csv_file) elif zipcode_gazetteer_file: zipcodes = GazetteerZipCodeFile.read(zipcode_gazetteer_file) else: raise CommandError( 'One of --zipcode-csv-file or --zipcode-gazetteer-file ' 'must be provided to enable mapping from zipcode to ' 'latitude/longitude coordinates.' ) # Retrieve counselors from the HUD website. counselors = fetch_counselors() # Standardize formatting of counselor data. counselors = clean_counselors(counselors) # Add in any missing latitude/longitude information for counselors. counselors = geocode_counselors(counselors, zipcodes=zipcodes) # Generate JSON files for each zipcode. generate_counselor_json(counselors, zipcodes, options['target'])
def test_generate_creates_proper_json(self): generate_counselor_json(self.counselors, self.zipcodes, self.tempdir) with open(os.path.join(self.tempdir, '20001.json')) as f: data = json.load(f) self.assertEqual(data['zip'], { 'lat': 115.5, 'lng': 97.5, 'zipcode': '20001', }) agencies = data['counseling_agencies'] self.assertEqual(len(agencies), 2) expected_agencies = [ { 'agc_ADDR_LATITUDE': 120, 'agc_ADDR_LONGITUDE': 98, 'distance': 311.35243783709234, }, { 'agc_ADDR_LATITUDE': 125, 'agc_ADDR_LONGITUDE': 99, 'distance': 658.4536705140896, }, ] for a, b in zip(agencies, expected_agencies): six.assertCountEqual(self, a.keys(), b.keys()) for k in a: self.assertAlmostEqual(a[k], b[k])
def test_generate_creates_json_files(self): generate_counselor_json(self.counselors, self.zipcodes, self.tempdir) six.assertCountEqual( self, os.listdir(self.tempdir), # os.listdir order not guaranteed. ['20001.json', '20002.json'] )
def test_generate_creates_json_files(self): generate_counselor_json(self.counselors, self.zipcodes, self.tempdir) self.assertCountEqual( os.listdir(self.tempdir), # os.listdir order not guaranteed. ['20001.json', '20002.json'] )