def test_should_add_view(self): view_list_config = ViewListConfig( [ViewConfig('view1'), ViewConfig('view2')]) assert view_list_config.has_view('view1') assert view_list_config.has_view('view2') assert not view_list_config.has_view('view3') view_list_config = view_list_config.add_view(ViewConfig('view3')) assert view_list_config.has_view('view3')
def test_should_sort_views_with_materialized_table(self, temp_dir: Path): view_list_config = ViewListConfig( [ViewConfig('view1'), ViewConfig('view2', materialize=True)]) (temp_dir / 'view1.sql').write_text('SELECT * FROM `{project}.{dataset}.mview2`') (temp_dir / 'view2.sql').write_text('SELECT 1') sorted_view_list_config = view_list_config.sort_insert_order(temp_dir) assert sorted_view_list_config.view_names == ['view2', 'view1']
def test_should_filter_view_names(self): view_list_config = ViewListConfig( [ViewConfig('view1'), ViewConfig('view2'), ViewConfig('view3')]) assert [ view.view_name for view in view_list_config.filter_view_names(['view1', 'view3']) ] == ['view1', 'view3']
def test_should_convert_to_view_list_dict(self): view_list_config = ViewListConfig( [ViewConfig('view1'), ViewConfig('view2')]) views_ordered_dict = view_list_config.to_views_ordered_dict('dataset1') assert views_ordered_dict == OrderedDict([('view1', { DATASET_NAME_KEY: 'dataset1', VIEW_OR_TABLE_NAME_KEY: 'view1' }), ('view2', { DATASET_NAME_KEY: 'dataset1', VIEW_OR_TABLE_NAME_KEY: 'view2' })])
def test_should_convert_to_materialized_view_ordered_dict(self): view_list_config = ViewListConfig([ ViewConfig('view1', materialize_as='output_dataset1.output_table1'), ViewConfig('view2'), ViewConfig('view3', materialize=True) ]) materialized_view_ordered_dict = ( view_list_config.to_materialized_view_ordered_dict('dataset1')) assert materialized_view_ordered_dict == OrderedDict([ ('view1', { DATASET_NAME_KEY: 'output_dataset1', VIEW_OR_TABLE_NAME_KEY: 'output_table1' }), ('view3', { DATASET_NAME_KEY: 'dataset1', VIEW_OR_TABLE_NAME_KEY: 'mview3' }) ])
def test_should_resolve_conditions(self): view_list_config = ViewListConfig([ ViewConfig('view1', conditions=[ ViewCondition( if_condition={'dataset': 'dataset1'}, materialize_as='output_dataset1.output_table1') ]) ]) assert [ view.materialize_as for view in view_list_config.resolve_conditions({'dataset': 'dataset1'}) ] == ['output_dataset1.output_table1']