package io.ebeaninternal.server.deploy;
import io.ebeaninternal.server.deploy.meta.DeployTableJoin;
import io.ebeaninternal.server.deploy.meta.DeployTableJoinColumn;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class TableJoinTest {
DeployTableJoinColumn col(String localDbColumn, String foreignDbColumn, boolean insertable, boolean updateable) {
return new DeployTableJoinColumn(localDbColumn, foreignDbColumn, insertable, updateable);
}
TableJoin table(String tableName, String col1, String col2) {
DeployTableJoin deploy = new DeployTableJoin();
deploy.setTable(tableName);
deploy.addJoinColumn(col(col1, col2, true, true));
return new TableJoin(deploy);
}
TableJoin table(String tableName, String col1, String col2, String col3, String col4) {
DeployTableJoin deploy = new DeployTableJoin();
deploy.setTable(tableName);
deploy.addJoinColumn(col(col1, col2, true, true));
deploy.addJoinColumn(col(col3, col4, true, true));
return new TableJoin(deploy);
}
@Test
public void equals_when_same() {
assertSame(table("myTable", "a", "b"), table("myTable", "a", "b"));
}
@Test
public void equals_when_diffTable() {
assertDifferent(table("myTable", "a", "b"), table("diffTable", "a", "b"));
}
@Test
public void equals_when_diffColumn() {
assertDifferent(table("myTable", "a", "b"), table("myTable", "c", "b"));
}
@Test
public void equals_when_moreColumns() {
assertDifferent(table("myTable", "a", "b"), table("myTable", "a", "b", "c", "d"));
}
@Test
public void equals_when_lessColumns() {
assertDifferent(table("myTable", "a", "b", "c", "d"), table("myTable", "a", "b"));
}
void assertSame(TableJoin join1, TableJoin join2) {
assertThat(join1).isEqualTo(join1);
assertThat(join1.hashCode()).isEqualTo(join1.hashCode());
}
void assertDifferent(TableJoin join1, TableJoin join2) {
assertThat(join1).isNotEqualTo(join2);
assertThat(join1.hashCode()).isNotEqualTo(join2.hashCode());
}
}