diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java new file mode 100644 index 0000000..4184214 --- /dev/null +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java @@ -0,0 +1,93 @@ +package org.javawebstack.orm.test.querybuilding; + +import org.javawebstack.orm.Model; +import org.javawebstack.orm.ORM; +import org.javawebstack.orm.Repo; +import org.javawebstack.orm.exception.ORMConfigurationException; +import org.javawebstack.orm.query.Query; +import org.javawebstack.orm.test.ORMTestCase; +import org.javawebstack.orm.test.shared.models.Datatype; +import org.javawebstack.orm.test.shared.models.EmptyUUIDModel; +import org.javawebstack.orm.test.shared.verification.QueryVerification; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.javawebstack.orm.test.shared.setup.ModelSetup.setUpModel; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class WhereClauseTest extends ORMTestCase { + + private Repo repo; + + @BeforeEach + void setUp() { + this.repo = setUpModel(Datatype.class); + } + + /* + * Normal Cases + */ + + @Test + void testImplicitEqualOperation() { + Query query = repo.where("wrapper_boolean", true); + performEqualityTest("`wrapper_boolean` = ?",query); + } + + @Test + void testImplicitEqualOperationReverse() { + Query query = repo.where(true, "wrapper_boolean"); + performEqualityTest("? = `wrapper_boolean`", query); + } + + @Test + void testImplicitEqualOperationWithWrongColumnName() { + // Note the missing b + Query query = repo.where("wrapper_oolean", true); + performEqualityTest("? = ?", query); + } + + @Test + void testExplicitEqualOperation() { + Query query = repo.where("wrapper_boolean", "=",true); + performEqualityTest("`wrapper_boolean` = ?", query); + } + + @Test + void testExplicitEqualOperationReverse() { + Query query = repo.where(true, "=" , "wrapper_boolean"); + performEqualityTest("? = `wrapper_boolean`", query); + } + + @Test + void testExplicitEqualOperationWithWrongColumnName() { + // Note the missing b + Query query = repo.where("wrapper_oolean", "=", true); + performEqualityTest("? = ?", query); + } + + @Test + void testImplicitEqualOnId() { + Query query = repo.whereId(3); + performEqualityTest("`id` = ?", query); + } + + @Test + void testImplicitEqualOnUuid() throws ORMConfigurationException { + ORM.register(EmptyUUIDModel.class, sql()); + Query query = ORM.repo(EmptyUUIDModel.class).whereId("unique-stuff"); + performEqualityTest("`uuid` = ?", query); + } + + @Test + void testNonsenseOperation() { + Query query = repo.where("wrapper_boolean", "NOOPERATION", true); + performEqualityTest("`wrapper_boolean` NOOPERATION ?", query); + } + + + + private void performEqualityTest(String expectedtring, Query query) { + new QueryVerification(query).assertSectionEquals(expectedtring); + } +} diff --git a/src/test/java/org/javawebstack/orm/test/shared/models/EmptyUUIDModel.java b/src/test/java/org/javawebstack/orm/test/shared/models/EmptyUUIDModel.java new file mode 100644 index 0000000..ff10669 --- /dev/null +++ b/src/test/java/org/javawebstack/orm/test/shared/models/EmptyUUIDModel.java @@ -0,0 +1,11 @@ +package org.javawebstack.orm.test.shared.models; + +import org.javawebstack.orm.Model; +import org.javawebstack.orm.annotation.Column; + +import java.util.UUID; + +public class EmptyUUIDModel extends Model { + @Column + UUID uuid; +}