Skip to content

Commit

Permalink
[Bug #178] Add test reproducing the issue.
Browse files Browse the repository at this point in the history
  • Loading branch information
ledsoft committed Jun 17, 2023
1 parent 928f561 commit f25c67d
Showing 1 changed file with 44 additions and 3 deletions.
Expand Up @@ -18,7 +18,12 @@
import cz.cvut.kbss.jopa.model.query.criteria.Predicate;
import cz.cvut.kbss.jopa.model.query.criteria.Root;
import cz.cvut.kbss.jopa.sessions.CriteriaBuilder;
import cz.cvut.kbss.jopa.test.*;
import cz.cvut.kbss.jopa.test.OWLClassA;
import cz.cvut.kbss.jopa.test.OWLClassA_;
import cz.cvut.kbss.jopa.test.OWLClassD;
import cz.cvut.kbss.jopa.test.OWLClassJ;
import cz.cvut.kbss.jopa.test.OWLClassM;
import cz.cvut.kbss.jopa.test.OWLClassT;
import cz.cvut.kbss.jopa.test.environment.DataAccessor;
import cz.cvut.kbss.jopa.test.environment.Generators;
import cz.cvut.kbss.jopa.test.environment.TestEnvironment;
Expand All @@ -28,14 +33,22 @@
import org.slf4j.Logger;

import java.net.URI;
import java.util.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.stream.Collectors;

import static cz.cvut.kbss.jopa.test.environment.util.ContainsSameEntities.containsSameEntities;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

public abstract class CriteriaRunner extends BaseQueryRunner {

Expand Down Expand Up @@ -426,4 +439,32 @@ public void testSelectByIdentifierAndAttributeEquality() {
final OWLClassA result = getEntityManager().createQuery(query).getSingleResult();
assertEquals(instance.getUri(), result.getUri());
}

/**
* Bug #178.
*/
@Test
public void selectByIdAndRelatedAttributeValueIsCommutative() {
final OWLClassD instance = Generators.getRandomItem(QueryTestEnvironment.getData(OWLClassD.class));
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
final CriteriaQuery<OWLClassD> queryIdFirst = cb.createQuery(OWLClassD.class);
final Root<OWLClassD> rootIdFirst = queryIdFirst.from(OWLClassD.class);
queryIdFirst.select(rootIdFirst).where(
cb.equal(rootIdFirst.getAttr("uri"), instance.getUri()),
cb.equal(rootIdFirst.getAttr("owlClassA").getAttr("stringAttribute"), instance.getOwlClassA()
.getStringAttribute(), TestEnvironment.PERSISTENCE_LANGUAGE));

final OWLClassD resultIfFirst = getEntityManager().createQuery(queryIdFirst).getSingleResult();
assertEquals(instance.getUri(), resultIfFirst.getUri());


final CriteriaQuery<OWLClassD> queryIdSecond = cb.createQuery(OWLClassD.class);
final Root<OWLClassD> rootIdSecond = queryIdSecond.from(OWLClassD.class);
queryIdSecond.select(rootIdSecond).where(
cb.equal(rootIdSecond.getAttr("owlClassA").getAttr("stringAttribute"), instance.getOwlClassA()
.getStringAttribute(), TestEnvironment.PERSISTENCE_LANGUAGE),
cb.equal(rootIdSecond.getAttr("uri"), instance.getUri()));
final OWLClassD resultIdSecond = getEntityManager().createQuery(queryIdSecond).getSingleResult();
assertEquals(instance.getUri(), resultIdSecond.getUri());
}
}

0 comments on commit f25c67d

Please sign in to comment.