From aa894ec020df77e5e985157a68f0a0963f073553 Mon Sep 17 00:00:00 2001 From: Timothy Gillespie Date: Sun, 21 Mar 2021 10:41:35 +0100 Subject: [PATCH 1/6] Add EmptyUUIDModel --- .../orm/test/shared/models/EmptyUUIDModel.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/test/java/org/javawebstack/orm/test/shared/models/EmptyUUIDModel.java 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; +} From a92f808982b779cf7010056764c6de58f2bbfdf6 Mon Sep 17 00:00:00 2001 From: Timothy Gillespie Date: Sun, 21 Mar 2021 10:42:12 +0100 Subject: [PATCH 2/6] Add ModelSetup to unify setup codes --- .../orm/test/shared/setup/ModelSetup.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/test/java/org/javawebstack/orm/test/shared/setup/ModelSetup.java diff --git a/src/test/java/org/javawebstack/orm/test/shared/setup/ModelSetup.java b/src/test/java/org/javawebstack/orm/test/shared/setup/ModelSetup.java new file mode 100644 index 0000000..563fbc4 --- /dev/null +++ b/src/test/java/org/javawebstack/orm/test/shared/setup/ModelSetup.java @@ -0,0 +1,22 @@ +package org.javawebstack.orm.test.shared.setup; + +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.test.shared.settings.MySQLConnectionContainer; + +public class ModelSetup extends MySQLConnectionContainer { + + public static Repo setUpModel(Class clazz) { + + // Converting to Runtime exception to avoid having to declare the thrown error which has no utility + try { + ORM.register(clazz, sql()); + } catch (ORMConfigurationException e) { + throw new RuntimeException(e); + } + + return Repo.get(clazz); + } +} From 788a7a7204748feb3f6862c8025e1f360fa18507 Mon Sep 17 00:00:00 2001 From: Timothy Gillespie Date: Sun, 21 Mar 2021 10:43:09 +0100 Subject: [PATCH 3/6] Add some first where clauses tests, some not passing --- .../test/querybuilding/WhereClauseTest.java | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java 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..7d522d0 --- /dev/null +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java @@ -0,0 +1,90 @@ +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.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.regex.Pattern; + +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); + assertContainsAfterWhere("`wrapper_boolean` = ?",query.getQueryString().getQuery()); + } + + @Test + void testImplicitEqualOperationReverse() { + Query query = repo.where(true, "wrapper_boolean"); + assertContainsAfterWhere("? = `wrapper_boolean`",query.getQueryString().getQuery()); + } + + @Test + void testImplicitEqualOperationWithWrongColumnName() { + // Note the missing b + Query query = repo.where("wrapper_oolean", true); + assertContainsAfterWhere("? = ?", query.getQueryString().getQuery()); + } + + @Test + void testExplicitEqualOperation() { + Query query = repo.where("wrapper_boolean", "=",true); + assertContainsAfterWhere("`wrapper_boolean` = ?",query.getQueryString().getQuery()); + } + + @Test + void testExplicitEqualOperationReverse() { + Query query = repo.where(true, "=" , "wrapper_boolean"); + assertContainsAfterWhere("? = `wrapper_boolean`",query.getQueryString().getQuery()); + } + + @Test + void testExplicitEqualOperationWithWrongColumnName() { + // Note the missing b + Query query = repo.where("wrapper_oolean", "=", true); + assertContainsAfterWhere("? = ?", query.getQueryString().getQuery()); + } + + @Test + void testImplicitEqualOnId() { + Query query = repo.whereId(3); + assertContainsAfterWhere("`id` = ?", query.getQueryString().getQuery()); + } + + @Test + void testImplicitEqualOnUuid() throws ORMConfigurationException { + ORM.register(EmptyUUIDModel.class, sql()); + Query query = ORM.repo(EmptyUUIDModel.class).whereId("unique-stuff"); + assertContainsAfterWhere("`uuid` = ?", query.getQueryString().getQuery()); + } + + + + private void assertContainsAfterWhere(String containedString, String completeQuery) { + String whereClause = completeQuery.split("WHERE")[1]; + assertTrue(whereClause.contains(containedString), "Expected the query to conain the string " + containedString + " after the WHERE clause, but got this: " + whereClause); + + } +} From 6f932f4790b7bb1af3204ea63fb8546b125b199d Mon Sep 17 00:00:00 2001 From: Timothy Gillespie Date: Sun, 21 Mar 2021 10:45:29 +0100 Subject: [PATCH 4/6] Add test for freely enterable operations --- .../orm/test/querybuilding/WhereClauseTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java index 7d522d0..d47397b 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java @@ -80,6 +80,12 @@ void testImplicitEqualOnUuid() throws ORMConfigurationException { assertContainsAfterWhere("`uuid` = ?", query.getQueryString().getQuery()); } + @Test + void testNonsenseOperation() { + Query query = repo.where("wrapper_boolean", "NOOPERATION", true); + assertContainsAfterWhere("`wrapper_boolean` NOOPERATION ?", query.getQueryString().getQuery()); + } + private void assertContainsAfterWhere(String containedString, String completeQuery) { From 5176d4daa9005a41f94f8902524c9afba1e0ee5a Mon Sep 17 00:00:00 2001 From: Timothy Gillespie Date: Sun, 21 Mar 2021 10:54:55 +0100 Subject: [PATCH 5/6] Fix typo --- .../javawebstack/orm/test/querybuilding/WhereClauseTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java index d47397b..95080d3 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java @@ -90,7 +90,7 @@ void testNonsenseOperation() { private void assertContainsAfterWhere(String containedString, String completeQuery) { String whereClause = completeQuery.split("WHERE")[1]; - assertTrue(whereClause.contains(containedString), "Expected the query to conain the string " + containedString + " after the WHERE clause, but got this: " + whereClause); + assertTrue(whereClause.contains(containedString), "Expected the query to contain the string " + containedString + " after the WHERE clause, but got this: " + whereClause); } } From 720a321280b483c886c4a872a26d59db7bf593a2 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Thu, 1 Apr 2021 21:57:03 +0200 Subject: [PATCH 6/6] Change over to QueryVerification (needs the Order By Branch) --- .../test/querybuilding/WhereClauseTest.java | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java index 95080d3..4184214 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/WhereClauseTest.java @@ -8,11 +8,10 @@ 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 java.util.regex.Pattern; - import static org.javawebstack.orm.test.shared.setup.ModelSetup.setUpModel; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -32,65 +31,63 @@ void setUp() { @Test void testImplicitEqualOperation() { Query query = repo.where("wrapper_boolean", true); - assertContainsAfterWhere("`wrapper_boolean` = ?",query.getQueryString().getQuery()); + performEqualityTest("`wrapper_boolean` = ?",query); } @Test void testImplicitEqualOperationReverse() { Query query = repo.where(true, "wrapper_boolean"); - assertContainsAfterWhere("? = `wrapper_boolean`",query.getQueryString().getQuery()); + performEqualityTest("? = `wrapper_boolean`", query); } @Test void testImplicitEqualOperationWithWrongColumnName() { // Note the missing b Query query = repo.where("wrapper_oolean", true); - assertContainsAfterWhere("? = ?", query.getQueryString().getQuery()); + performEqualityTest("? = ?", query); } @Test void testExplicitEqualOperation() { Query query = repo.where("wrapper_boolean", "=",true); - assertContainsAfterWhere("`wrapper_boolean` = ?",query.getQueryString().getQuery()); + performEqualityTest("`wrapper_boolean` = ?", query); } @Test void testExplicitEqualOperationReverse() { Query query = repo.where(true, "=" , "wrapper_boolean"); - assertContainsAfterWhere("? = `wrapper_boolean`",query.getQueryString().getQuery()); + performEqualityTest("? = `wrapper_boolean`", query); } @Test void testExplicitEqualOperationWithWrongColumnName() { // Note the missing b Query query = repo.where("wrapper_oolean", "=", true); - assertContainsAfterWhere("? = ?", query.getQueryString().getQuery()); + performEqualityTest("? = ?", query); } @Test void testImplicitEqualOnId() { Query query = repo.whereId(3); - assertContainsAfterWhere("`id` = ?", query.getQueryString().getQuery()); + performEqualityTest("`id` = ?", query); } @Test void testImplicitEqualOnUuid() throws ORMConfigurationException { ORM.register(EmptyUUIDModel.class, sql()); Query query = ORM.repo(EmptyUUIDModel.class).whereId("unique-stuff"); - assertContainsAfterWhere("`uuid` = ?", query.getQueryString().getQuery()); + performEqualityTest("`uuid` = ?", query); } @Test void testNonsenseOperation() { Query query = repo.where("wrapper_boolean", "NOOPERATION", true); - assertContainsAfterWhere("`wrapper_boolean` NOOPERATION ?", query.getQueryString().getQuery()); + performEqualityTest("`wrapper_boolean` NOOPERATION ?", query); } - private void assertContainsAfterWhere(String containedString, String completeQuery) { - String whereClause = completeQuery.split("WHERE")[1]; - assertTrue(whereClause.contains(containedString), "Expected the query to contain the string " + containedString + " after the WHERE clause, but got this: " + whereClause); - + private void performEqualityTest(String expectedtring, Query query) { + new QueryVerification(query).assertSectionEquals(expectedtring); } }