mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 10:39:30 +00:00 
			
		
		
		
	
		
			
	
	
		
			92 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import pytest | ||
|  | 
 | ||
|  | from metadata.generated.schema.entity.data.table import Column, DataType | ||
|  | from metadata.generated.schema.type.basic import Markdown | ||
|  | from metadata.ingestion.source.dashboard.powerbi.metadata import PowerbiSource | ||
|  | from metadata.ingestion.source.dashboard.powerbi.models import ( | ||
|  |     PowerBiMeasures, | ||
|  |     PowerBiTable, | ||
|  | ) | ||
|  | 
 | ||
|  | test_cases = { | ||
|  |     "visible_measure": { | ||
|  |         "input": [ | ||
|  |             PowerBiMeasures( | ||
|  |                 name="test_measure", | ||
|  |                 expression="SUM(Sales)", | ||
|  |                 description="Test Description", | ||
|  |                 isHidden=False, | ||
|  |             ) | ||
|  |         ], | ||
|  |         "expected": [ | ||
|  |             Column( | ||
|  |                 name="test_measure", | ||
|  |                 dataType=DataType.MEASURE_VISIBLE, | ||
|  |                 dataTypeDisplay=DataType.MEASURE_VISIBLE, | ||
|  |                 description=Markdown("Test Description\n\nExpression : SUM(Sales)"), | ||
|  |             ) | ||
|  |         ], | ||
|  |     }, | ||
|  |     "hidden_measure": { | ||
|  |         "input": [ | ||
|  |             PowerBiMeasures( | ||
|  |                 name="hidden_measure", | ||
|  |                 expression="AVG(Profit)", | ||
|  |                 description="Hidden", | ||
|  |                 isHidden=True, | ||
|  |             ) | ||
|  |         ], | ||
|  |         "expected": [ | ||
|  |             Column( | ||
|  |                 name="hidden_measure", | ||
|  |                 dataType=DataType.MEASURE_HIDDEN, | ||
|  |                 dataTypeDisplay=DataType.MEASURE_HIDDEN, | ||
|  |                 description=Markdown("Hidden\n\nExpression : AVG(Profit)"), | ||
|  |             ) | ||
|  |         ], | ||
|  |     }, | ||
|  |     "complex_expression": { | ||
|  |         "input": [ | ||
|  |             PowerBiMeasures( | ||
|  |                 name="complex_measure", | ||
|  |                 expression="SUM(Table[Column]) - SUM(OtherTable[OtherColumn])", | ||
|  |                 isHidden=False, | ||
|  |             ) | ||
|  |         ], | ||
|  |         "expected": [ | ||
|  |             Column( | ||
|  |                 name="complex_measure", | ||
|  |                 dataType=DataType.MEASURE_VISIBLE, | ||
|  |                 dataTypeDisplay=DataType.MEASURE_VISIBLE, | ||
|  |                 description=Markdown( | ||
|  |                     "Expression : SUM(Table[Column]) - SUM(OtherTable[OtherColumn])" | ||
|  |                 ), | ||
|  |             ) | ||
|  |         ], | ||
|  |     }, | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | class MockPowerbiSource(PowerbiSource): | ||
|  |     def __init__(self): | ||
|  |         pass | ||
|  | 
 | ||
|  | 
 | ||
|  | @pytest.mark.parametrize("test_case_name, test_case", test_cases.items()) | ||
|  | def test_get_child_measures(test_case_name, test_case): | ||
|  |     powerbi_source = MockPowerbiSource() | ||
|  |     test_table = PowerBiTable( | ||
|  |         name="test_table", | ||
|  |         measures=test_case["input"], | ||
|  |     ) | ||
|  | 
 | ||
|  |     result_columns = powerbi_source._get_child_measures(test_table) | ||
|  | 
 | ||
|  |     assert result_columns | ||
|  | 
 | ||
|  |     for expected_col, actual_col in zip(test_case["expected"], result_columns): | ||
|  |         assert actual_col.name == expected_col.name | ||
|  |         assert actual_col.dataType == expected_col.dataType | ||
|  |         assert actual_col.dataTypeDisplay == expected_col.dataTypeDisplay | ||
|  |         assert actual_col.description == expected_col.description |