Package org.apache.shindig.gadgets.spec

Source Code of org.apache.shindig.gadgets.spec.GadgetSpecTest

/*
* 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.shindig.gadgets.spec;

import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.util.HashUtil;
import org.apache.shindig.common.xml.XmlUtil;
import org.apache.shindig.gadgets.variables.Substitutions;
import org.apache.shindig.gadgets.variables.Substitutions.Type;

import junit.framework.TestCase;

public class GadgetSpecTest extends TestCase {
  private static final Uri SPEC_URL = Uri.parse("http://example.org/g.xml");

  public void testBasic() throws Exception {
    String xml = "<Module>" +
                 "<ModulePrefs title=\"title\"/>" +
                 "<UserPref name=\"foo\" datatype=\"string\"/>" +
                 "<Content type=\"html\">Hello!</Content>" +
                 "</Module>";
    GadgetSpec spec = new GadgetSpec(SPEC_URL, xml);
    assertEquals("title", spec.getModulePrefs().getTitle());
    assertEquals(UserPref.DataType.STRING,
        spec.getUserPrefs().get(0).getDataType());
    assertEquals("Hello!", spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());
  }

  public void testAlternativeConstructor() throws Exception {
    String xml = "<Module>" +
                 "<ModulePrefs title=\"title\"/>" +
                 "<UserPref name=\"foo\" datatype=\"string\"/>" +
                 "<Content type=\"html\">Hello!</Content>" +
                 "</Module>";
    GadgetSpec spec = new GadgetSpec(SPEC_URL, XmlUtil.parse(xml), xml);
    assertEquals("title", spec.getModulePrefs().getTitle());
    assertEquals(UserPref.DataType.STRING,
        spec.getUserPrefs().get(0).getDataType());
    assertEquals("Hello!", spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());

    assertEquals(HashUtil.checksum(xml.getBytes()), spec.getChecksum());
  }

  public void testMultipleContentSections() throws Exception {
    String xml = "<Module>" +
                 "<ModulePrefs title=\"title\"/>" +
                 "<Content type=\"html\" view=\"hello\">hello </Content>" +
                 "<Content type=\"html\" view=\"world\">world</Content>" +
                 "<Content type=\"html\" view=\"hello, test\">test</Content>" +
                 "</Module>";
    GadgetSpec spec = new GadgetSpec(SPEC_URL, xml);
    assertEquals("hello test", spec.getView("hello").getContent());
    assertEquals("world", spec.getView("world").getContent());
    assertEquals("test", spec.getView("test").getContent());
  }

  public void testMissingModulePrefs() throws Exception {
    String xml = "<Module>" +
                 "<Content type=\"html\"/>" +
                 "</Module>";
    try {
      new GadgetSpec(SPEC_URL, xml);
      fail("No exception thrown when ModulePrefs is missing.");
    } catch (SpecParserException e) {
      // OK
    }
  }

  public void testEnforceOneModulePrefs() throws Exception {
    String xml = "<Module>" +
                 "<ModulePrefs title=\"hello\"/>" +
                 "<ModulePrefs title=\"world\"/>" +
                 "<Content type=\"html\"/>" +
                 "</Module>";
    try {
      new GadgetSpec(SPEC_URL, xml);
      fail("No exception thrown when more than 1 ModulePrefs is specified.");
    } catch (SpecParserException e) {
      // OK
    }
  }

  public void testSubstitutions() throws Exception {
    Substitutions substituter = new Substitutions();
    String title = "Hello, World!";
    String content = "Goodbye, world :(";
    String xml = "<Module>" +
                 "<ModulePrefs title=\"__UP_title__\"/>" +
                 "<Content type=\"html\">__MSG_content__</Content>" +
                 "</Module>";
    substituter.addSubstitution(Type.USER_PREF, "title", title);
    substituter.addSubstitution(Type.MESSAGE, "content", content);

    GadgetSpec baseSpec = new GadgetSpec(SPEC_URL, xml);
    baseSpec.setAttribute("foo", 100);
    baseSpec.setAttribute("bar", "baz");

    GadgetSpec spec = baseSpec.substitute(substituter);
    assertEquals(title, spec.getModulePrefs().getTitle());
    assertEquals(content, spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());
    assertEquals(100, spec.getAttribute("foo"));
    assertEquals("baz", spec.getAttribute("bar"));
  }
}
TOP

Related Classes of org.apache.shindig.gadgets.spec.GadgetSpecTest

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.