예제 #1
0
파일: test_mapper.py 프로젝트: occrp/loom
class MapperTestCase(TestCase):

    def setUp(self):
        self.engine = create_fixtures()
        self.config = Config({})
        self.config._engine = self.engine
        self.config.setup()
        spec = load_config(os.path.join(FIXTURE_PATH, 'spec.yaml'))
        self.spec = Spec(self.config, spec)
        self.spec._engine = self.engine
        self.mapper = Mapper(self.config, self.spec)
        self.gen = self.mapper.generator

    def tearDown(self):
        pass

    @raises(SpecException)
    def test_invalid_table(self):
        self.gen.get_column('financials_xxx.price')

    @raises(SpecException)
    def test_no_table(self):
        self.gen.get_column('price')

    @raises(SpecException)
    def test_invalid_column(self):
        self.gen.get_column('fin.value')

    @raises(SpecException)
    def test_unaliased_table(self):
        self.gen.get_column('financials.value')

    @raises(ConfigException)
    def test_invalid_output(self):
        for x in self.gen.generate('knuffels'):
            pass

    def test_generate_records(self):
        comps = [e for e in self.gen.generate('companies')]
        assert 'companies.symbol' in comps[0], comps[0]
        assert 'fin' not in comps[0], comps[0]
        assert len(comps) == 496, len(comps)

    def test_mapping_records(self):
        for stmt in self.mapper.records('companies'):
            assert 'companies.symbol' not in stmt
            (s, p, o, t) = stmt
            assert s is not None

    def test_map_objects(self):
        self.mapper.map()
        subject = 'sp500:MMM:MMM'
        data = self.config.entities.get(subject)
        assert '$schema' in data, data
        assert data['name'] == '3M Co', data
        assert len(self.config.types) > 900, len(self.config.types)
예제 #2
0
파일: cli.py 프로젝트: occrp/loom
def map(ctx, spec_file):
    """ Map data from the database into modeled objects. """
    try:
        config = ctx.obj['CONFIG']
        spec = load_config(spec_file)
        spec = Spec(config, spec, path=spec_file)

        mapper = Mapper(config, spec)
        mapper.map()
    except LoomException as le:
        raise click.ClickException(le.message)
예제 #3
0
파일: test_mapper.py 프로젝트: occrp/loom
 def setUp(self):
     self.engine = create_fixtures()
     self.config = Config({})
     self.config._engine = self.engine
     self.config.setup()
     spec = load_config(os.path.join(FIXTURE_PATH, 'spec.yaml'))
     self.spec = Spec(self.config, spec)
     self.spec._engine = self.engine
     self.mapper = Mapper(self.config, self.spec)
     self.gen = self.mapper.generator