/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.wink.server.internal.providers.entity.html;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.apache.wink.common.model.synd.SyndCategory;
import org.apache.wink.common.model.synd.SyndContent;
import org.apache.wink.common.model.synd.SyndEntry;
import org.apache.wink.common.model.synd.SyndLink;
import org.apache.wink.common.model.synd.SyndPerson;
import org.apache.wink.common.model.synd.SyndText;
import org.springframework.mock.web.MockHttpServletResponse;
/**
* Test default Html Representation for entry resource.
*/
public class HtmlRepresentationEntryDefaultTest extends HtmlMockServletInvocationTest {
private static Date CURRENT_DATE = new Date();
private static String ID = "1";
private static String TITLE = "Entry 1";
private static String OWNER = "Tali";
private static String SUMMARY = "summary for Entry 1";
private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy"); //$NON-NLS-1$
private static final String CATEGORY_SCHEME = "urn:com:hp:categories:scheme";
private static final String CATEGORY_TERM = "high";
private static final String LINK_REL = "urn:com:hp:links:rel";
private static final String LINK_TYPE = MediaType.APPLICATION_ATOM_XML;
private static final String LINK_HREF = "www.google.com";
private static final String CONTENT_TEXT = "<b>This is a test</b>";
private static final String HTML_HEADER_EXPANDED =
"<script type='text/javascript' >\nvar collapseExpand1 = new CollapseExpand('1');\n</script>\n<table class='wide-table' margin-top='0' cellpadding='0' cellspacing='0'>\n<tr>\n<td >\n<table class='wide-table expandable-form-header'>\n<tr>\n<td style='{CURSOR: pointer};' class='portlet-expand-button minimum-icon-size'><div id='" + ID
+ "_div' onclick=\"collapseExpand"
+ ID
+ ".collapseExpand();\">-</div></td>\n<td> "
+ TITLE
+ "</td>\n</tr></table>\n</td>\n</tr>\n</table>\n<table id='"
+ ID
+ "' style='display: block' class='wide-table' cellpadding=0 cellspacing=0>\n<td class='form-area-width'>\n";
private static final String HTML_HEADER_COLLAPSED =
"<script type='text/javascript' >\nvar collapseExpand1 = new CollapseExpand('1');\n</script>\n<table class='wide-table' margin-top='0' cellpadding='0' cellspacing='0'>\n<tr>\n<td >\n<table class='wide-table expandable-form-header'>\n<tr>\n<td style='{CURSOR: pointer};' class='portlet-expand-button minimum-icon-size'><div id='" + ID
+ "_div' onclick=\"collapseExpand"
+ ID
+ ".collapseExpand();\">+</div></td>\n<td> "
+ TITLE
+ "</td>\n</tr></table>\n</td>\n</tr>\n</table>\n<table id='"
+ ID
+ "' style='display: none' class='wide-table' cellpadding=0 cellspacing=0>\n<td class='form-area-width'>\n";
private static final String HTML_FOOTER_COLLAPSED =
"</td>\n</table>\n<script type='text/javascript' >\ncollapseExpand" + ID
+ ".collapse();\n</script>\n";
private static final String HTML_FOOTER_EXPANDED = "</td>\n</table>\n";
@Path("/defectsDefault/htmlDefect")
public static class DefectDefaultResource {
@GET
@Produces(MediaType.TEXT_HTML)
public Object getSomeDefect(@Context HttpServletResponse httpServletResponse,
@Context HttpServletRequest httpServletRequest) {
// HtmlEntryResource resource = new
// HtmlEntryResource(httpServletRequest,
// httpServletResponse);
//
// return resource;
return new HtmlDescriptor(createSyndEntry());
}
}// class defectDefaultResource
/**
* The method invokes the Resource and check the response.
*
* @throws IOException
*/
public void testGetEntryHtmlDefault() throws Exception {
MockHttpServletResponse response =
invoke(constructMockRequest("GET", "/defectsDefault/htmlDefect", MediaType.TEXT_HTML));
assertEquals("HTTP status", 200, response.getStatus());
String content = response.getContentAsString();
assertEquals("body", HtmlConstants.DEFAULT_JSP_ENTRY_PATH, content);
}
/**
* The method tests the HtmlRepresentationEntryAdapter that is used for
* default case.
*/
public void HtmlSyndEntryAdapter() {
HtmlSyndEntryAdapter entryAdapter = new HtmlSyndEntryAdapter(createSyndEntry());
assertEquals("id", ID, entryAdapter.getId());
assertEquals("title", TITLE, entryAdapter.getTitle());
assertEquals("owner", OWNER, entryAdapter.getAuthor());
assertEquals("summary", SUMMARY, entryAdapter.getSummary());
assertEquals("updated", simpleDateFormat.format(CURRENT_DATE), entryAdapter.getUpdated());
assertEquals("published", simpleDateFormat.format(CURRENT_DATE), entryAdapter
.getPublished());
assertEquals("categories scheme", CATEGORY_SCHEME, entryAdapter.getCategories().get(0)
.getScheme());
assertEquals("categories term", CATEGORY_TERM, entryAdapter.getCategories().get(0)
.getTerm());
assertEquals("link rel", LINK_REL, entryAdapter.getLinks().get(0).getRel());
assertEquals("link type", LINK_TYPE, entryAdapter.getLinks().get(0).getType());
assertEquals("link href", LINK_HREF, entryAdapter.getLinks().get(0).getHref());
try {
assertEquals("content", CONTENT_TEXT, entryAdapter.getContent());
} catch (IOException e) {
e.printStackTrace();
assertFalse(true);
}
}
/**
* The method checks the HTML header that is returned from
* ExpandableSectionHelper.
*/
public void testHtmlHeaderSection() {
assertEquals(HTML_HEADER_EXPANDED, ExpandableSectionHelper.getFormHeaderHtml(TITLE,
ID,
false));
assertEquals(HTML_HEADER_COLLAPSED, ExpandableSectionHelper.getFormHeaderHtml(TITLE,
ID,
true));
}
/**
* The method checks the HTML footer that is returned from
* ExpandableSectionHelper.
*/
public void testHtmlFooterSection() {
assertEquals(HTML_FOOTER_COLLAPSED, ExpandableSectionHelper.getFormFooterHtml(ID, true));
assertEquals(HTML_FOOTER_EXPANDED, ExpandableSectionHelper.getFormFooterHtml(ID, false));
}
/**
* The method creates DocumentResource with dummy data.
*
* @return DocumentResource<Object>
*/
public static SyndEntry createSyndEntry() {
SyndEntry syndEntry = new SyndEntry();
syndEntry.setTitle(new SyndText(TITLE));
syndEntry.setId(ID);
syndEntry.setUpdated(CURRENT_DATE);
syndEntry.setPublished(CURRENT_DATE);
SyndPerson person = new SyndPerson();
person.setName(OWNER);
syndEntry.addAuthor(person);
syndEntry.setSummary(new SyndText(SUMMARY));
SyndCategory syndCategory = new SyndCategory();
syndCategory.setScheme(CATEGORY_SCHEME);
syndCategory.setTerm(CATEGORY_TERM);
syndEntry.addCategory(syndCategory);
SyndLink syndLink = new SyndLink();
syndLink.setType(LINK_TYPE);
syndLink.setRel(LINK_REL);
syndLink.setHref(LINK_HREF);
syndEntry.addLink(syndLink);
SyndContent content = new SyndContent();
content.setValue(CONTENT_TEXT);
syndEntry.setContent(content);
return syndEntry;
}
}