### Question:
HavingTranslationStage implements TranslationStage { @Override public void perform(TranslatorContext context) { Expression expression = context.getQuery().getHavingQualifier(); QualifierTranslator translator = context.getQualifierTranslator(); Node qualifier = translator.translate(expression); if(qualifier != null) { context.getSelectBuilder().having(qualifier); } }  @Override void perform(TranslatorContext context);  }### Answer:
@Test public void perform() { HavingTranslationStage stage = new HavingTranslationStage(); stage.perform(context); Node select = context.getSelectBuilder().build(); assertEquals(1, select.getChildrenCount()); assertThat(select.getChild(0), instanceOf(HavingNode.class)); Node op = select.getChild(0).getChild(0); assertThat(op, instanceOf(OpExpressionNode.class)); assertEquals(">=", ((OpExpressionNode)op).getOp()); assertEquals(2, op.getChildrenCount()); assertThat(op.getChild(0), instanceOf(ColumnNode.class)); assertThat(op.getChild(1), instanceOf(ValueNode.class)); ColumnNode columnNode = (ColumnNode)op.getChild(0); ValueNode valueNode = (ValueNode)op.getChild(1); assertEquals("path", columnNode.getColumn()); assertEquals(10, valueNode.getValue()); }