/*
* (C) Copyright 2006-2008 Nuxeo SA (http://nuxeo.com/) and others.
*
* 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.
*
* Contributors:
* Alexandre Russel
*
* $Id$
*/
package org.nuxeo.ecm.platform.annotations.gwt.client.view;
import org.nuxeo.ecm.platform.annotations.gwt.client.AbstractDocumentGWTTest;
import org.nuxeo.ecm.platform.annotations.gwt.client.util.Visitor;
import org.nuxeo.ecm.platform.annotations.gwt.client.view.decorator.AnnoteaDecoratorVisitor;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.user.client.ui.RootPanel;
/**
* @author <a href="mailto:arussel@nuxeo.com">Alexandre Russel</a>
*/
public class GwtTestDecoratorVisitor extends AbstractDocumentGWTTest {
public void testStraight() {
createDocument();
Element bNode = RootPanel.getBodyElement().getElementsByTagName("b").getItem(0);
assertNotNull(bNode);
AnnoteaDecoratorVisitor processor = new AnnoteaDecoratorVisitor(bNode, 8, 13, getDefaultAnnotation(), null);
Visitor visitor = new Visitor(processor);
visitor.process(bNode);
assertNotNull(bNode);
NodeList list = bNode.getChildNodes();
SpanElement span = SpanElement.as(bNode.getParentElement());
assertEquals(3, list.getLength());
assertEquals(span.getInnerHTML(),
"<b>Nuxeo EP 5 - <span class=\"decorate decorate0\">Nuxeo An</span>notation</b>");
processor = new AnnoteaDecoratorVisitor(bNode, 5, 23, getDefaultAnnotation(), null);
visitor = new Visitor(processor);
visitor.process(bNode);
assertEquals(5, bNode.getChildNodes().getLength());
assertEquals(
span.getInnerHTML(),
"<b>Nuxeo EP 5 - <span class=\"decorate decorate0\">Nuxeo An</span>no<span class=\"decorate decorate0\">tatio</span>n</b>");
}
public void testReverse() {
createDocument();
Element bNode = RootPanel.getBodyElement().getElementsByTagName("b").getItem(0);
assertNotNull(bNode);
AnnoteaDecoratorVisitor processor = new AnnoteaDecoratorVisitor(bNode, 5, 23, getDefaultAnnotation(), null);
Visitor visitor = new Visitor(processor);
visitor.process(bNode);
assertNotNull(bNode);
NodeList list = bNode.getChildNodes();
SpanElement span = SpanElement.as(bNode.getParentElement());
assertEquals(3, list.getLength());
assertEquals(span.getInnerHTML(),
"<b>Nuxeo EP 5 - Nuxeo Anno<span class=\"decorate decorate0\">tatio</span>n</b>");
processor = new AnnoteaDecoratorVisitor(bNode, 8, 13, getDefaultAnnotation(), null);
visitor = new Visitor(processor);
visitor.process(bNode);
assertEquals(5, bNode.getChildNodes().getLength());
assertEquals(
span.getInnerHTML(),
"<b>Nuxeo EP 5 - <span class=\"decorate decorate0\">Nuxeo An</span>no<span class=\"decorate decorate0\">tatio</span>n</b>");
}
public void testMultiLine() {
createDocument();
Element bNode = RootPanel.getBodyElement().getElementsByTagName("b").getItem(0);
assertNotNull(bNode);
AnnoteaDecoratorVisitor processor = new AnnoteaDecoratorVisitor(bNode, 48, 13, getDefaultAnnotation(), null);
Visitor visitor = new Visitor(processor);
visitor.process(bNode.getOwnerDocument());
NodeList list = bNode.getChildNodes();
assertEquals(2, list.getLength());
DivElement div = DivElement.as(RootPanel.getBodyElement().getElementsByTagName("div").getItem(0));
@SuppressWarnings("unused")
String testString = div.getInnerHTML();
assertTrue(div.getInnerHTML().contains(parsedResult));
}
public void testRemoveWhiteSpace() {
AnnoteaDecoratorVisitor v = new AnnoteaDecoratorVisitor(null, 0, 0, null, null);
v.setLastCharIsSpace(true);
String result = v.removeWhiteSpace(" b c d d ");
assertEquals("b c d d", result);
}
private String parsedResult = "<span class=\"decorate decorate0\">Nuxeo Annotation</span>"
+ "</b></span></nobr></div><div id=\"thediv\" style=\"position: absolute; top: 329px; left: 242px;\">"
+ "<span class=\"decorate decorate0\">The </span><nobr><span class=\"ft0\"><span class=\"decorate decorate0\">Da </span>"
+ "<b><span class=\"decorate decorate0\">Service</span></b></span></nobr><span class=\"decorate decorate0\"> and other stuff</span>"
+ "</div><div style=\"position: absolute; top: 691px; left: 199px;\"><nobr><span class=\"ft1\"><span class=\"decorate decorate0\">Co</span>";
}