package org.onehippo.cms7.hst.hippokart.components; import javax.jcr.Session; import javax.servlet.ServletContext; import org.hippoecm.hst.configuration.hosting.Mount; import org.hippoecm.hst.content.beans.manager.ObjectConverter; import org.hippoecm.hst.content.beans.standard.HippoBean; import org.hippoecm.hst.core.component.HstRequest; import org.hippoecm.hst.core.component.HstResponse; import org.hippoecm.hst.core.request.ComponentConfiguration; import org.hippoecm.hst.core.request.HstRequestContext; import org.hippoecm.hst.core.request.ResolvedMount; import org.hippoecm.hst.core.request.ResolvedSiteMapItem; import org.hippoecm.hst.mock.content.beans.standard.MockHippoBean; import org.hippoecm.hst.mock.core.component.MockHstRequest; import org.hippoecm.hst.mock.core.request.MockComponentConfiguration; import org.hippoecm.hst.mock.core.request.MockHstRequestContext; import org.hippoecm.hst.mock.core.request.MockResolvedSiteMapItem; import org.junit.Test; import static junit.framework.Assert.assertEquals; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertNull; /** * Test class for {@link Detail} */ public class DetailTest { @Test public void doBeforeRender_FoundBean() throws Exception { HippoBean detailBean = new MockHippoBean(); ServletContext servletContext = createMock(ServletContext.class); ComponentConfiguration componentConfiguration = new MockComponentConfiguration(); ObjectConverter objectConverter = createMock(ObjectConverter.class); HstRequest request = new MockHstRequest(); Session session = createMock(Session.class); HstResponse response = createMock(HstResponse.class); HstRequestContext requestContext = new MockHstRequestContext(); ((MockHstRequestContext) requestContext).setSession(session); ResolvedMount resolvedMount = createMock(ResolvedMount.class); Mount mount = createMock(Mount.class); ((MockHstRequestContext) requestContext).setResolvedMount(resolvedMount); ResolvedSiteMapItem resolvedSiteMapItem = new MockResolvedSiteMapItem(); ((MockResolvedSiteMapItem) resolvedSiteMapItem).setRelativeContentPath("common/detail"); ((MockHstRequestContext) requestContext).setResolvedSiteMapItem(resolvedSiteMapItem); ((MockHstRequest) request).setRequestContext(requestContext); expect(resolvedMount.getMount()).andReturn(mount); expect(mount.getContentPath()).andReturn("/hst:hst/hst:sites/mysite-live/hst:content"); expect(servletContext.getAttribute("org.hippoecm.hst.component.support.bean.BaseHstComponent.objectConverter")).andReturn(objectConverter).anyTimes(); expect(objectConverter.getObject(session, "/hst:hst/hst:sites/mysite-live/hst:content/common/detail")).andReturn(detailBean); replay(servletContext, objectConverter, resolvedMount, mount, response, session); Detail detail = new Detail(); detail.init(servletContext, componentConfiguration); detail.doBeforeRender(request, response); verify(servletContext, objectConverter, resolvedMount, mount, response, session); assertEquals(detailBean, request.getAttribute("document")); } @Test public void doBeforeRender_MissingBean() throws Exception { ServletContext servletContext = createMock(ServletContext.class); ComponentConfiguration componentConfiguration = new MockComponentConfiguration(); ObjectConverter objectConverter = createMock(ObjectConverter.class); HstRequest request = new MockHstRequest(); Session session = createMock(Session.class); HstResponse response = createMock(HstResponse.class); HstRequestContext requestContext = new MockHstRequestContext(); ((MockHstRequestContext) requestContext).setSession(session); ResolvedMount resolvedMount = createMock(ResolvedMount.class); Mount mount = createMock(Mount.class); ((MockHstRequestContext) requestContext).setResolvedMount(resolvedMount); ResolvedSiteMapItem resolvedSiteMapItem = new MockResolvedSiteMapItem(); ((MockResolvedSiteMapItem) resolvedSiteMapItem).setRelativeContentPath("common/detail"); ((MockHstRequestContext) requestContext).setResolvedSiteMapItem(resolvedSiteMapItem); ((MockHstRequest) request).setRequestContext(requestContext); expect(resolvedMount.getMount()).andReturn(mount); expect(mount.getContentPath()).andReturn("/hst:hst/hst:sites/mysite-live/hst:content"); expect(servletContext.getAttribute("org.hippoecm.hst.component.support.bean.BaseHstComponent.objectConverter")).andReturn(objectConverter).anyTimes(); expect(objectConverter.getObject(session, "/hst:hst/hst:sites/mysite-live/hst:content/common/detail")).andReturn(null); response.setStatus(HstResponse.SC_NOT_FOUND); expectLastCall(); replay(servletContext, objectConverter, resolvedMount, mount, response, session); Detail detail = new Detail(); detail.init(servletContext, componentConfiguration); detail.doBeforeRender(request, response); verify(servletContext, objectConverter, resolvedMount, mount, response, session); assertNull(request.getAttribute("document")); } }