Package org.apache.tapestry.portlet

Source Code of org.apache.tapestry.portlet.TestMatchingPortletPageResolver

// Copyright 2005 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.tapestry.portlet;

import static org.easymock.EasyMock.checkOrder;
import static org.easymock.EasyMock.expect;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.tapestry.BaseComponentTestCase;
import org.apache.tapestry.IPage;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.PageNotFoundException;
import org.testng.annotations.Test;

import javax.portlet.PortletMode;
import javax.portlet.PortletRequest;
import javax.portlet.WindowState;

/**
* Tests for {@link org.apache.tapestry.portlet.MatchingPortletPageResolver}.
*
* @author Howard M. Lewis Ship
* @since 4.0
*/
@Test
public class TestMatchingPortletPageResolver extends BaseComponentTestCase
{
   
    private IRequestCycle newCycle(String pageName)
    {
        IPage page = newPage();
       
        IRequestCycle cycle = newCycle();
        checkOrder(cycle, false);
       
        expect(cycle.getPage(pageName)).andReturn(page);

        return cycle;
    }

    private PageResolverContribution newContribution(String mimeType, String portletMode,
            String windowState, String pageName)
    {
        PageResolverContribution result = new PageResolverContribution();
        result.setMimeType(mimeType);
        result.setPortletMode(portletMode);
        result.setWindowState(windowState);
        result.setPageName(pageName);

        return result;
    }

    public void testNoMatchOnContentType()
    {
        IRequestCycle cycle = newCycle();
       
        PortletRequest request = newMock(PortletRequest.class);
       
        trainContentType(request, "text/xml");

        List l = Collections.singletonList(newContribution("text/html", null, "wierd", "Wierd"));

        replay();

        MatchingPortletPageResolver resolver = new MatchingPortletPageResolver();
        resolver.setContributions(l);
        resolver.initializeService();
        resolver.setRequest(request);

        assertNull(resolver.getPageNameForRequest(cycle));

        verify();
    }

    public void testNoMatchOnPortletMode()
    {
        IRequestCycle cycle = newCycle();
       
        PortletRequest request = newMock(PortletRequest.class);

        trainPortletMode(request, "edit");
       
        List l = Collections.singletonList(newContribution(null, "view", null, "Wierd"));

        replay();

        MatchingPortletPageResolver resolver = new MatchingPortletPageResolver();
        resolver.setContributions(l);
        resolver.initializeService();
        resolver.setRequest(request);

        assertNull(resolver.getPageNameForRequest(cycle));

        verify();
    }

    public void testNoMatchOnWindowState()
    {
        IRequestCycle cycle = newCycle();

        PortletRequest request = newMock(PortletRequest.class);

        trainWindowState(request, "huge");

        List l = Collections.singletonList(newContribution(null, null, "tiny", "Wierd"));

        replay();

        MatchingPortletPageResolver resolver = new MatchingPortletPageResolver();
        resolver.setContributions(l);
        resolver.initializeService();
        resolver.setRequest(request);

        assertNull(resolver.getPageNameForRequest(cycle));

        verify();
    }

    public void testSortingCounts()
    {
        IRequestCycle cycle = newCycle("EditHuge");

        PortletRequest request = newMock(PortletRequest.class);
       
        List l = new ArrayList();
        l.add(newContribution(null, "edit", null, "EditNormal"));
        l.add(newContribution(null, "edit", "huge", "EditHuge"));
       
        trainPortletMode(request, "edit");
        trainWindowState(request, "huge");

        replay();

        MatchingPortletPageResolver resolver = new MatchingPortletPageResolver();
        resolver.setContributions(l);
        resolver.initializeService();
        resolver.setRequest(request);

        assertEquals("EditHuge", resolver.getPageNameForRequest(cycle));

        verify();
    }

    public void testPageMissing()
    {
        IPage page = newPage();
        IRequestCycle cycle = newCycle();

        PortletRequest request = newMock(PortletRequest.class);

        List l = new ArrayList();
        l.add(newContribution(null, "edit", null, "EditNormal"));
        l.add(newContribution(null, "edit", "huge", "EditHuge"));

        trainPortletMode(request, "edit");
        trainWindowState(request, "huge");

        expect(cycle.getPage("EditHuge")).andThrow(new PageNotFoundException("missing!"));
       
        trainPortletMode(request, "edit");

        expect(cycle.getPage("EditNormal")).andReturn(page);
       
        replay();

        MatchingPortletPageResolver resolver = new MatchingPortletPageResolver();
        resolver.setContributions(l);
        resolver.initializeService();
        resolver.setRequest(request);

        assertEquals("EditNormal", resolver.getPageNameForRequest(cycle));

        verify();
    }

    private void trainContentType(PortletRequest request, String contentType)
    {
        expect(request.getResponseContentType()).andReturn(contentType);
    }

    private void trainPortletMode(PortletRequest request, String modeName)
    {
        PortletMode mode = new PortletMode(modeName);

        expect(request.getPortletMode()).andReturn(mode);
    }

    private void trainWindowState(PortletRequest request, String stateName)
    {
        WindowState state = new WindowState(stateName);

        expect(request.getWindowState()).andReturn(state);
    }
}
TOP

Related Classes of org.apache.tapestry.portlet.TestMatchingPortletPageResolver

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.