Permalink
Browse files

Added first test

  • Loading branch information...
1 parent e707747 commit eb8e3ac7a8258d3778ebdd2d07c8f66ee044844a @cndreisbach cndreisbach committed Feb 16, 2013
@@ -1,13 +1,18 @@
-import os, os.path, csv, string
+import os
+import os.path
+import csv
+import string
from sqlalchemy import MetaData, create_engine
import sqlsoup
from . import schemas
+
def csv_row_to_dict(headers, row):
return dict(zip(headers, map(string.strip, row)))
+
def create_schemas(db_uri):
engine = create_engine(db_uri)
metadata = MetaData()
@@ -35,6 +40,7 @@ def create_schemas(db_uri):
metadata.create_all(engine)
engine.dispose()
+
def load_code_sheet(db_uri):
db = sqlsoup.SQLSoup(db_uri)
@@ -70,6 +76,5 @@ def load_code_sheet(db_uri):
db.commit()
-
def load_hmda(db_uri, year):
pass
@@ -1,5 +1,6 @@
from sqlalchemy import *
+
def hmda(metadata):
return Table('hmda', metadata,
Column('year', Integer, nullable=False, index=True),
@@ -49,64 +50,82 @@ def hmda(metadata):
Column('number_of_family_units', Integer),
Column('application_date_indicator', Integer))
+
def CodeTable(name, metadata):
return Table(name, metadata,
Column('id', Integer, primary_key=True),
Column(name, String(255), nullable=False))
+
def action_taken(metadata):
return CodeTable('action_taken', metadata)
+
def agency(metadata):
return Table('agency', metadata,
Column('id', Integer, primary_key=True),
Column('agency_abbr', String(10), nullable=False),
Column('agency', String(255), nullable=False))
-
+
+
def denial_reason(metadata):
return CodeTable('denial_reason', metadata)
+
def edit_status(metadata):
return CodeTable('edit_status', metadata)
+
def ethnicity(metadata):
return CodeTable('ethnicity', metadata)
+
def hoepa(metadata):
return CodeTable('hoepa', metadata)
+
def lien_status(metadata):
return CodeTable('lien_status', metadata)
+
def loan_purpose(metadata):
return CodeTable('loan_purpose', metadata)
+
def loan_type(metadata):
return CodeTable('loan_type', metadata)
+
def owner_occupancy(metadata):
return CodeTable('owner_occupancy', metadata)
+
def preapproval(metadata):
return CodeTable('preapproval', metadata)
+
def property_type(metadata):
return CodeTable('property_type', metadata)
+
def purchaser_type(metadata):
return CodeTable('purchaser_type', metadata)
+
def race(metadata):
return CodeTable('race', metadata)
+
def sex(metadata):
return CodeTable('sex', metadata)
+
def state(metadata):
return Table('state', metadata,
Column('fips_code', Integer, primary_key=True),
Column('abbr', String(2), nullable=False))
+
def county(metadata):
return Table('county', metadata,
Column('county_fips_code', Integer, nullable=False),
@@ -122,9 +141,9 @@ def county(metadata):
Column('latitude', String(20)),
Column('longitude', String(20)))
+
def cbsa(metadata):
return Table('cbsa', metadata,
Column('cbsa_code', Integer, primary_key=True),
Column('parent_code', Integer, nullable=True),
Column('name', String(255), nullable=False))
-
No changes.
@@ -0,0 +1,39 @@
+import pytest
+from sqlalchemy import create_engine
+from sqlalchemy.engine import reflection
+
+from .. import data
+from ..data import schemas
+
+
+def test_create_schemas(tmpdir):
+ db_uri = "sqlite:///%s/test.db" % tmpdir
+ print db_uri
+ data.create_schemas(db_uri)
+
+ engine = create_engine(db_uri)
+ insp = reflection.Inspector.from_engine(engine)
+
+ expected_tables = [
+ 'action_taken',
+ 'agency',
+ 'cbsa',
+ 'county',
+ 'denial_reason',
+ 'edit_status',
+ 'ethnicity',
+ 'hmda',
+ 'hoepa',
+ 'lien_status',
+ 'loan_purpose',
+ 'loan_type',
+ 'owner_occupancy',
+ 'preapproval',
+ 'property_type',
+ 'purchaser_type',
+ 'race',
+ 'sex',
+ 'state',
+ ]
+
+ assert expected_tables == insp.get_table_names()
View
@@ -1,11 +1,28 @@
#!/usr/bin/env python
from setuptools import setup
+from setuptools.command.test import test as TestCommand
+import sys
+
+
+class PyTest(TestCommand):
+ def finalize_options(self):
+ TestCommand.finalize_options(self)
+ self.test_args = []
+ self.test_suite = True
+
+ def run_tests(self):
+ #import here, cause outside the eggs aren't loaded
+ import pytest
+ errno = pytest.main(self.test_args)
+ sys.exit(errno)
+
def readme():
with open('README.rst') as f:
return f.read()
+
def requirements():
with open('requirements.txt') as f:
return map(lambda x: x.strip(), f.readlines())
@@ -27,6 +44,8 @@ def requirements():
'bin/hmda_load_geo',
'bin/hmda_extract_geo_data'
],
+ tests_require=['pytest'],
+ cmdclass={'test': PyTest},
zip_safe=False,
classifiers=[
'Development Status :: 3 - Alpha',

0 comments on commit eb8e3ac

Please sign in to comment.