def test_keyed_query(self):
        schema = self.schemas['schema1']
        dao = SqlAlchemyDAO(connection=self.connection, schema=schema)
        key_def = {
            'LABEL_ENTITY': {
                'ID': 'substrate_name'
            }, 
            'QUERY': {
                'SELECT': [
                    {'EXPRESSION': '__substrate__id', 'ID': 'substrate_id'}, 
                    {'EXPRESSION': '__substrate__label', 'ID': 'substrate_name'}
                ]
            }, 
            'KEY_ENTITY': {
                'ID': 'substrate_id', 'EXPRESSION': '__result__id'
            }
        }

        query_def = {
            'GROUP_BY': [], 
            'FROM': [
                {
                    'SOURCE': {
                        'GROUP_BY': [
                            {'ID': 'cell_id'}, 
                            {'ID': 'substrate_id'}
                        ], 
                        'WHERE': [
                            [{'TYPE': 'ENTITY', 'EXPRESSION': '__result__t', 'ID': 't'}, '==', 2]
                        ], 
                        'ID': 'inner', 
                        'SELECT': [
                            {'EXPRESSION': '__result__cell_id', 'ID': 'cell_id'}, 
                            #{'EXPRESSION': '__result__substrate_id', 'ID': 'substrate_id'}
                            {'EXPRESSION': '___TOKENS__KEY', 'ID': 'substrate_id'}
                        ], 
                        'SELECT_GROUP_BY': True
                    }, 
                    'ID': 'inner'
                }, 
                {
                    'SOURCE': 'cell', 
                    'JOINS': [
                        ['inner', [{'TYPE': 'ENTITY', 'EXPRESSION': '__inner__cell_id'}, '==', {'TYPE': 'ENTITY', 'EXPRESSION': '__cell__id'}]]
                    ]
                }, 
                {
                    'SOURCE': 'substrate', 
                    'JOINS': [
                        ['inner', [{'TYPE': 'ENTITY', 'EXPRESSION': '__inner__substrate_id'}, '==', {'TYPE': 'ENTITY', 'EXPRESSION': '__substrate__id'}]]
                    ]
                }
            ], 
            'ID': 'outer', 
            'SELECT': [
                {'EXPRESSION': 'func.sum(__cell__area)', 'ID': 'sum_cell_area'}, 
                {'EXPRESSION': '__substrate__label', 'ID': 'substrate_name'}
            ]
        }

        dao.get_keyed_results(key_def=key_def, query_defs=[query_def])