### Question:
Dhis2 implements LmisServer { public List<DataSet> fetchDataSets(User user) { Dhis2Endpoint service = dhis2EndPointFactory.getEndPoint(user); DataSetSearchResponse datasets = service.searchDataSets("LMIS", "id,name,periodType,description,dataElements[name,id,attributeValues[value,attribute[id,name]],dataElementGroups[id,name,dataElementGroupSet[id,name],attributeValues[value,attribute[id,name]]"); return datasets.getDataSets(); }  @Override UserProfile validateLogin(User user); void writeJson(User user); @Override List<Category> fetchCategories(User user); List<DataSet> fetchDataSets(User user); @Override List<String> fetchOrderReasons(User user); @Override List<OrderType> fetchOrderTypes(User user); @Override List<CommodityActionValue> fetchCommodityActionValues(User user); @Override List<CommodityActionValue> fetchIndicatorValues(User user, List<Commodity> commodities); @Override List<CommodityActionValue> fetchAllocations(User user); @Override DataValueSetPushResponse pushDataValueSet(DataValueSet valueSet, User user); @Override Integer fetchIntegerConstant(User user, String constantKey); @Override String fetchPhoneNumberConstant(User user, String constantKey, String defaultValue); @Override String fetchLatestVersion(); List<CommodityActionValue> convertDataValuesToCommodityActions(List<DataValue> values); List<CommodityActionValue> convertIndicatorValuesToCommodityActions(
            List<List<String>> values, List<CommodityAction> indicatorActions); @Override List<IndicatorGroup> fetchIndicatorGroups(User user); List<Indicator> fetchClientIndicators(User user); static final String SYNC; static final SimpleDateFormat SIMPLE_DATE_FORMAT; }### Answer:
@Test public void shouldFetchDataSetsFromAPIServiceEndPoint() throws Exception { setUpSuccessHttpGetRequest(200, "dataSets.json"); List<DataSet> dataSets = dhis2.fetchDataSets(new User()); assertThat(dataSets.size(), is(3)); DataSet dataSet = dataSets.get(0); assertThat(dataSet.getName(), is("LMIS Commodities Allocated")); }