Пример #1
0
def mock_model():
    return mock.MagicMock(
        __class__=ParsedModelNode,
        alias='model_one',
        name='model_one',
        database='dbt',
        schema='analytics',
        resource_type=NodeType.Model,
        unique_id='model.root.model_one',
        fqn=['root', 'model_one'],
        package_name='root',
        original_file_path='model_one.sql',
        root_path='/usr/src/app',
        refs=[],
        sources=[],
        depends_on=DependsOn(),
        config=NodeConfig.from_dict({
            'enabled': True,
            'materialized': 'view',
            'persist_docs': {},
            'post-hook': [],
            'pre-hook': [],
            'vars': {},
            'quoting': {},
            'column_types': {},
            'tags': [],
        }),
        tags=[],
        path='model_one.sql',
        raw_sql='',
        description='',
        columns={},
    )
Пример #2
0
    def setUp(self):
        dbt.flags.STRICT_MODE = True

        self.maxDiff = None

        self.root_project_config = {
            'name': 'root_project',
            'version': '0.1',
            'profile': 'test',
            'project-root': os.path.abspath('.'),
        }

        self.snowplow_project_config = {
            'name': 'snowplow',
            'version': '0.1',
            'project-root': os.path.abspath('./dbt_modules/snowplow'),
        }

        self.model_config = NodeConfig.from_dict({
            'enabled': True,
            'materialized': 'view',
            'persist_docs': {},
            'post-hook': [],
            'pre-hook': [],
            'vars': {},
            'quoting': {},
            'column_types': {},
            'tags': [],
        })
Пример #3
0
 def setUp(self):
     self.model = ParsedModelNode(
         alias='model_one',
         name='model_one',
         database='dbt',
         schema='analytics',
         resource_type=NodeType.Model,
         unique_id='model.root.model_one',
         fqn=['root', 'model_one'],
         package_name='root',
         original_file_path='model_one.sql',
         root_path='/usr/src/app',
         refs=[],
         sources=[],
         depends_on=DependsOn(),
         config=NodeConfig.from_dict({
             'enabled': True,
             'materialized': 'view',
             'persist_docs': {},
             'post-hook': [],
             'pre-hook': [],
             'vars': {},
             'quoting': {},
             'column_types': {},
             'tags': [],
         }),
         tags=[],
         path='model_one.sql',
         raw_sql='',
         description='',
         columns={},
         checksum=FileHash.from_contents(''),
     )
     self.context = mock.MagicMock()
     self.provider = VarProvider({})
     self.config = mock.MagicMock(config_version=2,
                                  vars=self.provider,
                                  cli_vars={},
                                  project_name='root')
Пример #4
0
    def setUp(self):
        dbt.flags.STRICT_MODE = True

        self.maxDiff = None

        self.model_config = NodeConfig.from_dict({
            'enabled': True,
            'materialized': 'view',
            'persist_docs': {},
            'post-hook': [],
            'pre-hook': [],
            'vars': {},
            'quoting': {},
            'column_types': {},
            'tags': [],
        })

        project_cfg = {
            'name': 'X',
            'version': '0.1',
            'profile': 'test',
            'project-root': '/tmp/dbt/does-not-exist',
            'config-version': 2,
        }
        profile_cfg = {
            'outputs': {
                'test': {
                    'type': 'postgres',
                    'dbname': 'postgres',
                    'user': '******',
                    'host': 'thishostshouldnotexist',
                    'pass': '******',
                    'port': 5432,
                    'schema': 'public'
                }
            },
            'target': 'test'
        }

        self.config = config_from_parts_or_dicts(project_cfg, profile_cfg)

        self._generate_runtime_model_patch = patch.object(dbt.compilation, 'generate_runtime_model')
        self.mock_generate_runtime_model = self._generate_runtime_model_patch.start()

        inject_adapter(Plugin.adapter(self.config), Plugin)

        # self.mock_adapter = PostgresAdapter MagicMock(type=MagicMock(return_value='postgres'))
        # self.mock_adapter.Relation =
        # self.mock_adapter.get_compiler.return_value = dbt.compilation.Compiler
        # self.mock_plugin = MagicMock(
        #     adapter=MagicMock(
        #         credentials=MagicMock(return_value='postgres')
        #     )
        # )
        # inject_adapter(self.mock_adapter, self.mock_plugin)
        # so we can make an adapter

        def mock_generate_runtime_model_context(model, config, manifest):
            def ref(name):
                result = f'__dbt__cte__{name}'
                unique_id = f'model.root.{name}'
                model.extra_ctes.append(InjectedCTE(id=unique_id, sql=None))
                return result
            return {'ref': ref}

        self.mock_generate_runtime_model.side_effect = mock_generate_runtime_model_context
Пример #5
0
    def setUp(self):
        dbt.flags.STRICT_MODE = True

        self.maxDiff = None

        self.model_config = NodeConfig.from_dict({
            'enabled': True,
            'materialized': 'view',
            'persist_docs': {},
            'post-hook': [],
            'pre-hook': [],
            'vars': {},
            'quoting': {},
            'column_types': {},
            'tags': [],
        })

        self.nested_nodes = {
            'model.snowplow.events':
            ParsedModelNode(name='events',
                            database='dbt',
                            schema='analytics',
                            alias='events',
                            resource_type=NodeType.Model,
                            unique_id='model.snowplow.events',
                            fqn=['snowplow', 'events'],
                            package_name='snowplow',
                            refs=[],
                            sources=[],
                            depends_on=DependsOn(),
                            config=self.model_config,
                            tags=[],
                            path='events.sql',
                            original_file_path='events.sql',
                            root_path='',
                            raw_sql='does not matter'),
            'model.root.events':
            ParsedModelNode(name='events',
                            database='dbt',
                            schema='analytics',
                            alias='events',
                            resource_type=NodeType.Model,
                            unique_id='model.root.events',
                            fqn=['root', 'events'],
                            package_name='root',
                            refs=[],
                            sources=[],
                            depends_on=DependsOn(),
                            config=self.model_config,
                            tags=[],
                            path='events.sql',
                            original_file_path='events.sql',
                            root_path='',
                            raw_sql='does not matter'),
            'model.root.dep':
            ParsedModelNode(name='dep',
                            database='dbt',
                            schema='analytics',
                            alias='dep',
                            resource_type=NodeType.Model,
                            unique_id='model.root.dep',
                            fqn=['root', 'dep'],
                            package_name='root',
                            refs=[['events']],
                            sources=[],
                            depends_on=DependsOn(nodes=['model.root.events']),
                            config=self.model_config,
                            tags=[],
                            path='multi.sql',
                            original_file_path='multi.sql',
                            root_path='',
                            raw_sql='does not matter'),
            'model.root.nested':
            ParsedModelNode(name='nested',
                            database='dbt',
                            schema='analytics',
                            alias='nested',
                            resource_type=NodeType.Model,
                            unique_id='model.root.nested',
                            fqn=['root', 'nested'],
                            package_name='root',
                            refs=[['events']],
                            sources=[],
                            depends_on=DependsOn(nodes=['model.root.dep']),
                            config=self.model_config,
                            tags=[],
                            path='multi.sql',
                            original_file_path='multi.sql',
                            root_path='',
                            raw_sql='does not matter'),
            'model.root.sibling':
            ParsedModelNode(name='sibling',
                            database='dbt',
                            schema='analytics',
                            alias='sibling',
                            resource_type=NodeType.Model,
                            unique_id='model.root.sibling',
                            fqn=['root', 'sibling'],
                            package_name='root',
                            refs=[['events']],
                            sources=[],
                            depends_on=DependsOn(nodes=['model.root.events']),
                            config=self.model_config,
                            tags=[],
                            path='multi.sql',
                            original_file_path='multi.sql',
                            root_path='',
                            raw_sql='does not matter'),
            'model.root.multi':
            ParsedModelNode(
                name='multi',
                database='dbt',
                schema='analytics',
                alias='multi',
                resource_type=NodeType.Model,
                unique_id='model.root.multi',
                fqn=['root', 'multi'],
                package_name='root',
                refs=[['events']],
                sources=[],
                depends_on=DependsOn(
                    nodes=['model.root.nested', 'model.root.sibling']),
                config=self.model_config,
                tags=[],
                path='multi.sql',
                original_file_path='multi.sql',
                root_path='',
                raw_sql='does not matter'),
        }
        for node in self.nested_nodes.values():
            node.validate(node.to_dict())