@Test(expected = QueryResolutionException.class)
  public void throwsErrorOnExpressionEvaluationError() throws Exception {
    ExpressionManager expressionManager = mock(ExpressionManager.class);
    when(expressionManager.parse(DYNAMIC_SQL_TEXT, muleEvent))
        .thenThrow(new ExpressionRuntimeException(CoreMessages.createStaticMessage("Error")));

    DynamicQueryResolver queryResolver = new DynamicQueryResolver(query, null, expressionManager);

    queryResolver.resolve(null, muleEvent);
  }
  @Test(expected = QueryResolutionException.class)
  public void throwsErrorOnParsingError() throws Exception {
    ExpressionManager expressionManager = mock(ExpressionManager.class);
    String staticSqlText = STATIC_SQL_TEXT;
    when(expressionManager.parse(DYNAMIC_SQL_TEXT, muleEvent)).thenReturn(staticSqlText);

    QueryTemplateParser queryTemplateParser = mock(QueryTemplateParser.class);
    when(queryTemplateParser.parse(staticSqlText))
        .thenThrow(new QueryTemplateParsingException("Parse error"));

    DynamicQueryResolver queryResolver =
        new DynamicQueryResolver(query, queryTemplateParser, expressionManager);

    queryResolver.resolve(null, muleEvent);
  }
  @Test
  public void resolvesDynamicQuery() throws Exception {
    ExpressionManager expressionManager = mock(ExpressionManager.class);
    String staticSqlText = STATIC_SQL_TEXT;
    when(expressionManager.parse(DYNAMIC_SQL_TEXT, muleEvent)).thenReturn(staticSqlText);

    QueryTemplate expectedQueryTemplate = createQueryTemplate(staticSqlText);
    QueryTemplateParser queryTemplateParser = mock(QueryTemplateParser.class);
    when(queryTemplateParser.parse(staticSqlText)).thenReturn(expectedQueryTemplate);

    DynamicQueryResolver queryResolver =
        new DynamicQueryResolver(query, queryTemplateParser, expressionManager);

    Query resolvedQuery = queryResolver.resolve(null, muleEvent);

    assertThat(expectedQueryTemplate, sameInstance(resolvedQuery.getQueryTemplate()));
  }