package io.ebeaninternal.server.querydefn;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class OrmQueryPropertiesParserTest {
@Test
public void when_null() {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse(null);
assertAllDefaults(res);
assertThat(res.properties).isEqualTo("");
}
@Test
public void when_empty() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("");
assertAllDefaults(res);
assertThat(res.properties).isEqualTo("");
}
@Test
public void when_hasStar() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("*");
assertAllDefaults(res);
assertThat(res.properties).isEqualTo("*");
}
@Test
public void when_hasCache() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("+cache");
assertThat(res.cache).isTrue();
assertThat(res.included).isNull();
}
@Test
public void when_hasCache_first() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("+cache,id");
assertThat(res.cache).isTrue();
assertThat(res.included).containsExactly("id");
}
@Test
public void when_hasCache_last() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("name,+cache");
assertThat(res.cache).isTrue();
assertThat(res.included).containsExactly("name");
}
@Test
public void when_hasCache_middle() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("name,+cache, id");
assertThat(res.cache).isTrue();
assertThat(res.included).containsExactly("name", "id");
}
@Test
public void when_hasReadOnly() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("+readonly");
assertThat(res.readOnly).isTrue();
assertThat(res.included).isNull();
}
@Test
public void when_hasLazy() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("+lazy");
assertThat(res.fetchConfig.getLazyBatchSize()).isEqualTo(0);
assertThat(res.included).isNull();
}
@Test
public void when_hasLazyValue() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("+lazy(20)");
assertThat(res.fetchConfig.getLazyBatchSize()).isEqualTo(20);
assertThat(res.included).isNull();
}
@Test
public void when_hasLazyValue_last() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("name,+lazy(20)");
assertThat(res.fetchConfig.getLazyBatchSize()).isEqualTo(20);
assertThat(res.included).containsExactly("name");
}
@Test
public void when_hasLazyValue_first() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("+lazy(20),id,name");
assertThat(res.fetchConfig.getLazyBatchSize()).isEqualTo(20);
assertThat(res.included).containsExactly("id", "name");
}
@Test
public void when_allProperties() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("+query(4),+lazy(5)");
assertThat(res.fetchConfig.getLazyBatchSize()).isEqualTo(5);
assertThat(res.included).isNull();
}
@Test
public void when_everything_set() throws Exception {
OrmQueryPropertiesParser.Response res = OrmQueryPropertiesParser.parse("id, name +readonly +lazy(20) +query(30) +cache");
assertThat(res.fetchConfig.getLazyBatchSize()).isEqualTo(20);
assertThat(res.fetchConfig.getQueryBatchSize()).isEqualTo(30);
assertThat(res.readOnly).isTrue();
assertThat(res.cache).isTrue();
assertThat(res.included).containsExactly("id", "name");
}
private void assertAllDefaults(OrmQueryPropertiesParser.Response res) {
assertThat(res.cache).isFalse();
assertThat(res.readOnly).isFalse();
assertThat(res.fetchConfig.getLazyBatchSize()).isEqualTo(-1);
assertThat(res.fetchConfig.getQueryBatchSize()).isEqualTo(-1);
assertThat(res.included).isNull();
}
}