Re-enabled additional tests

This commit is contained in:
Andrea Boriero 2021-08-16 13:43:35 +02:00 committed by Andrea Boriero
parent 7e4275c46e
commit 8174f8ab9d
6 changed files with 152 additions and 123 deletions

View File

@ -6,7 +6,7 @@
*/ */
//$Id: Group.java 5686 2005-02-12 07:27:32Z steveebersole $ //$Id: Group.java 5686 2005-02-12 07:27:32Z steveebersole $
package org.hibernate.test.map; package org.hibernate.orm.test.map;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -0,0 +1,148 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.orm.test.map;
import java.util.List;
import java.util.Map;
import org.hibernate.testing.orm.junit.DomainModel;
import org.hibernate.testing.orm.junit.SessionFactory;
import org.hibernate.testing.orm.junit.SessionFactoryScope;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author Gavin King
*/
@DomainModel(
xmlMappings = { "org/hibernate/orm/test/map/UserGroup.hbm.xml" }
)
@SessionFactory
public class MapIndexFormulaTest {
@AfterEach
public void tearDown(SessionFactoryScope scope) {
scope.inTransaction(
session -> {
session.createQuery( "delete from Group" ).executeUpdate();
session.createQuery( "delete from User" ).executeUpdate();
}
);
}
@Test
public void testIndexFunctionOnManyToManyMap(SessionFactoryScope scope) {
scope.inTransaction(
session -> {
session.createQuery( "from Group g join g.users u where g.name = 'something' and index(u) = 'nada'" )
.list();
session.createQuery(
"from Group g join g.users u where g.name = 'something' and minindex(u) = 'nada'" )
.list();
session.createQuery(
"from Group g join g.users u where g.name = 'something' and maxindex(u) = 'nada'" )
.list();
}
);
}
@Test
public void testIndexFormulaMap(SessionFactoryScope scope) {
User turin = new User( "turin", "tiger" );
scope.inTransaction(
session -> {
User gavin = new User( "gavin", "secret" );
Group g = new Group( "developers" );
g.getUsers().put( "gavin", gavin );
g.getUsers().put( "turin", turin );
session.persist( g );
gavin.getSession().put( "foo", new SessionAttribute( "foo", "foo bar baz" ) );
gavin.getSession().put( "bar", new SessionAttribute( "bar", "foo bar baz 2" ) );
}
);
scope.inTransaction(
session -> {
Group g = session.get( Group.class, "developers" );
assertEquals( 2, g.getUsers().size() );
g.getUsers().remove( "turin" );
Map smap = ( (User) g.getUsers().get( "gavin" ) ).getSession();
assertEquals( 2, smap.size() );
smap.remove( "bar" );
}
);
scope.inTransaction(
session -> {
Group g = session.get( Group.class, "developers" );
assertEquals( 1, g.getUsers().size() );
Map smap = ( (User) g.getUsers().get( "gavin" ) ).getSession();
assertEquals( 1, smap.size() );
User gavin = (User) g.getUsers().put( "gavin", turin );
session.delete( gavin );
assertEquals(
0l,
session.createQuery( "select count(*) from SessionAttribute" ).uniqueResult()
);
}
);
scope.inTransaction(
session -> {
Group g = session.get( Group.class, "developers" );
assertEquals( g.getUsers().size(), 1 );
User t = (User) g.getUsers().get( "turin" );
Map smap = t.getSession();
assertEquals( smap.size(), 0 );
assertEquals(
1l,
session.createQuery( "select count(*) from User" ).uniqueResult()
);
session.delete( g );
session.delete( t );
assertEquals(
0l,
session.createQuery( "select count(*) from User" ).uniqueResult()
);
}
);
}
@Test
@SuppressWarnings({ "unchecked" })
public void testSQLQuery(SessionFactoryScope scope) {
scope.inTransaction(
session -> {
User gavin = new User( "gavin", "secret" );
User turin = new User( "turin", "tiger" );
gavin.getSession().put( "foo", new SessionAttribute( "foo", "foo bar baz" ) );
gavin.getSession().put( "bar", new SessionAttribute( "bar", "foo bar baz 2" ) );
session.persist( gavin );
session.persist( turin );
session.flush();
session.clear();
List results = session.getNamedQuery( "userSessionData" ).setParameter( "uname", "%in" ).list();
assertEquals( results.size(), 2 );
gavin = (User) results.get( 0 );
assertEquals( "gavin", gavin.getName() );
assertEquals( 2, gavin.getSession().size() );
session.createQuery( "delete SessionAttribute" ).executeUpdate();
session.createQuery( "delete User" ).executeUpdate();
}
);
}
}

View File

@ -6,7 +6,7 @@
*/ */
//$Id: SessionAttribute.java 5686 2005-02-12 07:27:32Z steveebersole $ //$Id: SessionAttribute.java 5686 2005-02-12 07:27:32Z steveebersole $
package org.hibernate.test.map; package org.hibernate.orm.test.map;
import java.io.Serializable; import java.io.Serializable;
/** /**

View File

@ -6,7 +6,7 @@
*/ */
//$Id: User.java 5686 2005-02-12 07:27:32Z steveebersole $ //$Id: User.java 5686 2005-02-12 07:27:32Z steveebersole $
package org.hibernate.test.map; package org.hibernate.orm.test.map;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -13,7 +13,7 @@
--> -->
<hibernate-mapping package="org.hibernate.test.map"> <hibernate-mapping package="org.hibernate.orm.test.map">
<class name="Group" table="groups_"> <class name="Group" table="groups_">
<id name="name"/> <id name="name"/>

View File

@ -1,119 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.map;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
import static org.junit.Assert.assertEquals;
/**
* @author Gavin King
*/
public class MapIndexFormulaTest extends BaseCoreFunctionalTestCase {
public String[] getMappings() {
return new String[] { "map/UserGroup.hbm.xml" };
}
@Test
public void testIndexFunctionOnManyToManyMap() {
Session s = openSession();
s.beginTransaction();
s.createQuery( "from Group g join g.users u where g.name = 'something' and index(u) = 'nada'" )
.list();
s.createQuery( "from Group g join g.users u where g.name = 'something' and minindex(u) = 'nada'" )
.list();
s.createQuery( "from Group g join g.users u where g.name = 'something' and maxindex(u) = 'nada'" )
.list();
s.getTransaction().commit();
s.close();
}
@Test
public void testIndexFormulaMap() {
Session s = openSession();
Transaction t = s.beginTransaction();
User gavin = new User("gavin", "secret");
User turin = new User("turin", "tiger");
Group g = new Group("developers");
g.getUsers().put("gavin", gavin);
g.getUsers().put("turin", turin);
s.persist(g);
gavin.getSession().put( "foo", new SessionAttribute("foo", "foo bar baz") );
gavin.getSession().put( "bar", new SessionAttribute("bar", "foo bar baz 2") );
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
g = (Group) s.get(Group.class, "developers");
assertEquals( g.getUsers().size(), 2 );
g.getUsers().remove("turin");
Map smap = ( (User) g.getUsers().get("gavin") ).getSession();
assertEquals(smap.size(), 2);
smap.remove("bar");
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
g = (Group) s.get(Group.class, "developers");
assertEquals( g.getUsers().size(), 1 );
smap = ( (User) g.getUsers().get("gavin") ).getSession();
assertEquals(smap.size(), 1);
gavin = (User) g.getUsers().put("gavin", turin);
s.delete(gavin);
assertEquals( s.createQuery("select count(*) from SessionAttribute").uniqueResult(), new Long(0) );
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
g = (Group) s.get(Group.class, "developers");
assertEquals( g.getUsers().size(), 1 );
turin = (User) g.getUsers().get("turin");
smap = turin.getSession();
assertEquals(smap.size(), 0);
assertEquals( s.createQuery("select count(*) from User").uniqueResult(), Long.valueOf(1) );
s.delete(g);
s.delete(turin);
assertEquals( s.createQuery("select count(*) from User").uniqueResult(), Long.valueOf( 0 ) );
t.commit();
s.close();
}
@Test
@SuppressWarnings( {"unchecked"})
public void testSQLQuery() {
Session s = openSession();
Transaction t = s.beginTransaction();
User gavin = new User("gavin", "secret");
User turin = new User("turin", "tiger");
gavin.getSession().put( "foo", new SessionAttribute("foo", "foo bar baz") );
gavin.getSession().put( "bar", new SessionAttribute("bar", "foo bar baz 2") );
s.persist(gavin);
s.persist(turin);
s.flush();
s.clear();
List results = s.getNamedQuery("userSessionData").setParameter("uname", "%in").list();
assertEquals( results.size(), 2 );
gavin = (User) ( (Object[]) results.get(0) )[0];
assertEquals( gavin.getName(), "gavin" );
assertEquals( gavin.getSession().size(), 2 );
s.createQuery("delete SessionAttribute").executeUpdate();
s.createQuery("delete User").executeUpdate();
t.commit();
s.close();
}
}