/**
* $Id: EntityViewTest.java 125663 2013-06-12 13:43:37Z azeckoski@unicon.net $
* $URL: https://source.sakaiproject.org/svn/entitybroker/trunk/api/src/test/org/sakaiproject/entitybroker/EntityViewTest.java $
* EntityViewTest.java - entity-broker - Apr 10, 2008 7:20:29 PM - azeckoski
**************************************************************************
* Copyright (c) 2008 The Sakai Foundation
*
* Licensed under the Educational Community 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.opensource.org/licenses/ECL-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.sakaiproject.entitybroker;
import java.util.HashMap;
import org.sakaiproject.entitybroker.EntityReference;
import org.sakaiproject.entitybroker.EntityView;
import org.sakaiproject.entitybroker.util.TemplateParseUtil;
import junit.framework.TestCase;
/**
* testing the entity view object
*
* @author Aaron Zeckoski (aaron@caret.cam.ac.uk)
*/
public class EntityViewTest extends TestCase {
private final String PREFIX1 = "prefix1";
private final String EXTENSION1 = null;
private static final String ID1 = "111";
private final String URL1 = EntityReference.SEPARATOR + PREFIX1 + EntityReference.SEPARATOR + ID1;
private final String INPUT_URL1 = URL1;
private final String PREFIX2 = "longprefix2";
private final String EXTENSION2 = "html";
private static final String ID2 = "222222";
private final String URL2 = EntityReference.SEPARATOR + PREFIX2 + EntityReference.SEPARATOR + ID2 + "." + EXTENSION2;
private final String INPUT_URL2 = EntityReference.SEPARATOR + PREFIX2 + EntityReference.SEPARATOR + ID2
+ EntityReference.SEPARATOR + "extra/junk" + "." + EXTENSION2;
private final String PREFIX3 = "prefix3";
private final String EXTENSION3 = "xml";
private final String URL3 = EntityReference.SEPARATOR + PREFIX3 + "." + EXTENSION3;
private final String INPUT_URL3 = URL3;
private final String INVALID_URL = "invalid_reference-1";
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#EntityView()}.
*/
public void testEntityView() {
EntityView ev = null;
// make sure this does not die
ev = new EntityView();
assertNotNull(ev);
// check it loaded the default templates
assertNotNull(ev.getParseTemplate(TemplateParseUtil.TEMPLATE_SHOW));
}
public void testEntityViewReference() {
EntityView ev = null;
// make sure this does not die
ev = new EntityView();
ev.setEntityReference( new EntityReference("/mystuff") );
assertNotNull(ev);
assertEquals(EntityView.VIEW_LIST, ev.getViewKey());
assertEquals("mystuff", ev.getEntityReference().getPrefix());
assertEquals(null, ev.getEntityReference().getId());
assertEquals(null, ev.getExtension());
assertEquals("/mystuff", ev.toString());
assertEquals(null, ev.getOriginalEntityUrl());
ev = new EntityView();
ev.setEntityReference( new EntityReference("/mystuff/myid") );
assertNotNull(ev);
assertEquals(EntityView.VIEW_SHOW, ev.getViewKey());
assertEquals("mystuff", ev.getEntityReference().getPrefix());
assertEquals("myid", ev.getEntityReference().getId());
assertEquals(null, ev.getExtension());
assertEquals("/mystuff/myid", ev.toString());
assertEquals(null, ev.getOriginalEntityUrl());
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#EntityView(java.lang.String, java.util.Map, java.lang.String)}.
*/
public void testEntityViewStringMapOfStringStringString() {
EntityView ev = null;
HashMap<String, String> m = new HashMap<String, String>();
m.put(TemplateParseUtil.PREFIX, PREFIX1);
m.put(TemplateParseUtil.ID, ID1);
ev = new EntityView(TemplateParseUtil.TEMPLATE_SHOW, m, EXTENSION1);
assertNotNull(ev);
assertEquals(TemplateParseUtil.TEMPLATE_SHOW, ev.getViewKey());
assertEquals(PREFIX1, ev.getEntityReference().getPrefix());
assertEquals(ID1, ev.getEntityReference().getId());
assertEquals(EXTENSION1, ev.getExtension());
assertEquals(URL1, ev.toString());
assertEquals(null, ev.getOriginalEntityUrl());
m = new HashMap<String, String>();
m.put(TemplateParseUtil.PREFIX, PREFIX2);
m.put(TemplateParseUtil.ID, ID2);
ev = new EntityView(TemplateParseUtil.TEMPLATE_SHOW, m, EXTENSION2);
assertNotNull(ev);
assertEquals(TemplateParseUtil.TEMPLATE_SHOW, ev.getViewKey());
assertEquals(PREFIX2, ev.getEntityReference().getPrefix());
assertEquals(ID2, ev.getEntityReference().getId());
assertEquals(EXTENSION2, ev.getExtension());
assertEquals(URL2, ev.toString());
assertEquals(null, ev.getOriginalEntityUrl());
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#EntityView(java.lang.String)}.
*/
public void testEntityViewString() {
EntityView ev = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
assertEquals(TemplateParseUtil.TEMPLATE_SHOW, ev.getViewKey());
assertEquals(PREFIX1, ev.getEntityReference().getPrefix());
assertEquals(ID1, ev.getEntityReference().getId());
assertEquals(EXTENSION1, ev.getExtension());
assertEquals(URL1, ev.toString());
assertEquals(INPUT_URL1, ev.getOriginalEntityUrl());
ev = new EntityView(INPUT_URL2);
assertNotNull(ev);
assertEquals(TemplateParseUtil.TEMPLATE_SHOW, ev.getViewKey());
assertEquals(PREFIX2, ev.getEntityReference().getPrefix());
assertEquals(ID2, ev.getEntityReference().getId());
assertEquals(EXTENSION2, ev.getExtension());
assertEquals(URL2, ev.toString());
assertEquals(INPUT_URL2, ev.getOriginalEntityUrl());
ev = new EntityView(INPUT_URL3);
assertNotNull(ev);
assertEquals(TemplateParseUtil.TEMPLATE_LIST, ev.getViewKey());
assertEquals(PREFIX3, ev.getEntityReference().getPrefix());
assertEquals(null, ev.getEntityReference().getId());
assertEquals(EXTENSION3, ev.getExtension());
assertEquals(URL3, ev.toString());
assertEquals(INPUT_URL3, ev.getOriginalEntityUrl());
// invalid url causes exception
try {
ev = new EntityView(INVALID_URL);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e);
}
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#loadParseTemplates(java.util.List)}.
*/
public void testLoadParseTemplates() {
EntityView ev = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
for (int i = 0; i < TemplateParseUtil.PARSE_TEMPLATE_KEYS.length; i++) {
String template = ev.getParseTemplate(TemplateParseUtil.PARSE_TEMPLATE_KEYS[i]);
assertNotNull( template );
}
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#toString()}.
*/
public void testToString() {
EntityView ev = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
assertEquals("/" + PREFIX1, ev.getEntityURL(TemplateParseUtil.TEMPLATE_LIST, null));
assertEquals(URL1, ev.getEntityURL(TemplateParseUtil.TEMPLATE_SHOW, null));
assertEquals(URL1 + "/edit", ev.getEntityURL(TemplateParseUtil.TEMPLATE_EDIT, null));
assertEquals("/" + PREFIX1 + "/new", ev.getEntityURL(TemplateParseUtil.TEMPLATE_NEW, null));
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#getParseTemplate(java.lang.String)}.
*/
public void testGetParseTemplate() {
EntityView ev = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
String template = ev.getParseTemplate(TemplateParseUtil.TEMPLATE_SHOW);
assertNotNull(template);
assertEquals(TemplateParseUtil.getDefaultTemplate(TemplateParseUtil.TEMPLATE_SHOW), template);
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#getPathSegment(java.lang.String)}.
*/
public void testGetPathSegment() {
EntityView ev = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
assertNotNull( ev.getPathSegment(EntityView.PREFIX) );
assertEquals(PREFIX1, ev.getPathSegment(EntityView.PREFIX) );
assertNotNull( ev.getPathSegment(EntityView.ID) );
assertEquals(ID1, ev.getPathSegment(EntityView.ID) );
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#getOriginalEntityUrl()}.
*/
public void testGetOriginalEntityUrl() {
EntityView ev = null;
ev = new EntityView(INPUT_URL2);
assertEquals(URL2, ev.toString());
assertEquals(INPUT_URL2, ev.getOriginalEntityUrl());
ev = new EntityView("/myprefix/myid/extra");
assertEquals("/myprefix/myid", ev.toString());
assertEquals("/myprefix/myid/extra", ev.getOriginalEntityUrl());
}
/**
* Test method for {@link org.sakaiproject.entitybroker.EntityView#getReference(java.lang.String)}.
*/
public void testGetEntityUrl() {
EntityView ev = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
assertEquals("/" + PREFIX1, ev.getEntityURL(TemplateParseUtil.TEMPLATE_LIST, null));
assertEquals(URL1, ev.getEntityURL(TemplateParseUtil.TEMPLATE_SHOW, null));
assertEquals(URL1 + "/edit", ev.getEntityURL(TemplateParseUtil.TEMPLATE_EDIT, null));
assertEquals("/" + PREFIX1 + "/new", ev.getEntityURL(TemplateParseUtil.TEMPLATE_NEW, null));
ev = new EntityView(INPUT_URL3);
assertNotNull(ev);
assertEquals(URL3, ev.getEntityURL(TemplateParseUtil.TEMPLATE_LIST, EXTENSION3));
assertEquals("/" + PREFIX3, ev.getEntityURL(TemplateParseUtil.TEMPLATE_LIST, null));
assertEquals("/" + PREFIX3, ev.getEntityURL(TemplateParseUtil.TEMPLATE_SHOW, null));
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
ev.setViewKey(EntityView.VIEW_DELETE);
assertEquals(URL1 + "/delete", ev.getEntityURL());
ev.setViewKey(EntityView.VIEW_EDIT);
assertEquals(URL1 + "/edit", ev.getEntityURL());
ev.setViewKey(EntityView.VIEW_LIST);
assertEquals("/" + PREFIX1, ev.getEntityURL());
ev.setViewKey(EntityView.VIEW_NEW);
assertEquals("/" + PREFIX1 + "/new", ev.getEntityURL());
ev.setViewKey(EntityView.VIEW_SHOW);
assertEquals(URL1, ev.getEntityURL());
try {
ev.getEntityURL("xxxxxxxxxxxxxxxxxx", null);
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e);
}
}
public void testGetPathSegmentInt() {
EntityView ev = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
assertEquals(PREFIX1, ev.getPathSegment(0));
assertEquals(ID1, ev.getPathSegment(1));
assertEquals(null, ev.getPathSegment(2));
ev = new EntityView(INPUT_URL2);
assertNotNull(ev);
assertEquals(PREFIX2, ev.getPathSegment(0));
assertEquals(ID2, ev.getPathSegment(1));
assertEquals("extra", ev.getPathSegment(2));
assertEquals("junk", ev.getPathSegment(3));
assertEquals(null, ev.getPathSegment(4));
ev = new EntityView("/myprefix/action.xml");
assertNotNull(ev);
assertEquals("myprefix", ev.getPathSegment(0) );
assertEquals("action", ev.getPathSegment(1) );
assertEquals(null, ev.getPathSegment(2) );
ev = new EntityView("/myprefix/myid/action.xml");
assertNotNull(ev);
assertEquals("myprefix", ev.getPathSegment(0) );
assertEquals("myid", ev.getPathSegment(1) );
assertEquals("action", ev.getPathSegment(2) );
assertEquals(null, ev.getPathSegment(3) );
// SAK-16975
ev = new EntityView("/myprefix/myid/stuff/this has spaces.csv");
assertNotNull(ev);
assertEquals("myprefix", ev.getPathSegment(0) );
assertEquals("myid", ev.getPathSegment(1) );
assertEquals("stuff", ev.getPathSegment(2) );
assertEquals("this has spaces", ev.getPathSegment(3) );
assertEquals(null, ev.getPathSegment(4) );
ev = new EntityView("/myprefix/myid/stuff/this_is_a_site.with.periods.in.the.name");
assertNotNull(ev);
assertEquals("myprefix", ev.getPathSegment(0) );
assertEquals("myid", ev.getPathSegment(1) );
assertEquals("stuff", ev.getPathSegment(2) );
assertEquals("this_is_a_site.with.periods.in.the.name", ev.getPathSegment(3) );
assertEquals(null, ev.getPathSegment(4) );
}
public void testGetPathSegments() {
EntityView ev = null;
String[] segments = null;
ev = new EntityView(INPUT_URL1);
assertNotNull(ev);
segments = ev.getPathSegments();
assertNotNull(segments);
assertEquals(PREFIX1, segments[0]);
assertEquals(ID1, segments[1]);
ev = new EntityView("/myprefix/myid/action.xml");
assertNotNull(ev);
segments = ev.getPathSegments();
assertNotNull(segments);
assertEquals("myprefix", segments[0] );
assertEquals("myid", segments[1] );
assertEquals("action", segments[2] );
}
public void testNPEwhenGetSegments() {
EntityView view = new EntityView(new EntityReference("test", ""), EntityView.VIEW_LIST, null);
String[] segments = view.getPathSegments();
assertNotNull(segments);
assertEquals("test", view.getPathSegment(0));
assertEquals(null, view.getPathSegment(1));
}
}