Package com.alvazan.test

Source Code of com.alvazan.test.TestEmbedded

package com.alvazan.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import com.alvazan.orm.api.base.NoSqlEntityManager;
import com.alvazan.orm.api.base.NoSqlEntityManagerFactory;
import com.alvazan.test.db.Email;
import com.alvazan.test.db.EmbeddedEmail;
import com.alvazan.test.db.EmbeddedEmail2;
import com.alvazan.test.db.EmbeddedEntityWithNoId;
import com.alvazan.test.db.User;

public class TestEmbedded {

  private static NoSqlEntityManagerFactory factory;
  private NoSqlEntityManager mgr;

  @BeforeClass
  public static void setup() {
    factory = FactorySingleton.createFactoryOnce();
  }
 
  @Before
  public void createEntityManager() {
    mgr = factory.createEntityManager();
  }
  @After
  public void clearDatabase() {
    NoSqlEntityManager other = factory.createEntityManager();
    other.clearDatabase(true);
  }
 
  @Test
  public void testEmbedded() {
    EmbeddedEmail sub = new EmbeddedEmail();
    sub.setIdkey(67);
    sub.setName("dean");
    sub.setType("nosqltype");
   
    EmbeddedEmail e1 = new EmbeddedEmail();
    e1.setIdkey(65);
    e1.setName("name1");
    e1.setType("type1");
    //e1.getEmails().add(sub);
   
    EmbeddedEmail e2 = new EmbeddedEmail();
    e2.setIdkey(66);
    e2.setName("name2");
    e2.setType("type2");
   
        EmbeddedEmail e3 = new EmbeddedEmail();
        e3.setIdkey(68);
        e3.setName("name3");
        e3.setType("type3");

    User user = new User();
    List<EmbeddedEmail> listEmails = new ArrayList<EmbeddedEmail>();
    listEmails.add(e1);
    listEmails.add(e2);
    listEmails.add(e3);
    user.setEmails(listEmails);
    user.setEmail(sub);

    mgr.fillInWithKey(e1);
    mgr.fillInWithKey(e1);
    mgr.fillInWithKey(e3);
    mgr.fillInWithKey(sub);
   
    mgr.put(user);
    mgr.flush();
   
    NoSqlEntityManager mgr2 = factory.createEntityManager();
    User user2 = mgr2.find(User.class, user.getId());
   
    //Check single entity
    EmbeddedEmail emailSub = user2.getEmail();
    Assert.assertNotNull(emailSub);
    Assert.assertEquals(sub.getIdkey(), emailSub.getIdkey());
    Assert.assertEquals(sub.getName(), emailSub.getName());
   
    //Check List of entities
    List<EmbeddedEmail> emails = user2.getEmails();
    Assert.assertEquals(3, emails.size());

    EmbeddedEmail email = emails.get(0);
    Assert.assertNotNull(email);
   
    Assert.assertEquals(e1.getIdkey(), email.getIdkey());
    Assert.assertEquals(e1.getName(), email.getName());
   
    EmbeddedEmail email2 = emails.get(1);
        Assert.assertEquals(e2.getName(), email2.getName());

        // check if deleting embedded stuff is working fine
        NoSqlEntityManager mgr3 = factory.createEntityManager();
        user2.getEmails().remove(0);
        mgr3.put(user2);
        mgr3.flush();

        NoSqlEntityManager mgr4 = factory.createEntityManager();
        User user3 = mgr4.find(User.class, user2.getId());
        List<EmbeddedEmail> emails2 = user3.getEmails();
        Assert.assertEquals(2, emails2.size());

        // check if delete is working by passing object
        NoSqlEntityManager mgr5 = factory.createEntityManager();
        User user4 = mgr5.find(User.class, user.getId());
        user4.getEmails().remove(e3);
        mgr5.put(user4);
        mgr5.flush();

        NoSqlEntityManager mgr6 = factory.createEntityManager();
        User user5 = mgr6.find(User.class, user.getId());
        List<EmbeddedEmail> emails4 = user5.getEmails();
        Assert.assertEquals(1, emails4.size());

        // To check if delete is working fine
        mgr.remove(user2);
        mgr.flush();
  }

  @Test
  public void testEmbeddedWithoutId() {
    // Now check if an Embedded Entity without NoSqlId works or not
    EmbeddedEntityWithNoId embedWOId = new EmbeddedEntityWithNoId();
    embedWOId.setId("someid");
    embedWOId.setName("someName");
    embedWOId.setType("someType");

    User user = new User();
    user.setEntityWOId(embedWOId);

    mgr.put(user);
    mgr.flush();

    NoSqlEntityManager mgr2 = factory.createEntityManager();
    User user2 = mgr2.find(User.class, user.getId());

    EmbeddedEntityWithNoId embedWOId2 = user2.getEntityWOId();
    Assert.assertNotNull(embedWOId2);
    Assert.assertEquals(embedWOId.getId(), embedWOId2.getId());
    Assert.assertEquals(embedWOId.getName(), embedWOId2.getName());
    Assert.assertEquals(embedWOId.getType(), embedWOId2.getType());
  }
 
  @Test
  public void testEmbeddedSimple() {
    Email sub = new Email();
    sub.setId("sub");
    sub.setName("dean");
   
    sub.getIds().add("one");
    sub.getIds().add("two");
   
    sub.getInts().add(5);
    sub.getInts().add(8);
   
    sub.getSomeSet().add(10L);
    sub.getSomeSet().add(20L);

    mgr.put(sub);
    mgr.flush();
   
    NoSqlEntityManager mgr2 = factory.createEntityManager();
    Email email = mgr2.find(Email.class, sub.getId());
    NoSqlEntityManager mgr3 = factory.createEntityManager();
    Email email2 = mgr3.find(Email.class, sub.getId());
   
    List<String> ids = email.getIds();
    Assert.assertEquals("one", ids.get(0));
   
    List<Integer> nums = email.getInts();
    Assert.assertEquals(new Integer(5), nums.get(0));
   
    email.getInts().remove(0);
    email.getIds().remove("one");
    email.getSomeSet().remove(20L);
    mgr2.put(email);
    mgr2.flush();
   
    email2.getInts().add(12);
    email2.getIds().add("zzzz");
    email2.getSomeSet().add(30L);
    mgr3.put(email2);
    mgr3.flush();
   
    NoSqlEntityManager mgr4 = factory.createEntityManager();
    Email emailF = mgr4.find(Email.class, sub.getId());
   
    Assert.assertEquals(2, emailF.getInts().size());
    Assert.assertEquals(2, emailF.getIds().size());
    Assert.assertEquals(2, emailF.getSomeSet().size());

    Assert.assertEquals(new Integer(8), emailF.getInts().get(0));
    Assert.assertEquals(new Integer(12), emailF.getInts().get(1));
   
    Assert.assertEquals("two", emailF.getIds().get(0));
    Assert.assertEquals("zzzz", emailF.getIds().get(1));

        Assert.assertEquals(10L, emailF.getSomeSet().toArray()[0]);
        Assert.assertEquals(30L, emailF.getSomeSet().toArray()[1]);
  }
 
  @Test
  public void testEmbeddedMap() {
    Email sub = new Email();
    sub.setId("sub");
    sub.setName("dean");
    Map<String, Integer> keyToVal = sub.getKeyToVal();
    keyToVal.put("someVal", 5);
    keyToVal.put("other", 6);
   
    mgr.put(sub);
    mgr.flush();
   
    NoSqlEntityManager mgr2 = factory.createEntityManager();
    Email email = mgr2.find(Email.class, sub.getId());

    Map<String, Integer> nextMap = email.getKeyToVal();
    Assert.assertEquals(2, nextMap.size());
    Assert.assertEquals(new Integer(5), nextMap.get("someVal"));

    nextMap.remove("someVal");
   
    mgr2.put(email);
    mgr2.flush();
   
    NoSqlEntityManager mgr3 = factory.createEntityManager();
    Email email3 = mgr3.find(Email.class, sub.getId());
   
    Map<String, Integer> finalMap = email3.getKeyToVal();
    Assert.assertEquals(1, finalMap.size());
  }
 
  @Test
  public void testEmbeddedMap2() {
    Email sub = new Email();
    sub.setId("sub");
    sub.setName("dean");
    Map<Integer, String> keyToVal = sub.getSomeMap();
    keyToVal.put(5, "someVal");
    keyToVal.put(6, "other");

    mgr.put(sub);
    mgr.flush();
   
    NoSqlEntityManager mgr2 = factory.createEntityManager();
    Email email = mgr2.find(Email.class, sub.getId());

    Map<Integer, String> nextMap = email.getSomeMap();
    Assert.assertEquals(2, nextMap.size());
    Assert.assertEquals("someVal", nextMap.get(5));

    nextMap.remove(6);
   
    mgr2.put(email);
    mgr2.flush();
   
    NoSqlEntityManager mgr3 = factory.createEntityManager();
    Email email3 = mgr3.find(Email.class, sub.getId());

    Map<Integer, String> finalMap = email3.getSomeMap();
    Assert.assertEquals(1, finalMap.size());
  }

    // defect #87
    @Test
    public void testEmbeddedInheritance() {
        EmbeddedEmail sub = new EmbeddedEmail();
        sub.setIdkey(67);
        sub.setName("dean");
        sub.setType("nosqltype");

        EmbeddedEmail2 e2 = new EmbeddedEmail2();
        e2.setIdkey(67);
        e2.setName("name2");
        e2.setType("type2");

        User user = new User();
        user.setEmail2(e2);
        user.setEmail(sub);
        mgr.fillInWithKey(e2);
        mgr.fillInWithKey(sub);

        mgr.put(user);
        mgr.flush();

    }
}
TOP

Related Classes of com.alvazan.test.TestEmbedded

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.