package io.ebean;
import io.ebean.RawSql;
import io.ebean.RawSqlBuilder;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class RawSqlKeyTest {
@Test
public void equals_when_sameParsedSql() {
RawSql.Key key = RawSqlBuilder.parse("select id from customer").create().getKey();
RawSql.Key key1 = RawSqlBuilder.parse("select id from customer").create().getKey();
assertSame(key, key1);
}
@Test
public void equals_when_diffParsedSql() {
RawSql.Key key = RawSqlBuilder.parse("select id from customer").create().getKey();
RawSql.Key key1 = RawSqlBuilder.parse("select name from customer").create().getKey();
assertDifferent(key, key1);
}
@Test
public void equals_when_sameColumnMapping() {
RawSql.Key key = RawSqlBuilder.parse("select id from customer").columnMapping("id", "b").create().getKey();
RawSql.Key key1 = RawSqlBuilder.parse("select id from customer").columnMapping("id", "b").create().getKey();
assertSame(key, key1);
}
@Test
public void equals_when_diffColumnMapping() {
RawSql.Key key = RawSqlBuilder.parse("select a from customer").columnMapping("a", "b").create().getKey();
RawSql.Key key1 = RawSqlBuilder.parse("select a from customer").columnMapping("a", "c").create().getKey();
assertDifferent(key, key1);
}
@Test
public void equals_when_parseToUnpased() {
RawSql.Key key = RawSqlBuilder.parse("select a from customer").columnMapping("a", "b").create().getKey();
RawSql.Key key1 = RawSqlBuilder.unparsed("select a from customer").columnMapping("a", "c").create().getKey();
assertDifferent(key, key1);
}
private void assertSame(RawSql.Key key, RawSql.Key key1) {
assertThat(key).isEqualTo(key1);
assertThat(key.hashCode()).isEqualTo(key1.hashCode());
}
private void assertDifferent(RawSql.Key key, RawSql.Key key1) {
assertThat(key).isNotEqualTo(key1);
assertThat(key.hashCode()).isNotEqualTo(key1.hashCode());
}
}