Package nexj.core.meta.persistence.sql

Source Code of nexj.core.meta.persistence.sql.RelationalMappingTest

// Copyright 2010 NexJ Systems Inc. This software is licensed under the terms of the Eclipse Public License 1.0
package nexj.core.meta.persistence.sql;

import java.util.Iterator;

import junit.framework.TestCase;

import nexj.core.meta.MetadataLookupException;
import nexj.core.meta.PrivilegeSet;
import nexj.core.meta.Repository;

public class RelationalMappingTest extends TestCase
{
   private RelationalMapping m_contact;
   private RelationalMapping m_principal;
   private RelationalMapping m_user;
   private RelationalMapping m_group;
  
   /**
    * Constructor for RelationalMappingTest.
    * @param name
    */
   public RelationalMappingTest(String name)
   {
      super(name);
   }

   /*
    * @see TestCase#setUp()
    */
   protected void setUp() throws Exception
   {
      super.setUp();
     
      m_contact = (RelationalMapping)Repository.getMetadata().getMetaclass("Contact").getPersistenceMapping();
      m_principal = (RelationalMapping)Repository.getMetadata().getMetaclass("Principal").getPersistenceMapping();
      m_user = (RelationalMapping)Repository.getMetadata().getMetaclass("User").getPersistenceMapping();
      m_group = (RelationalMapping)Repository.getMetadata().getMetaclass("Group").getPersistenceMapping();

   }

   public void testGetObjectKey()
   {
      assertEquals(1, m_contact.getObjectKey().getPartCount());
      assertEquals("binary", m_contact.getObjectKey().getPartType(0).getName());
      assertEquals(true, m_contact.getObjectKey().isPartAscending(0));
   }

   public void testGetKeyGenerator()
   {
      assertEquals("KeyGenerator.GUIDGen", m_contact.getKeyGenerator().getName());
   }

   public void testGetPrimaryTable()
   {
      assertEquals("test.Contact", m_contact.getPrimaryTable().getName());
   }

   public void testGetAttributeMapping()
   {
      assertEquals("firstName", m_contact.getAttributeMapping(m_contact.getMetaclass().getAttribute("firstName")).getAttribute().getName());
   }

   public void testGetTable()
   {
      assertEquals("test.Contact", m_contact.getTable(0).getName());
   }

   public void testGetTableCount()
   {
      assertEquals(1, m_contact.getTableCount());
   }

   public void testGetDataSource()
   {
      assertEquals("DefaultRelationalDatabase", m_contact.getDataSource().getName());
   }

   public void testGetMetaclass()
   {
      assertEquals("Contact", m_contact.getMetaclass().getName());
   }

   public void testGetLockingAttribute()
   {
      assertEquals("version", m_contact.getLockingAttribute().getName());
      assertEquals("updateCount", ((RelationalMapping)Repository.getMetadata().getMetaclass("Principal").getPersistenceMapping()).getLockingAttribute().getName());
   }
  
   public void testGetTypeCodeAttribute()
   {
      assertEquals("classCode", m_contact.getTypeCodeAttribute().getName());
      assertEquals("typeCode", m_principal.getTypeCodeAttribute().getName());
      assertEquals("typeCode", m_user.getTypeCodeAttribute().getName());
      assertEquals("typeCode", m_group.getTypeCodeAttribute().getName());
   }

   public void testGetMetaclassByTypeCode()
   {
      assertEquals("User", m_principal.getMetaclassByTypeCode("U").getName());
      assertEquals("User", m_user.getMetaclassByTypeCode("U").getName());
      assertEquals("Group", m_principal.getMetaclassByTypeCode("G").getName());
      assertEquals("Group", m_group.getMetaclassByTypeCode("G").getName());
     
      try
      {
         assertEquals("Contact", m_contact.getMetaclassByTypeCode("???").getName());
         fail("Expected MetadataLookupException");
      }
      catch (MetadataLookupException e)
      {
      }
     
      try
      {
         assertEquals("Principal", m_principal.getMetaclassByTypeCode(null).getName());
         fail("Expected MetadataLookupException");
      }
      catch (MetadataLookupException e)
      {
      }
   }

   public void testIsTypeCodeFiltered()
   {
      assertFalse(m_contact.isTypeCodeFiltered());
      assertTrue(m_user.isTypeCodeFiltered());
      assertTrue(m_group.isTypeCodeFiltered());
      assertFalse(m_principal.isTypeCodeFiltered());
   }

   public void testIsTypeCodeDispatched()
   {
      assertTrue(m_contact.isTypeCodeDispatched());
      assertFalse(m_user.isTypeCodeDispatched());
      assertFalse(m_group.isTypeCodeDispatched());
      assertTrue(m_principal.isTypeCodeDispatched());
   }

   public void testIsTypeCodePrivileged()
   {
      PrivilegeSet privilegeSet = new PrivilegeSet(Repository.getMetadata().getPrimitivePrivilegeCount(), true);

      assertFalse(m_contact.isTypeCodePrivileged(privilegeSet));

      privilegeSet.remove(Repository.getMetadata().getPrimitivePrivilege("readSpecial"));

      assertTrue(m_contact.isTypeCodePrivileged(privilegeSet));
      assertFalse(m_principal.isTypeCodePrivileged(privilegeSet));
   }
  
   public void testGetTypeCodeIterator()
   {
      PrivilegeSet privilegeSet = new PrivilegeSet(Repository.getMetadata().getPrimitivePrivilegeCount(), true);

      Iterator itr = m_contact.getTypeCodeIterator(privilegeSet);

      itr.next();
      itr.next();
      itr.next();
      itr.next();
      itr.next();
      itr.next();
      itr.next();
      itr.next();

      assertFalse(itr.hasNext());

      privilegeSet.remove(Repository.getMetadata().getPrimitivePrivilege("readSpecial"));
      itr = m_contact.getTypeCodeIterator(privilegeSet);

      itr.next();
      itr.next();
      itr.next();
      itr.next();
      itr.next();
      itr.next();
      itr.next();
     
      assertFalse(itr.hasNext());
   }

   public void testToString()
   {
      assertEquals("RelationalMapping DefaultRelationalDatabase for Metaclass Contact", m_contact.toString());
   }
}
TOP

Related Classes of nexj.core.meta.persistence.sql.RelationalMappingTest

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.