You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shale.apache.org by sc...@apache.org on 2006/07/31 18:32:00 UTC
svn commit: r427158 [2/2] - in /shale/sandbox/shale-petstore: ./ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/shale/ src/main/java/org/apache/shale/petstore/
src/main/java/org/apache/shale/petstore...
Added: shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/CategoryTest.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/CategoryTest.java?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/CategoryTest.java (added)
+++ shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/CategoryTest.java Mon Jul 31 09:31:56 2006
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.apache.shale.petstore.domain;
+
+import junit.framework.TestCase;
+import org.apache.shale.petstore.domain.Pet;
+import org.apache.shale.petstore.domain.Category;
+
+/**
+ * @author Sean Schofield
+ */
+public class CategoryTest extends TestCase {
+
+ Pet pet;
+ private Category fooCategory;
+ private Category barCategory;
+
+ protected void setUp() throws Exception {
+ pet = new Pet();
+ pet.setProductId("003201233");
+ fooCategory = new Category("foo category");
+ barCategory = new Category("bar category");
+ }
+
+ public void testAddPet() {
+ fooCategory.addPet(pet);
+ assertEquals("pet.category", fooCategory, pet.getCategory());
+ assertTrue("category pet set should contain the pet", fooCategory.getPets().contains(pet));
+ }
+
+// public void testEquals() {
+// assertFalse("fooCategory.equals(barCategory)", fooCategory.equals(barCategory));
+// Category buzzCategory = new Category("buzz category");
+//
+// // categoryId should be sufficient to satisfy equals
+// assertTrue("fooCategory.equals(buzzCategory)", fooCategory.equals(buzzCategory));
+//
+// // equals method should also be checking the categoryId of the parent when present
+// buzzCategory.setParentCategory(fooCategory);
+// assertFalse("! buzzCategory.equals(barCategory)", buzzCategory.equals(barCategory));
+// barCategory.setParentCategory(fooCategory);
+// assertTrue("buzzCategory.equals(barCategory)", buzzCategory.equals(barCategory));
+// }
+}
Added: shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/PetTest.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/PetTest.java?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/PetTest.java (added)
+++ shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/domain/PetTest.java Mon Jul 31 09:31:56 2006
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.apache.shale.petstore.domain;
+
+import junit.framework.TestCase;
+
+import java.util.Set;
+
+import org.apache.shale.petstore.domain.Pet;
+import org.apache.shale.petstore.domain.Category;
+
+/**
+ * @author Sean Schofield
+ */
+public class PetTest extends TestCase {
+
+ Pet pet;
+ Category dogs;
+ Category cats;
+ private static final String DOGS = "DOGS";
+ private static final String CATS = "CATS";
+
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ dogs = new Category(DOGS);
+ cats = new Category(CATS);
+
+ pet = new Pet(cats, "0403220", "cat description");
+ cats.addPet(pet);
+ }
+
+ /**
+ * A pet can have at most one category so the setter method should enforce this. The domain model is
+ * responsible for enforcing these relationship rules so they need to be tested here.
+ * @throws Exception
+ */
+ public void testSetCategory() throws Exception {
+ assertEquals("pet.category.description", CATS, pet.getCategory().getDescription());
+ Set petSet = cats.getPets();
+ assertTrue("category pet set should contain the pet", petSet.contains(pet));
+
+ pet.changeCategory(dogs);
+ petSet = cats.getPets();
+ assertFalse("old category should no longer contain pet", petSet.contains(pet));
+ petSet = dogs.getPets();
+ assertTrue("new category should contain pet", petSet.contains(pet));
+ }
+
+}
Added: shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/AbstractHibernateDaoTestCase.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/AbstractHibernateDaoTestCase.java?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/AbstractHibernateDaoTestCase.java (added)
+++ shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/AbstractHibernateDaoTestCase.java Mon Jul 31 09:31:56 2006
@@ -0,0 +1,82 @@
+package org.apache.shale.petstore.persistence.impl;
+
+import org.springframework.transaction.support.TransactionSynchronizationManager;
+import org.springframework.orm.hibernate3.SessionFactoryUtils;
+import org.springframework.orm.hibernate3.SessionHolder;
+import org.springframework.orm.hibernate3.HibernateTemplate;
+import org.hibernate.SessionFactory;
+import org.hibernate.Session;
+import org.hibernate.dialect.HSQLDialect;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import junit.framework.TestCase;
+
+import java.io.File;
+
+/**
+ * Base test case for all test cases of Hibernate DAO implementations. Perform basic session and
+ * transaction setup and teardown here.
+ * @author Sean Schofield
+ */
+public class AbstractHibernateDaoTestCase extends TestCase {
+
+ protected PetDaoHibernate petDao;
+ protected CategoryDaoHibernate categoryDao;
+ private SessionFactory sessionFactory;
+ private Session session;
+
+ public void setUp() throws Exception {
+ Configuration configuration = new Configuration();
+ configuration.setProperty(Environment.DRIVER, "org.hsqldb.jdbcDriver");
+ configuration.setProperty(Environment.URL, "jdbc:hsqldb:mem:ProductDAOTest");
+ configuration.setProperty(Environment.USER, "sa");
+ configuration.setProperty(Environment.DIALECT, HSQLDialect.class.getName());
+ configuration.setProperty(Environment.SHOW_SQL, "true");
+ configuration.setProperty(Environment.HBM2DDL_AUTO, "create-drop");
+
+ // add all hibernate mappings in the domain dir
+ String dir = (getClass().getClassLoader().getResource("org/apache/shale/petstore/domain")).getFile();
+ configuration.addDirectory(new File(dir));
+
+ // create the hibernate template to inject into the DAOs
+ sessionFactory = configuration.buildSessionFactory();
+ HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
+
+ // create convenient DAO instances for subclasses to use
+ petDao = new PetDaoHibernate();
+ categoryDao = new CategoryDaoHibernate();
+
+ // configure the DAO instances
+ petDao.setHibernateTemplate(hibernateTemplate);
+ categoryDao.setHibernateTemplate(hibernateTemplate);
+
+ openSession();
+// session = SessionFactoryUtils.getSession(sessionFactory, true);
+// TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session));
+ }
+
+ public void tearDown() throws Exception {
+ TransactionSynchronizationManager.unbindResource(sessionFactory);
+ SessionFactoryUtils.releaseSession(session, sessionFactory);
+ }
+
+ protected void closeSession() throws Exception {
+ session.close();
+ }
+
+ protected void openSession() throws Exception {
+ session = SessionFactoryUtils.getSession(sessionFactory, true);
+ TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session));
+ }
+
+ /**
+ * Convenience method for flushing and clearing all of the templates. This allows tests of persistence
+ * as opposed to just testing that the cache is working.
+ */
+ protected void flushAndClear() {
+ categoryDao.getHibernateTemplate().flush();
+ categoryDao.getHibernateTemplate().clear();
+ petDao.getHibernateTemplate().flush();
+ petDao.getHibernateTemplate().clear();
+ }
+}
Added: shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/CategoryDaoHibernateTest.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/CategoryDaoHibernateTest.java?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/CategoryDaoHibernateTest.java (added)
+++ shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/CategoryDaoHibernateTest.java Mon Jul 31 09:31:56 2006
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.apache.shale.petstore.persistence.impl;
+
+import org.apache.shale.petstore.domain.Category;
+import org.apache.shale.petstore.domain.Pet;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Sean Schofield
+ */
+public class CategoryDaoHibernateTest extends AbstractHibernateDaoTestCase {
+
+ private Category category;
+
+ public void setUp() throws Exception {
+ super.setUp();
+ category = new Category("foo category description");
+ }
+
+ public void testStoreAndRetrieveBusinessKeyEquality() throws Exception {
+ //long id = categoryDao.store(category);
+
+ long id = categoryDao.store(category);
+
+ // flush and clear so we can test that the pet was actually stored
+ flushAndClear();
+
+ Category retrievedCategory = categoryDao.get(id);
+
+ assertEquals(category, retrievedCategory);
+ assertNotSame(category, retrievedCategory);
+ }
+
+ /**
+ * Verify that a category's set of pets is stored and retrieved properly. Also verifies that
+ * transient pets are stored in the database through cascade-save.
+ * @throws Exception
+ */
+ public void testStoreAndRetrieveSet() throws Exception {
+ // create a couple of pets
+ Pet pet1 = new Pet("12345", "Pet1");
+ Pet pet2 = new Pet("78901", "Pet2");
+ category.addPet(pet1);
+ category.addPet(pet2);
+
+ // persist the category
+ long id = categoryDao.store(category);
+
+ flushAndClear();
+
+ Category retrievedCategory = categoryDao.get(id);
+
+ // category should have been persisted and have a pet set with size 2
+ assertNotNull("retrievedCategory", retrievedCategory);
+ assertEquals("retrievedCategory.pets.size", 2, retrievedCategory.getPets().size());
+
+ // the pets should also have been persisted due to cascade-save
+ assertNotNull("pet1.id", pet1.getId());
+ assertNotNull("pet2.id", pet2.getId());
+ }
+
+ public void testRemoveCategory() throws Exception {
+ // create a couple of pets
+ Pet pet1 = new Pet("12345", "Pet1");
+ Pet pet2 = new Pet("78901", "Pet2");
+ category.addPet(pet1);
+ category.addPet(pet2);
+
+ // persist the category
+ long id = categoryDao.store(category);
+
+ flushAndClear();
+
+ Category retrievedCategory = categoryDao.get(id);
+ categoryDao.remove(retrievedCategory);
+
+ flushAndClear();
+
+ retrievedCategory = categoryDao.get(id);
+ assertNull("retrievedCategory", retrievedCategory);
+
+ flushAndClear();
+
+ // pets should also have been deleted
+ Pet retrievedPet1 = petDao.get(pet1.getId());
+ Pet retrievedPet2 = petDao.get(pet2.getId());
+ assertNull("retrievedPet1", retrievedPet1);
+ assertNull("retrievedPet2", retrievedPet2);
+ }
+
+ public void testGetCategories() throws Exception {
+ // create a few categories and store them
+ Category category1 = new Category("category1");
+ Category category2 = new Category("category2");
+ Category category3 = new Category("category3");
+
+ categoryDao.store(category1);
+ categoryDao.store(category2);
+ categoryDao.store(category3);
+
+ flushAndClear();
+
+ List categoryList = categoryDao.getCategories();
+ assertEquals("categorySet.size", 3, categoryList.size());
+
+ Category category4 = new Category("category4");
+ category3.addChildCategory(category4);
+ }
+
+ public void testCategoryDirtyCheckingUpdate() throws Exception {
+ Category category1 = new Category("category1");
+ categoryDao.store(category1);
+
+ // create a new transient category
+ Category category2 = new Category("category2");
+
+ // associate transient category with a persistent category
+ category1.addChildCategory(category2);
+ flushAndClear();
+
+ // verify that dirty check cascaded to child category and that it was persisted
+ assertNotNull("category2.id", category2.getId());
+ }
+
+ public void testCategoryDirtyCheckingNew() throws Exception {
+ Category category1 = new Category("category1");
+ Category category2 = new Category("category2");
+
+ category1.addChildCategory(category2);
+ categoryDao.store(category1);
+
+ // verify that dirty check cascaded to child category and that it was persisted
+ assertNotNull("category2.id", category2.getId());
+ }
+
+ public void testCategoryDirtyCheckingDeleteParent() throws Exception {
+ Category category1 = new Category("category1");
+ Category category2 = new Category("category2");
+
+ category1.addChildCategory(category2);
+ categoryDao.store(category1);
+ flushAndClear();
+ categoryDao.remove(category1);
+ flushAndClear();
+
+ // verify that dirty check cascaded to child category and that it was persisted
+ assertTrue("size() == 0", categoryDao.getCategories().size() == 0);
+ }
+}
Added: shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/PetDaoHibernateTest.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/PetDaoHibernateTest.java?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/PetDaoHibernateTest.java (added)
+++ shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/persistence/impl/PetDaoHibernateTest.java Mon Jul 31 09:31:56 2006
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.apache.shale.petstore.persistence.impl;
+
+import org.apache.shale.petstore.domain.Pet;
+import org.apache.shale.petstore.domain.Category;
+
+/**
+ * @author Sean Schofield
+ */
+public class PetDaoHibernateTest extends AbstractHibernateDaoTestCase {
+
+ private Pet fooPet;
+
+ public void setUp() throws Exception {
+ super.setUp();
+ // setup reusable pet and category objects
+ Category fooCategory = new Category("foo category");
+ categoryDao.store(fooCategory);
+
+ fooPet = new Pet(fooCategory, "12345", "foo pet");
+ fooPet.setPrice(100.30);
+ fooPet.setQuantity(33);
+ }
+
+ public void testStoreAndRetrieveBusinessKeyEquality() throws Exception {
+ long id = petDao.store(fooPet);
+
+ // flush and clear so we can test that the pet was actually stored
+ flushAndClear();
+
+ Pet retrievedPet = (Pet)petDao.get(id);
+
+ assertEquals(fooPet, retrievedPet);
+ assertNotSame(fooPet, retrievedPet);
+ }
+
+ /**
+ * Since Hibernate recommends using only the so-called business key in your
+ * equality statement, we should also check that the rest of the values are
+ * identical once stored and retrieved. Each property needs to be checked
+ * manually since we are not able to rely on the equals() method.
+ * @throws Exception
+ */
+ public void testStoreAndRetrieveValueEquality() throws Exception {
+ long id = petDao.store(fooPet);
+
+ flushAndClear();
+
+ Pet retrievedPet = petDao.get(id);
+
+ assertEquals("retrievedPet.getProductId()", fooPet.getProductId(), retrievedPet.getProductId());
+ assertEquals("retrievedPet.getDescription()", fooPet.getDescription(), retrievedPet.getDescription());
+ assertEquals("retrievedPet.getPrice()", fooPet.getPrice(), retrievedPet.getPrice());
+ assertEquals("retrievedPet.getQuantity()", fooPet.getQuantity(), retrievedPet.getQuantity());
+ assertEquals("retrievedPet.getCategory()", fooPet.getCategory(), retrievedPet.getCategory());
+ }
+
+}
Added: shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/service/impl/InventoryServiceImplTest.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/service/impl/InventoryServiceImplTest.java?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/service/impl/InventoryServiceImplTest.java (added)
+++ shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/service/impl/InventoryServiceImplTest.java Mon Jul 31 09:31:56 2006
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.apache.shale.petstore.service.impl;
+
+import org.jmock.Mock;
+import org.jmock.cglib.MockObjectTestCase;
+import org.apache.shale.petstore.persistence.CategoryDao;
+
+/**
+ * @author Sean Schofield
+ */
+public class InventoryServiceImplTest extends MockObjectTestCase {
+
+ private InventoryServiceImpl inventoryService;
+ private Mock mockDao;
+
+ public void setUp() throws Exception {
+ super.setUp();
+ inventoryService = new InventoryServiceImpl();
+ // setup mock
+ mockDao = mock(CategoryDao.class);
+ // inject mock
+ inventoryService.setCategoryDao((CategoryDao)mockDao.proxy());
+ }
+
+ public void testGetInventory() {
+ mockDao.expects(once()).method("getCategories");
+ inventoryService.getInventory();
+ }
+
+ public void testCreateTestData() {
+ mockDao.expects(atLeastOnce()).method("store");
+ inventoryService.createTestData();
+ }
+}
Added: shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/view/backing/TreeBackerTest.java
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/view/backing/TreeBackerTest.java?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/view/backing/TreeBackerTest.java (added)
+++ shale/sandbox/shale-petstore/src/test/java/org/apache/shale/petstore/view/backing/TreeBackerTest.java Mon Jul 31 09:31:56 2006
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.apache.shale.petstore.view.backing;
+
+import org.jmock.cglib.MockObjectTestCase;
+import org.jmock.Mock;
+import org.apache.shale.petstore.service.impl.InventoryServiceImpl;
+import org.apache.shale.petstore.service.InventoryService;
+import org.apache.shale.petstore.persistence.CategoryDao;
+import org.apache.shale.petstore.persistence.PetDao;
+import org.apache.shale.petstore.domain.Category;
+import org.apache.shale.petstore.domain.Pet;
+import org.apache.myfaces.custom.tree2.*;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * @author Sean Schofield
+ */
+public class TreeBackerTest extends MockObjectTestCase {
+
+ private static final Category DOGS = new Category("dogs");
+ private static final Category TERRIERS = new Category("terriers");
+ private static final Pet BOSTON_TERRIER = new Pet("1001", "boton terrier");
+ private static final Pet WHEATON_TERRIER = new Pet("1002", "wheaton terrier");
+ private static final Category RETRIEVERS = new Category("retrievers");
+ private static final Category CATS = new Category("cats");
+ private static final Category FISH = new Category("fish");
+
+ private TreeBacker treeBacker;
+ //private Mock mockDao;
+
+ public void setUp() throws Exception {
+ super.setUp();
+
+ TERRIERS.addPet(BOSTON_TERRIER);
+ TERRIERS.addPet(WHEATON_TERRIER);
+ DOGS.addChildCategory(TERRIERS);
+ DOGS.addChildCategory(RETRIEVERS);
+
+ treeBacker = new TreeBacker();
+
+ // inject custom mock
+ treeBacker.setInventoryService(new MockInventoryService());
+ }
+
+ /**
+ * Verify that the Tree
+ */
+ public void testGetTreeModel() {
+ /**
+ * We're assuming the TreeModel is using the default node id scheme of 0, 0:1, etc.
+ * Technically there is nothing about TreeModel that requires this but we happen to know
+ * that TreeBacker is using TreeModelBase so we're cheating a little here. That's ok
+ * b/c what we're really trying to test is that the mapping from the service data to
+ * the view data (ie. TreeNode conversion) is working properly and that its preserving
+ * the original order of the data.
+ */
+ TreeModel model = (TreeModelBase)treeBacker.getTreeModel();
+
+ TreeNode treeNode = model.getNodeById("0:0");
+ assertEquals("0:0", DOGS.getDescription(), treeNode.getDescription());
+
+ treeNode = model.getNodeById("0:0:0");
+ assertEquals("0:0:0", TERRIERS.getDescription(), treeNode.getDescription());
+
+ treeNode = model.getNodeById("0:0:1");
+ assertEquals("0:0:1", RETRIEVERS.getDescription(), treeNode.getDescription());
+
+ treeNode = model.getNodeById("0:1");
+ assertEquals("0:1", CATS.getDescription(), treeNode.getDescription());
+
+ treeNode = model.getNodeById("0:2");
+ assertEquals("0:2", FISH.getDescription(), treeNode.getDescription());
+ }
+
+ /**
+ * Mock class used to generate sample data.
+ */
+ private static final class MockInventoryService implements InventoryService {
+
+ public List<Category> getInventory() {
+ List categoryList = new ArrayList();
+
+ categoryList.add(DOGS);
+ categoryList.add(CATS);
+ categoryList.add(FISH);
+
+ return categoryList;
+ }
+
+ public void setCategoryDao(CategoryDao categoryDao) {
+ throw new UnsupportedOperationException("method should not be called from test case");
+ }
+
+ public void setPetDao(PetDao petDao) {
+ throw new UnsupportedOperationException("method should not be called from test case");
+ }
+
+ public void createTestData() {
+ throw new UnsupportedOperationException("method should not be called from test case");
+ }
+ }
+}
Added: shale/sandbox/shale-petstore/src/test/resources/spring-persistence.xml
URL: http://svn.apache.org/viewvc/shale/sandbox/shale-petstore/src/test/resources/spring-persistence.xml?rev=427158&view=auto
==============================================================================
--- shale/sandbox/shale-petstore/src/test/resources/spring-persistence.xml (added)
+++ shale/sandbox/shale-petstore/src/test/resources/spring-persistence.xml Mon Jul 31 09:31:56 2006
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+ <!--
+ Spring configuration for UNIT TESTS. Not to be used in deployed application.
+ -->
+<beans>
+
+ <bean id="dataSource"
+ class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
+ <property name="url" value="jdbc:hsqldb:mem:ProductDAOTest"/>
+ <property name="username" value="sa"/>
+ <!--
+ <property name="password" value="${db.password}"/>
+ -->
+ </bean>
+ <bean id="sessionFactory"
+ class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
+ <property name="dataSource" ref="dataSource"/>
+ <property name="hibernateProperties">
+ <props>
+ <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
+ <prop key="hibernate.show_sql">true</prop>
+ <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
+ </props>
+ </property>
+ <property name="mappingDirectoryLocations">
+ <list>
+ <value>classpath:/org/apache/myfaces/petstore/domain</value>
+ </list>
+ </property>
+ </bean>
+ <bean id ="hibernateTemplate"
+ class="org.springframework.orm.hibernate3.HibernateTemplate">
+ <property name="sessionFactory" ref="sessionFactory"/>
+ </bean>
+ <bean id="petDao"
+ class="org.apache.shale.petstore.persistence.impl.PetDaoHibernate">
+ <property name="hibernateTemplate" ref="hibernateTemplate"/>
+ </bean>
+ <bean id="categoryDao"
+ class="org.apache.shale.petstore.persistence.impl.CategoryDaoHibernate">
+ <property name="hibernateTemplate" ref="hibernateTemplate"/>
+ </bean>
+
+</beans>
\ No newline at end of file