package org.jtwig.integration.node;
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;
import org.jtwig.functions.FunctionRequest;
import org.jtwig.functions.JtwigFunction;
import org.jtwig.functions.SimpleJtwigFunction;
import org.jtwig.integration.AbstractIntegrationTest;
import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.jtwig.environment.EnvironmentConfigurationBuilder.configuration;
public class FilterTest extends AbstractIntegrationTest {
@Test
public void filterWithVariable() throws Exception {
String result = JtwigTemplate.inlineTemplate("{% filter var1 %}1{% endfilter %}", configuration()
.functions().add(var1Function()).and()
.build()).render(JtwigModel.newModel());
assertThat(result, is("12"));
}
@Test
public void filter() throws Exception {
String result = JtwigTemplate.inlineTemplate("{% filter lower | capitalize %}HELLO WORLD{% endfilter %}", configuration()
.build()).render(JtwigModel.newModel());
assertThat(result, is("Hello world"));
}
@Test
public void filterWithFunction() throws Exception {
String result = JtwigTemplate.inlineTemplate("{% filter var2(2) %}1{% endfilter %}", configuration()
.functions().add(var2Function()).and()
.build()).render(JtwigModel.newModel());
assertThat(result, is("123"));
}
@Test
public void filterWithComposition() throws Exception {
String result = JtwigTemplate.inlineTemplate("{% filter var1 | var3 %}1{% endfilter %}", configuration()
.functions()
.add(var1Function())
.add(var3Function())
.and()
.build()).render(JtwigModel.newModel());
assertThat(result, is("123"));
}
private JtwigFunction var3Function() {
return new SimpleJtwigFunction() {
@Override
public String name() {
return "var3";
}
@Override
public Object execute(FunctionRequest request) {
return request.get(0).toString() + "3";
}
};
}
private JtwigFunction var2Function() {
return new SimpleJtwigFunction() {
@Override
public String name() {
return "var2";
}
@Override
public Object execute(FunctionRequest request) {
return request.get(0).toString() + request.get(1).toString() + "3";
}
};
}
private JtwigFunction var1Function() {
return new SimpleJtwigFunction() {
@Override
public String name() {
return "var1";
}
@Override
public Object execute(FunctionRequest request) {
return request.get(0).toString() + "2";
}
};
}
}