@Test
  public void testConvertQuery() {
    String domainName = "test_domain";
    String modelId = "model_id";
    String columnId = "column_id";
    LogicalColumn mockColumn = mock(LogicalColumn.class);
    doReturn(DataType.STRING).when(mockColumn).getDataType();
    doReturn(columnId).when(mockColumn).getId();
    LogicalModel mockModel = mock(LogicalModel.class);
    doReturn(mockColumn).when(mockModel).findLogicalColumn(columnId);
    Domain mockDomain = mock(Domain.class);
    doReturn(mockModel).when(mockDomain).findLogicalModel(modelId);
    IMetadataDomainRepository mockRepo = mock(IMetadataDomainRepository.class);
    doReturn(mockDomain).when(mockRepo).getDomain(domainName);
    org.pentaho.metadata.model.Category category = mock(org.pentaho.metadata.model.Category.class);
    doReturn(category).when(spyMetadataServiceUtil).getCategory(columnId, mockModel);
    doReturn(mockRepo).when(spyMetadataServiceUtil).getDomainRepository();

    Query srcQuery = createMockQuery(domainName, modelId, columnId);
    ModelInfo info = new ModelInfo();
    info.setGroupId(domainName);
    info.setModelId(modelId);

    org.pentaho.metadata.query.model.Query result =
        spyMetadataServiceUtil.convertQuery(srcQuery, info);

    assertNotNull(result);
    assertEquals(mockDomain, result.getDomain());
    assertFalse(result.getDisableDistinct());
    assertEquals(mockModel, result.getLogicalModel());
    assertEquals(1, result.getSelections().size());
    Selection selection = result.getSelections().get(0);
    assertEquals(mockColumn, selection.getLogicalColumn());
    assertEquals(category, selection.getCategory());
    assertEquals(AggregationType.SUM, selection.getActiveAggregationType());
    assertEquals(AggregationType.SUM, selection.getAggregationType());
    assertEquals(1, result.getConstraints().size());
    Constraint constraint = result.getConstraints().get(0);
    assertEquals(CombinationType.AND, constraint.getCombinationType());
    assertNull(constraint.getFormula());
    assertEquals(1, result.getOrders().size());
    org.pentaho.metadata.query.model.Order resOrder = result.getOrders().get(0);
    assertEquals(selection, resOrder.getSelection());
    assertEquals(Type.ASC, resOrder.getType());
    assertEquals(1, result.getParameters().size());
    org.pentaho.metadata.query.model.Parameter param = result.getParameters().get(0);
    assertEquals("parameter_name", param.getName());
    assertEquals("val_0", param.getDefaultValue());
    assertEquals(DataType.STRING, param.getType());
  }