import unittest
import requests
from publicdata.census.files.url_templates import *
from rowgenerators import parse_app_url
[docs]def test_data(*paths):
from os.path import dirname, join, abspath
return abspath(join(dirname(abspath(__file__)), 'test_data', *paths))
[docs]class BasicTests(unittest.TestCase):
[docs] def test_inconsistent_dc_name(self):
self.assertEqual('DistrictOfColumbia', state_name('dc', 2016, 5))
self.assertEqual('DistrictofColumbia', state_name('dc', 2016, 1))
[docs] def yield_args_w_state(self):
for year in [2014, 2015, 2016, 2017]:
for release in [1, 5]:
for stusab in ['CA','NH','DC']:
for summary_level in [50,140,150]:
for seq in [99]:
yield dict(year=year, release=release, stusab=stusab,
summary_level=summary_level, seq=seq)
[docs] def yield_args_wo_state(self):
for year in [2011,2012,2013,2014,2015,2016,2017]:
for release in [1, 5]:
for summary_level in [50,140,150]:
for seq in [99]:
yield dict(year=year, release=release, stusab=None,
summary_level=summary_level, seq=seq)
[docs] def yield_args_releases(self):
for year in [2013,2014, 2015, 2016, 2017]:
for release in [1, 5]:
for summary_level in [None]:
for seq in [None]:
yield dict(year=year, release=release, stusab=None,
summary_level=summary_level, seq=seq)
[docs] def test_seq_archive_url(self):
for d in self.yield_args_w_state():
url = seq_archive_url(**d)
r = requests.head(url)
self.assertEqual(200,r.status_code, url)
[docs] def test_geo_url(self):
for d in self.yield_args_w_state():
url = geo_url(**d)
print(url)
r = requests.head(url)
self.assertEqual(200, r.status_code, url)
[docs] def test_shell_url(self):
for d in self.yield_args_releases():
for f in [table_shell_url, table_lookup_url]:
url = f(**d)
r = requests.head(url)
self.assertEqual(200, r.status_code, url)
[docs] def test_dump_states(self):
import yaml, requests
from geoid.censusnames import stusab
r = requests.get('https://raw.githubusercontent.com/jasonong/List-of-US-States/master/states.yml')
rows = []
states = {v:k for k, v in stusab.items()}
for k, v in yaml.load(r.content).items():
try:
rows.append((states[v['abbreviation']], v['abbreviation'], v['name'] ))
except KeyError:
print(k, v)
print(rows)
[docs] def test_geo_urls(self):
from itertools import islice
for year in [2016, 2017]:
for sl in [50,140, 160]:
for stusab in ['RI','AZ','NY']:
us = tiger_url(year, sl, stusab)
u = parse_app_url(us)
print(type(u), u)
r = u.get_resource().get_target()
break