def test_views(self):
        """test views """
        metadata = load_from_file("complex_db.yaml")
        person_name = find_table_name(metadata, 'Person')
        (view, _) = make_view_without_table(metadata,
                   person_name, 'FullName')
#        process_dataset = find_table(view, 'ProcessedDatasetView')
#        data_tier = find_table(view, 'DataTierView')
#        process_dataset = find_table(view, 'PrimaryDatasetView')
#        files = find_table(view, 'FilesView')

        # This shows what happens to the foreign keys
        #      when you make a select statement.
        for table_name in view.tables:
            table = view.tables[table_name]
            for f_key in table.foreign_keys:
                vals = {}
                vals['table'] = table_name
                vals['column'] = f_key.parent.name
                if f_key.parent.table.__dict__.has_key('name'):
                    vals['from'] = f_key.parent.table.name
                else:
                    vals['from'] = "none"
                if f_key.column.table.__dict__.has_key('name'):
                    vals['to'] = f_key.column.table
                else:
                    vals['to'] = "none"
                _LOGGER.debug(
                    "test_views %(table)s.%(column)s %(from)s->%(to)s"
                    % vals)
    def test_view_build(self):
        """test view build """
        _LOGGER.debug("test_view_build start")
        metadata = load_from_file("complex_db.yaml")
        person_name = find_table_name(metadata, 'Person')
        (view, foreign_keys) = make_view_without_table(metadata,
                                 person_name, 'FullName')
#        for table_name in view.tables:
#            print table_name, list(view.tables[table_name].c)
#        files = find_table(view, 'FilesView')
        process_dataset = find_table(view, 'ProcessedDatasetView')
        data_tier = find_table(view, 'DataTierView')
        process_dataset = find_table(view, 'PrimaryDatasetView')
        query_builder = Schema(view.tables, foreign_keys)
        select_test = select([process_dataset.c.Name, data_tier.c.Name,
                             process_dataset.c.Description],
            process_dataset.c.ID==0)
        query = query_builder.build_query(select_test)
        _LOGGER.debug("test_view_build query: " + str(query))
        _LOGGER.debug("test_view_build finish")
    def test_live_view(self):
        """ test live views"""
        _LOGGER.debug("test_live_view start")
        metadata = self.metadata
        person_name = find_table_name(metadata, 'Person')
        (view, foreignkeys) = make_view_without_table(metadata,
                              person_name, 'DistinguishedName')
#        for table_name in view.tables:
#            print table_name, list(view.tables[table_name].c)
        process_dataset = find_table(view, 'ProcessedDatasetView')
        app_exec = find_table(view, 'AppExecutableView')
        select_test = select([process_dataset.c.Name,
                              app_exec.c.ExecutableName])
        query_builder = Schema(view.tables, foreignkeys)
        query = query_builder.build_query(select_test)
#        print "test_live_view query:", query
        results = query.execute()
        rows = results.fetchall()

        _LOGGER.debug("test_live_view query: " + str(query))
        _LOGGER.debug("test_live_view result: %s" % (rows,))
#        print "test_live_view result: %s" % (rows,)
        _LOGGER.debug("test_live_view finish")