/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* 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.ogm.datastore.mongodb.test.mapping;
import static org.hibernate.ogm.datastore.mongodb.utils.MongoDBTestHelper.assertDocument;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.ogm.backendtck.embeddable.ForumUser;
import org.hibernate.ogm.backendtck.embeddable.JiraIssue;
import org.hibernate.ogm.utils.OgmTestCase;
import org.hibernate.ogm.utils.TestForIssue;
import org.junit.Before;
import org.junit.Test;
/**
* @author Davide D'Alto
*/
@TestForIssue(jiraKey = "OGM-1253")
public class ElementCollectionWithMapAndEmbeddedTest extends OgmTestCase {
private ForumUser user;
private JiraIssue ogmIssue;
// we should also test the use case where all properties in JiraIssue are null
@Before
public void prepareDb() throws Exception {
try ( Session session = openSession() ) {
Transaction tx = session.beginTransaction();
ogmIssue = new JiraIssue( 123, "OGM" );
user = new ForumUser( "user123" );
user.getIssues().put( "issue1", ogmIssue );
user.getIssues().put( "issue2", ogmIssue );
session.persist( user );
tx.commit();
}
}
@Test
public void testMapping() throws Exception {
assertDocument(
getSessionFactory(),
// collection
ForumUser.LABEL,
// query
"{ '_id' : '" + user.getId() + "' }",
// fields
null,
"{ '_id' : '" + user.getId() + "', 'issues' : { 'issue2' : { 'number' : 123, 'project' : 'OGM' }, 'issue1' : { 'number' : 123, 'project' : 'OGM' } } }"
);
}
@Override
public Class<?>[] getAnnotatedClasses() {
return new Class<?>[]{ ForumUser.class };
}
}