/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.seasar.extension.jdbc.gen.internal.desc; import javax.persistence.GenerationType; import javax.persistence.TemporalType; import org.junit.Before; import org.junit.Test; import org.seasar.extension.jdbc.gen.desc.AttributeDesc; import org.seasar.extension.jdbc.gen.dialect.GenDialect; import org.seasar.extension.jdbc.gen.internal.dialect.StandardGenDialect; import org.seasar.extension.jdbc.gen.meta.DbColumnMeta; import org.seasar.extension.jdbc.gen.meta.DbTableMeta; import org.seasar.framework.convention.PersistenceConvention; import org.seasar.framework.convention.impl.PersistenceConventionImpl; import static org.junit.Assert.*; /** * @author taedium * */ public class AttributeDescFactoryImplTest { private AttributeDescFactoryImpl factory; /** * */ @Before public void setUp() { PersistenceConvention convention = new PersistenceConventionImpl(); GenDialect dialect = new StandardGenDialect(); factory = new AttributeDescFactoryImpl(convention, dialect, "VERSION([_]?NO)?", GenerationType.TABLE, 100, 200); } /** * * @throws Exception */ @Test public void testName() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("HOGE"); columnMeta.setTypeName("varchar"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertEquals("hoge", attributeDesc.getName()); } /** * * @throws Exception */ @Test public void testIsId_integer() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("hoge"); columnMeta.setTypeName("integer"); columnMeta.setPrimaryKey(true); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isId()); assertEquals(GenerationType.TABLE, attributeDesc.getGenerationType()); assertEquals(100, attributeDesc.getInitialValue()); assertEquals(200, attributeDesc.getAllocationSize()); } /** * * @throws Exception */ @Test public void testIsId_varchar() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("hoge"); columnMeta.setTypeName("varchar"); columnMeta.setPrimaryKey(true); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isId()); assertNull(attributeDesc.getGenerationType()); } /** * * @throws Exception */ @Test public void testIsId_integer_autoIncrement() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("hoge"); columnMeta.setTypeName("integer"); columnMeta.setPrimaryKey(true); columnMeta.setAutoIncrement(true); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isId()); assertEquals(GenerationType.IDENTITY, attributeDesc.getGenerationType()); } /** * * @throws Exception */ @Test public void testIsId_varchar_autoIncrement() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("hoge"); columnMeta.setTypeName("varchar"); columnMeta.setPrimaryKey(true); columnMeta.setAutoIncrement(true); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isId()); assertNull(attributeDesc.getGenerationType()); } /** * * @throws Exception */ @Test public void testGetAttributeClass() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("hoge"); columnMeta.setTypeName("varchar"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertEquals(String.class, attributeDesc.getAttributeClass()); } /** * * @throws Exception */ @Test public void testGetTemporalType() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("hoge"); columnMeta.setTypeName("date"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertEquals(TemporalType.DATE, attributeDesc.getTemporalType()); } /** * * @throws Exception */ @Test public void testIsLob() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("hoge"); columnMeta.setTypeName("blob"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isLob()); } /** * * @throws Exception */ @Test public void testIsVersion_illegalType() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("VERSION"); columnMeta.setTypeName("verchar"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertFalse(attributeDesc.isVersion()); } /** * * @throws Exception */ @Test public void testIsVersion_VERSION() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("VERSION"); columnMeta.setTypeName("integer"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isVersion()); } /** * * @throws Exception */ @Test public void testIsVersion_VERSION_NO() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("VERSION_NO"); columnMeta.setTypeName("integer"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isVersion()); } /** * * @throws Exception */ @Test public void testIsVersion_VERSIONNO() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("VERSIONNO"); columnMeta.setTypeName("integer"); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isVersion()); } /** * * @throws Exception */ @Test public void testColumn() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("HOGE"); columnMeta.setTypeName("varchar"); columnMeta.setLength(10); columnMeta.setScale(5); columnMeta.setNullable(true); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertEquals("HOGE", attributeDesc.getColumnName()); assertEquals(10, attributeDesc.getLength()); assertEquals(10, attributeDesc.getPrecision()); assertEquals(5, attributeDesc.getScale()); assertTrue(attributeDesc.isNullable()); assertFalse(attributeDesc.isUnsupportedColumnType()); } /** * * @throws Exception */ @Test public void testColumn_unsupportedType() throws Exception { DbColumnMeta columnMeta = new DbColumnMeta(); columnMeta.setName("HOGE"); columnMeta.setTypeName("unsupported"); columnMeta.setLength(10); columnMeta.setScale(5); columnMeta.setNullable(true); AttributeDesc attributeDesc = factory.getAttributeDesc( new DbTableMeta(), columnMeta); assertTrue(attributeDesc.isUnsupportedColumnType()); } }