Author: venkatm
Date: Tue Apr  3 14:31:52 2012
New Revision: 1308947

URL: http://svn.apache.org/viewvc?rev=1308947&view=rev
Log:
RAVE-541: Create the Default User page automatically based on a Page Template

Modified:
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplate.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageRepository.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageTemplateRepository.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepository.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java
    
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java
    
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java
    
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
    
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java
    rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplate.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplate.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplate.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/PageTemplate.java
 Tue Apr  3 14:31:52 2012
@@ -29,14 +29,14 @@ import java.util.List;
 @Table(name="page_template")
 @NamedQueries({
         @NamedQuery(name = PageTemplate.PAGE_TEMPLATE_GET_ALL, query = "SELECT 
p FROM PageTemplate p ORDER BY p.renderSequence"),
-        @NamedQuery(name = PageTemplate.PAGE_TEMPLATE_GET_DEFAULT_PERSON_PAGE, 
query = "SELECT p FROM PageTemplate p WHERE p.defaultTemplate = true and 
p.pageType = :pageType")
+        @NamedQuery(name = 
PageTemplate.PAGE_TEMPLATE_GET_DEFAULT_PAGE_BY_TYPE, query = "SELECT p FROM 
PageTemplate p WHERE p.defaultTemplate = true and p.pageType = :pageType")
 })
 @Access(AccessType.FIELD)
 public class PageTemplate implements BasicEntity, Serializable {
 
     private static final long serialVersionUID = 1L;
     public static final String PAGE_TEMPLATE_GET_ALL = "PageTemplate.getAll";
-    public static final String PAGE_TEMPLATE_GET_DEFAULT_PERSON_PAGE = 
"PageTemplate.getDefaultPersonPage";
+    public static final String PAGE_TEMPLATE_GET_DEFAULT_PAGE_BY_TYPE = 
"PageTemplate.getDefaultPage";
 
     @Id
     @Column(name="entity_id")

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageRepository.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageRepository.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageRepository.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageRepository.java
 Tue Apr  3 14:31:52 2012
@@ -48,12 +48,12 @@ public interface PageRepository extends 
     int deletePages(Long userId, PageType pageType);
 
     /**
-     * Create Person Page from PageTemplate for the given user
+     * Create either a Person or User Page from PageTemplate for the given user
      * @param user User
      * @param pt PageTemplate
      * @return Page
      */
-    Page createPersonPageForUser(User user, PageTemplate pt);
+    Page createPageForUser(User user, PageTemplate pt);
 
     /**
      * Determine if the given user has a person page

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageTemplateRepository.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageTemplateRepository.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageTemplateRepository.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/PageTemplateRepository.java
 Tue Apr  3 14:31:52 2012
@@ -19,11 +19,12 @@
 package org.apache.rave.portal.repository;
 
 import org.apache.rave.portal.model.PageTemplate;
+import org.apache.rave.portal.model.PageType;
 
 import java.util.List;
 
 public interface PageTemplateRepository {
 
     List<PageTemplate> getAll();
-    PageTemplate getDefaultPersonPage();
+    PageTemplate getDefaultPage(PageType pageType);
 }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageRepository.java
 Tue Apr  3 14:31:52 2012
@@ -60,7 +60,7 @@ public class JpaPageRepository extends A
     }
 
     @Override
-    public Page createPersonPageForUser(User user, PageTemplate pt) {
+    public Page createPageForUser(User user, PageTemplate pt) {
         Page personPageFromTemplate = convert(pt, user);
         return save(personPageFromTemplate);
     }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepository.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepository.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepository.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepository.java
 Tue Apr  3 14:31:52 2012
@@ -41,9 +41,9 @@ public class JpaPageTemplateRepository e
     }
 
     @Override
-    public PageTemplate getDefaultPersonPage() {
-        TypedQuery<PageTemplate> query = 
manager.createNamedQuery(PageTemplate.PAGE_TEMPLATE_GET_DEFAULT_PERSON_PAGE, 
PageTemplate.class);
-        query.setParameter("pageType", PageType.PERSON_PROFILE);
+    public PageTemplate getDefaultPage(PageType pageType) {
+        TypedQuery<PageTemplate> query = 
manager.createNamedQuery(PageTemplate.PAGE_TEMPLATE_GET_DEFAULT_PAGE_BY_TYPE, 
PageTemplate.class);
+        query.setParameter("pageType", pageType);
         return query.getSingleResult();
     }
 }
\ No newline at end of file

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
 Tue Apr  3 14:31:52 2012
@@ -80,7 +80,7 @@ public class DefaultPageService implemen
         List<Page> profilePages = pageRepository.getAllPages(userId, 
PageType.PERSON_PROFILE);
         Page personPage = null;
         if (profilePages.isEmpty()){
-            personPage = 
pageRepository.createPersonPageForUser(userService.getUserById(userId),pageTemplateRepository.getDefaultPersonPage());
+            personPage = 
pageRepository.createPageForUser(userService.getUserById(userId), 
pageTemplateRepository.getDefaultPage(PageType.PERSON_PROFILE));
         } else {
             personPage = profilePages.get(0);
         }
@@ -389,7 +389,7 @@ public class DefaultPageService implemen
 
     private Page addNewUserPage(User user, String pageName, String 
pageLayoutCode) {
         PageLayout pageLayout = 
pageLayoutRepository.getByPageLayoutCode(pageLayoutCode);
-        
+
         // Create regions
         List<Region> regions = new ArrayList<Region>();
         int regionCount;
@@ -401,18 +401,28 @@ public class DefaultPageService implemen
             regions.add(region);
         }
 
-        // Create a Page object and register it.
-        long renderSequence = getAllUserPages(user.getEntityId()).size() + 1;
-        Page page = new Page();
-        page.setName(pageName);       
-        page.setOwner(user);
-        page.setPageLayout(pageLayout);
-        page.setRenderSequence(renderSequence);
-        page.setRegions(regions);
-        // set this as a "user" page type
-        page.setPageType(PageType.USER);
-        pageRepository.save(page);
-        
+        // Get all User Pages
+        Page page = null;
+        List<Page> defaultUserPage = 
pageRepository.getAllPages(user.getEntityId(), PageType.USER);
+        // Is there a default page for this user
+        if (defaultUserPage.isEmpty()) {
+            // Do we have a default User template defined (only 1 as of now), 
if so create page based on the template
+            // TODO: Only 1 user template should be defined as default as of 
now,
+            // this would throw an exception if there are more than 1 default 
user template or none
+            page = pageRepository.createPageForUser(user, 
pageTemplateRepository.getDefaultPage(PageType.USER));
+        } else {
+            // Create the new page for the user
+            long renderSequence = defaultUserPage.size() + 1;
+            page = new Page();
+            page.setName(pageName);
+            page.setOwner(user);
+            page.setPageLayout(pageLayout);
+            page.setRenderSequence(renderSequence);
+            page.setRegions(regions);
+            // set this as a "user" page type
+            page.setPageType(PageType.USER);
+            pageRepository.save(page);
+        }
         return page;
     }
 

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultUserService.java
 Tue Apr  3 14:31:52 2012
@@ -161,7 +161,7 @@ public class DefaultUserService implemen
     @Transactional
     public void registerNewUser(User user) {
         User managedUser = userRepository.save(user);
-        pageRepository.createPersonPageForUser(managedUser, 
pageTemplateRepository.getDefaultPersonPage());
+        pageRepository.createPageForUser(managedUser, 
pageTemplateRepository.getDefaultPage(PageType.PERSON_PROFILE));
     }
 
     @Override

Modified: 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageRepositoryTest.java
 Tue Apr  3 14:31:52 2012
@@ -75,7 +75,7 @@ public class JpaPageRepositoryTest {
     @Before
     public void setup(){
         user = userRepository.get(CREATED_USER_ID);
-        defaultPageTemplate = pageTemplateRepository.getDefaultPersonPage();
+        defaultPageTemplate = 
pageTemplateRepository.getDefaultPage(PageType.PERSON_PROFILE);
     }
 
     @Test
@@ -206,8 +206,8 @@ public class JpaPageRepositoryTest {
     @Test
     @Transactional(readOnly = false)
     @Rollback(true)
-    public void createPersonPageForUser_validUser(){
-        Page page = repository.createPersonPageForUser(user, 
defaultPageTemplate);
+    public void createPageForUser_validUser(){
+        Page page = repository.createPageForUser(user, defaultPageTemplate);
         assertSame(user, page.getOwner());
         assertEquals(page.getName(), defaultPageTemplate.getName());
         assertNull(page.getParentPage());

Modified: 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/repository/impl/JpaPageTemplateRepositoryTest.java
 Tue Apr  3 14:31:52 2012
@@ -66,7 +66,7 @@ public class JpaPageTemplateRepositoryTe
     @Test
     public void getDefaultPersonPage_valid(){
         // get default page template
-        PageTemplate pt = pageTemplateRepository.getDefaultPersonPage();
+        PageTemplate pt = 
pageTemplateRepository.getDefaultPage(PageType.PERSON_PROFILE);
         // default page tests
         assertNotNull(pt);
         assertEquals("Template for person profile pages", pt.getDescription());
@@ -153,4 +153,40 @@ public class JpaPageTemplateRepositoryTe
         assertTrue(sp2w1.isLocked());
 
     }
+
+
+    @Test
+    public void getDefaultUserPage_valid(){
+        // get default page template
+        PageTemplate pt = pageTemplateRepository.getDefaultPage(PageType.USER);
+        // default page tests
+        assertNotNull(pt);
+        assertEquals("User profile pages", pt.getDescription());
+        assertEquals("User Profile", pt.getName());
+        assertEquals(PageType.USER, pt.getPageType());
+        assertEquals(0, pt.getRenderSequence());
+        assertTrue(pt.isDefaultTemplate());
+        assertEquals("# of regions for parent page", 1, 
pt.getPageTemplateRegions().size());
+        assertEquals("person_profile", pt.getPageLayout().getCode());
+        assertEquals("# of widgets on parent page region", 2, 
pt.getPageTemplateRegions().get(0).getPageTemplateWidgets().size());
+
+        // parent page region tests
+        PageTemplateRegion ptRegion1 = pt.getPageTemplateRegions().get(0);
+        assertEquals(pt.getEntityId(), 
ptRegion1.getPageTemplate().getEntityId());
+        assertEquals(0, ptRegion1.getRenderSequence());
+        assertEquals(2, ptRegion1.getPageTemplateWidgets().size());
+        assertTrue(ptRegion1.isLocked());
+        // parent page region 1 widget 1 tests
+        PageTemplateWidget ptw1 = ptRegion1.getPageTemplateWidgets().get(0);
+        assertEquals(ptw1.getPageTemplateRegion().getEntityId(), 
ptRegion1.getEntityId());
+        assertEquals(0, ptw1.getRenderSeq());
+        assertNotNull(ptw1.getWidget());
+        assertTrue(ptw1.isLocked());
+        // parent page region widget 2 tests
+        PageTemplateWidget ptw2 = ptRegion1.getPageTemplateWidgets().get(1);
+        assertEquals(ptw2.getPageTemplateRegion().getEntityId(), 
ptRegion1.getEntityId());
+        assertEquals(1, ptw2.getRenderSeq());
+        assertNotNull(ptw2.getWidget());
+        assertTrue(ptw2.isLocked());
+    }
 }

Modified: 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
 Tue Apr  3 14:31:52 2012
@@ -27,6 +27,8 @@ import org.hamcrest.CoreMatchers;
 import org.junit.Before;
 import org.junit.Test;
 
+import javax.persistence.NoResultException;
+import javax.persistence.NonUniqueResultException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -163,8 +165,8 @@ public class DefaultPageServiceTest {
 
         expect(pageRepository.getAllPages(VALID_USER_ID, 
PageType.PERSON_PROFILE)).andReturn(VALID_PAGES);
         
expect(userService.getUserById(isA(Long.class))).andReturn(user).once();
-        
expect(pageTemplateRepository.getDefaultPersonPage()).andReturn(pageTemplate).once();
-        
expect(pageRepository.createPersonPageForUser(user,pageTemplate)).andReturn(personPage);
+        
expect(pageTemplateRepository.getDefaultPage(PageType.PERSON_PROFILE)).andReturn(pageTemplate).once();
+        expect(pageRepository.createPageForUser(user, 
pageTemplate)).andReturn(personPage);
         replay(pageRepository, userService, pageTemplateRepository);
 
         assertThat(pageService.getPersonProfilePage(VALID_USER_ID), 
CoreMatchers.sameInstance(personPage));
@@ -176,7 +178,7 @@ public class DefaultPageServiceTest {
     public void addNewUserPage_noExistingPages() {
         final String PAGE_NAME = "my new page";
         final Long EXPECTED_RENDER_SEQUENCE = 1L;
-                      
+        PageTemplate pageTemplate = new PageTemplate() ;
         Page expectedPage = new Page();
         expectedPage.setName(PAGE_NAME);       
         expectedPage.setOwner(user);
@@ -186,10 +188,43 @@ public class DefaultPageServiceTest {
         expectedPage.setPageType(PageType.USER);
 
         expect(userService.getAuthenticatedUser()).andReturn(user);
-        
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
        
+        
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
+        
expect(pageTemplateRepository.getDefaultPage(PageType.USER)).andReturn(pageTemplate);
+        expect(pageRepository.createPageForUser(user, 
pageTemplate)).andReturn(expectedPage);
+        expect(pageRepository.getAllPages(user.getEntityId(), 
PageType.USER)).andReturn(new ArrayList<Page>());
+
+        replay(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
+
+        Page newPage = pageService.addNewUserPage(PAGE_NAME, PAGE_LAYOUT_CODE);
+        assertThat(newPage.getRenderSequence(), is(EXPECTED_RENDER_SEQUENCE));
+        assertThat(newPage.getName(), is(PAGE_NAME));
+        assertThat(newPage.getRegions().size(), 
is(pageLayout.getNumberOfRegions().intValue()));
+        assertThat(newPage.getPageType(), is(PageType.USER));
+
+        verify(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
+    }
+
+
+    @Test(expected = NoResultException.class)
+    public void addNewUserPage_noExistingPages_no_result_exception() {
+        final String PAGE_NAME = "my new page";
+        final Long EXPECTED_RENDER_SEQUENCE = 1L;
+
+        Page expectedPage = new Page();
+        expectedPage.setName(PAGE_NAME);
+        expectedPage.setOwner(user);
+        expectedPage.setPageLayout(pageLayout);
+        expectedPage.setRenderSequence(EXPECTED_RENDER_SEQUENCE);
+        
expectedPage.setRegions(createEmptyRegionList(pageLayout.getNumberOfRegions()));
+        expectedPage.setPageType(PageType.USER);
+
+        expect(userService.getAuthenticatedUser()).andReturn(user);
+        
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
         expect(pageRepository.save(expectedPage)).andReturn(expectedPage);
+        
expect(pageTemplateRepository.getDefaultPage(PageType.USER)).andThrow(new 
NoResultException("No Result Exception"));
+
         expect(pageRepository.getAllPages(user.getEntityId(), 
PageType.USER)).andReturn(new ArrayList<Page>());
-        replay(userService, pageLayoutRepository, pageRepository);
+        replay(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
 
         Page newPage = pageService.addNewUserPage(PAGE_NAME, PAGE_LAYOUT_CODE);
         assertThat(newPage.getRenderSequence(), is(EXPECTED_RENDER_SEQUENCE));
@@ -197,9 +232,70 @@ public class DefaultPageServiceTest {
         assertThat(newPage.getRegions().size(), 
is(pageLayout.getNumberOfRegions().intValue()));
         assertThat(newPage.getPageType(), is(PageType.USER));
 
-        verify(userService, pageLayoutRepository, pageRepository);
+        verify(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
     }
-    
+
+    @Test(expected = NonUniqueResultException.class)
+    public void 
addNewUserPage_noExistingPages_Non_Unique_ResultException_exception() {
+        final String PAGE_NAME = "my new page";
+        final Long EXPECTED_RENDER_SEQUENCE = 1L;
+
+        Page expectedPage = new Page();
+        expectedPage.setName(PAGE_NAME);
+        expectedPage.setOwner(user);
+        expectedPage.setPageLayout(pageLayout);
+        expectedPage.setRenderSequence(EXPECTED_RENDER_SEQUENCE);
+        
expectedPage.setRegions(createEmptyRegionList(pageLayout.getNumberOfRegions()));
+        expectedPage.setPageType(PageType.USER);
+
+        expect(userService.getAuthenticatedUser()).andReturn(user);
+        
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
+        expect(pageRepository.save(expectedPage)).andReturn(expectedPage);
+        
expect(pageTemplateRepository.getDefaultPage(PageType.USER)).andThrow(new 
NonUniqueResultException("Non-Unique Result Exception"));
+
+        expect(pageRepository.getAllPages(user.getEntityId(), 
PageType.USER)).andReturn(new ArrayList<Page>());
+        replay(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
+
+        Page newPage = pageService.addNewUserPage(PAGE_NAME, PAGE_LAYOUT_CODE);
+        assertThat(newPage.getRenderSequence(), is(EXPECTED_RENDER_SEQUENCE));
+        assertThat(newPage.getName(), is(PAGE_NAME));
+        assertThat(newPage.getRegions().size(), 
is(pageLayout.getNumberOfRegions().intValue()));
+        assertThat(newPage.getPageType(), is(PageType.USER));
+
+        verify(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
+    }
+
+    @Test
+    public void addNewUserPage_noExistingPages_and_have_template() {
+        final String PAGE_NAME = "my new page";
+        final Long EXPECTED_RENDER_SEQUENCE = 1L;
+        PageTemplate pageTemplate = new PageTemplate();
+        Page userPage = new Page();
+        userPage.setName("Page Template");
+        
userPage.setRegions(createEmptyRegionList(pageLayout.getNumberOfRegions()));
+
+        Page expectedPage = new Page();
+        expectedPage.setName(PAGE_NAME);
+        expectedPage.setOwner(user);
+        expectedPage.setPageLayout(pageLayout);
+        expectedPage.setRenderSequence(EXPECTED_RENDER_SEQUENCE);
+        
expectedPage.setRegions(createEmptyRegionList(pageLayout.getNumberOfRegions()));
+        expectedPage.setPageType(PageType.USER);
+
+        expect(userService.getAuthenticatedUser()).andReturn(user);
+        
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
+        expect(pageRepository.getAllPages(user.getEntityId(), 
PageType.USER)).andReturn(new ArrayList<Page>());
+        expect(pageRepository.createPageForUser(user, 
pageTemplate)).andReturn(userPage);
+        
expect(pageTemplateRepository.getDefaultPage(PageType.USER)).andReturn(pageTemplate);
+        replay(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
+        Page newPage = pageService.addNewUserPage(PAGE_NAME, PAGE_LAYOUT_CODE);
+        assertThat(newPage.getName(), is("Page Template"));
+        assertThat(newPage.getRegions().size(), 
is(pageLayout.getNumberOfRegions().intValue()));
+
+        verify(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
+    }
+
+
     @Test
     public void addNewUserPage_existingPages() {
         final String PAGE_NAME = "my new page";
@@ -312,7 +408,7 @@ public class DefaultPageServiceTest {
     @Test
     public void addNewDefaultUserPage() {
         final Long EXPECTED_RENDER_SEQUENCE = 1L;
-                      
+        PageTemplate pageTemplate = new PageTemplate();
         Page expectedPage = new Page();
         expectedPage.setName(defaultPageName);       
         expectedPage.setOwner(user);
@@ -322,16 +418,17 @@ public class DefaultPageServiceTest {
                 
         expect(userService.getUserById(user.getEntityId())).andReturn(user);
         
expect(pageLayoutRepository.getByPageLayoutCode(PAGE_LAYOUT_CODE)).andReturn(pageLayout);
-        expect(pageRepository.save(expectedPage)).andReturn(expectedPage);
-        expect(pageRepository.getAllPages(user.getEntityId(), 
PageType.USER)).andReturn(new ArrayList<Page>());       
-        replay(userService, pageLayoutRepository, pageRepository);
+        
expect(pageTemplateRepository.getDefaultPage(PageType.USER)).andReturn(pageTemplate);
+        expect(pageRepository.createPageForUser(user, 
pageTemplate)).andReturn(expectedPage);
+        expect(pageRepository.getAllPages(user.getEntityId(), 
PageType.USER)).andReturn(new ArrayList<Page>());
+        replay(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
 
         Page newPage = pageService.addNewDefaultUserPage(user.getEntityId());
         assertThat(newPage.getRenderSequence(), is(EXPECTED_RENDER_SEQUENCE));
         assertThat(newPage.getName(), is(defaultPageName));
         assertThat(newPage.getRegions().size(), 
is(pageLayout.getNumberOfRegions().intValue()));
         
-        verify(userService, pageLayoutRepository, pageRepository);
+        verify(userService, pageLayoutRepository, pageRepository, 
pageTemplateRepository);
     }
     
     @Test

Modified: 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultUserServiceTest.java
 Tue Apr  3 14:31:52 2012
@@ -312,8 +312,8 @@ public class DefaultUserServiceTest {
     public void registerNewUser_valid(){
         User user = new User();
         expect(userRepository.save(user)).andReturn(user).once();
-        expect(pageTemplateRepository.getDefaultPersonPage()).andReturn(new 
PageTemplate()).once();
-        expect(pageRepository.createPersonPageForUser(isA(User.class), 
isA(PageTemplate.class))).andReturn(new Page());
+        
expect(pageTemplateRepository.getDefaultPage(PageType.PERSON_PROFILE)).andReturn(new
 PageTemplate()).once();
+        expect(pageRepository.createPageForUser(isA(User.class), 
isA(PageTemplate.class))).andReturn(new Page());
         replay(userRepository, pageTemplateRepository, pageRepository);
         service.registerNewUser(user);
         verify(userRepository, pageTemplateRepository, pageRepository);

Modified: rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql?rev=1308947&r1=1308946&r2=1308947&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql 
(original)
+++ rave/trunk/rave-components/rave-core/src/test/resources/test_data.sql Tue 
Apr  3 14:31:52 2012
@@ -1014,3 +1014,30 @@ set @next_person_profile_subpage2_templa
 insert into page_template_widget (entity_id, page_template_region_id, 
render_sequence, widget_id, locked)
 values (@next_person_profile_subpage2_template_widget_id, 
@person_profile_subpage2_template_region_id, 0, @my_activity_widget_id, true);
 UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = 
@page_template_widget_seq;
+
+
+----------------------------------------
+-- user page template
+----------------------------------------
+-- page
+set @user_profile_page_template_id = (SELECT seq_count FROM 
RAVE_PORTAL_SEQUENCES WHERE seq_name = @page_template_seq);
+insert into page_template (entity_id, page_type, page_layout_id, name, 
description, parent_page_template_id, render_sequence, default_template)
+values (@user_profile_page_template_id, 'USER', @person_profile_layout_id, 
'User Profile', 'User profile pages', null, 0, true);
+UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = 
@page_template_seq;
+
+-- region1
+set @user_profile_page_template_region_id = (SELECT seq_count FROM 
RAVE_PORTAL_SEQUENCES WHERE seq_name = @page_template_region_seq);
+insert into page_template_region (entity_id, render_sequence, 
page_template_id, locked)
+values (@user_profile_page_template_region_id, 0, 
@user_profile_page_template_id, true);
+UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = 
@page_template_region_seq;
+
+-- widgets
+set @next_user_profile_page_template_widget_id = (SELECT seq_count FROM 
RAVE_PORTAL_SEQUENCES WHERE seq_name = @page_template_widget_seq);
+insert into page_template_widget (entity_id, page_template_region_id, 
render_sequence, widget_id, locked)
+values (@next_user_profile_page_template_widget_id, 
@user_profile_page_template_region_id, 0, @my_groups_widget_id, true);
+UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = 
@page_template_widget_seq;
+
+set @next_user_profile_page_template_widget_id = (SELECT seq_count FROM 
RAVE_PORTAL_SEQUENCES WHERE seq_name = @page_template_widget_seq);
+insert into page_template_widget (entity_id, page_template_region_id, 
render_sequence, widget_id, locked)
+values (@next_user_profile_page_template_widget_id, 
@user_profile_page_template_region_id, 1, @work_experience_widget_id, true);
+UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name = 
@page_template_widget_seq;


Reply via email to