2727 */
2828package org .hisp .dhis .analytics ;
2929
30+ import static org .hisp .dhis .support .Assertions .assertContainsExactly ;
31+ import static org .hisp .dhis .support .Assertions .assertNotBlank ;
3032import static org .hisp .dhis .support .Assertions .assertNotEmpty ;
3133import static org .hisp .dhis .support .Assertions .assertSize ;
3234import static org .junit .jupiter .api .Assertions .assertEquals ;
35+ import static org .junit .jupiter .api .Assertions .assertFalse ;
3336import static org .junit .jupiter .api .Assertions .assertNotNull ;
3437import static org .junit .jupiter .api .Assertions .assertTrue ;
3538
4043import org .hisp .dhis .TestFixture ;
4144import org .hisp .dhis .model .ValueType ;
4245import org .hisp .dhis .model .analytics .AnalyticsData ;
46+ import org .hisp .dhis .model .analytics .AnalyticsDimension ;
4347import org .hisp .dhis .model .analytics .AnalyticsHeader ;
48+ import org .hisp .dhis .model .analytics .AnalyticsIndicatorType ;
4449import org .hisp .dhis .model .analytics .AnalyticsMetaData ;
4550import org .hisp .dhis .model .analytics .MetaDataItem ;
51+ import org .hisp .dhis .model .dimension .DimensionItemType ;
4652import org .hisp .dhis .query .analytics .AnalyticsQuery ;
4753import org .hisp .dhis .support .TestTags ;
4854import org .junit .jupiter .api .Tag ;
@@ -130,7 +136,7 @@ void testGetAnalyticsDataWithDimensionAndNoItems() {
130136
131137 AnalyticsData data = dhis2 .getAnalyticsData (query );
132138
133- log .info (data .toString ());
139+ log .debug (data .toString ());
134140
135141 assertEquals (4 , data .getWidth ());
136142 assertSize (4 , data .getHeaders ());
@@ -140,4 +146,56 @@ void testGetAnalyticsDataWithDimensionAndNoItems() {
140146
141147 assertSize (4 , firstRow );
142148 }
149+
150+ @ Test
151+ void testGetAnalyticsDataIndicatorAndMetadataDetails () {
152+ Dhis2 dhis2 = new Dhis2 (TestFixture .DEFAULT_CONFIG );
153+
154+ AnalyticsQuery query =
155+ AnalyticsQuery .instance ()
156+ // "ANC 1 Coverage"
157+ .addDataDimension (List .of ("Uvn6LCg7dVU" ))
158+ .addPeriodDimension (List .of ("THIS_YEAR" ))
159+ // "Sierra Leone"
160+ .addOrgUnitFilter (List .of ("ImspTQPwCqd" ))
161+ .setSkipData (true )
162+ .setSkipMeta (false )
163+ .setIncludeMetadataDetails (true );
164+
165+ AnalyticsData data = dhis2 .getAnalyticsData (query );
166+
167+ AnalyticsMetaData metadata = data .getMetaData ();
168+
169+ log .info (metadata .toString ());
170+
171+ Map <String , List <String >> dimensions = metadata .getDimensions ();
172+
173+ assertContainsExactly (dimensions .get (AnalyticsDimension .DATA_X ), "Uvn6LCg7dVU" );
174+ assertContainsExactly (dimensions .get (AnalyticsDimension .ORG_UNIT ), "ImspTQPwCqd" );
175+
176+ Map <String , MetaDataItem > items = metadata .getItems ();
177+
178+ MetaDataItem indicator = items .get ("Uvn6LCg7dVU" );
179+
180+ assertNotNull (indicator );
181+ assertEquals ("Uvn6LCg7dVU" , indicator .getUid ());
182+ assertNotBlank (indicator .getName ());
183+ assertNotNull (indicator .getIndicatorType ());
184+ assertEquals (DimensionItemType .INDICATOR , indicator .getDimensionItemType ());
185+ assertEquals (ValueType .NUMBER , indicator .getValueType ());
186+
187+ AnalyticsIndicatorType indicatorType = indicator .getIndicatorType ();
188+
189+ assertNotNull (indicatorType );
190+
191+ assertNotBlank (indicatorType .getName ());
192+ assertEquals (100 , indicatorType .getFactor ());
193+ assertFalse (indicatorType .getNumber ());
194+
195+ MetaDataItem orgUnit = items .get ("ImspTQPwCqd" );
196+
197+ assertNotNull (orgUnit );
198+ assertEquals ("ImspTQPwCqd" , orgUnit .getUid ());
199+ assertNotBlank (orgUnit .getName ());
200+ }
143201}
0 commit comments