Author: scottbw
Date: Fri Feb 11 16:42:04 2011
New Revision: 1069875

URL: http://svn.apache.org/viewvc?rev=1069875&view=rev
Log:
Added some basic tests for outputting, repackaing and reloading widgets (see 
WOOKIE-182)

Added:
    
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/WidgetOutputterTest.java

Added: 
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/WidgetOutputterTest.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/WidgetOutputterTest.java?rev=1069875&view=auto
==============================================================================
--- 
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/WidgetOutputterTest.java
 (added)
+++ 
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/WidgetOutputterTest.java
 Fri Feb 11 16:42:04 2011
@@ -0,0 +1,108 @@
+/*
+ *  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.
+ */
+
+package org.apache.wookie.w3c.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.net.URL;
+
+import org.apache.wookie.w3c.INameEntity;
+import org.apache.wookie.w3c.W3CWidget;
+import org.apache.wookie.w3c.W3CWidgetFactory;
+import org.apache.wookie.w3c.util.WidgetOutputter;
+import org.apache.wookie.w3c.util.WidgetPackageUtils;
+import org.junit.Test;
+
+/**
+ * Testing outputting Widgets
+ */
+public class WidgetOutputterTest extends ConformanceTest{
+       
+       @Test
+       public void outputString() throws Exception{
+               W3CWidget widget = 
load("http://dev.w3.org/2006/waf/widgets/test-suite/test-cases/ta-RRZxvvTFHx/001/b6.wgt";);
+               WidgetOutputter outputter = new WidgetOutputter();
+               outputter.setWidgetFolder("/widgets");
+               String manifest = outputter.outputXMLString(widget);
+               assertTrue(manifest.contains("id=\"b6:\""));
+               assertTrue(manifest.contains("<content src=\"index.html\""));
+       }
+       
+       @Test 
+       public void loadModifySave() throws Exception{
+               W3CWidget widget = 
load("http://dev.w3.org/2006/waf/widgets/test-suite/test-cases/ta-RRZxvvTFHx/001/b6.wgt";);
+               INameEntity name = widget.getNames().get(0);
+               name.setName("Modified Widget");
+               WidgetOutputter outputter = new WidgetOutputter();
+               outputter.setWidgetFolder("/widgets");
+               String manifest = outputter.outputXMLString(widget);
+               assertTrue(manifest.contains("Modified Widget"));
+               assertTrue(manifest.contains("<content src=\"index.html\""));
+       }
+
+       @Test 
+       public void loadModifySaveReload() throws Exception{
+
+               // Load the widget
+               W3CWidgetFactory fac = new W3CWidgetFactory();
+               fac.setLocalPath("/widgets");
+               fac.setFeatures(new String[]{"feature:a9bb79c1"});
+               fac.setEncodings(new String[]{"UTF-8", 
"ISO-8859-1","Windows-1252"});
+               if (download.exists()) download.delete();
+               if (output.exists()) output.delete();
+               output.mkdir();
+               fac.setOutputDirectory(output.getAbsolutePath());
+               W3CWidget widget = fac.parse(new 
URL("http://dev.w3.org/2006/waf/widgets/test-suite/test-cases/ta-RRZxvvTFHx/001/b6.wgt";));
+               
+               INameEntity name = widget.getNames().get(0);
+               name.setName("Re-Modified Widget");
+               WidgetOutputter outputter = new WidgetOutputter();
+               outputter.setWidgetFolder("/widgets");
+               
+               // Save the config.xml
+               File widgetFolder = new File(output.getPath()+"/b6");
+               File configXml = new File(widgetFolder, "config.xml");
+               outputter.outputXML(widget, configXml);
+               
+               // Pack up the widget
+               File zip = File.createTempFile("wookie-output", ".wgt");
+               WidgetPackageUtils.repackZip(widgetFolder, zip);
+               
+               // Reload the widget but using a new path
+               fac.setLocalPath("/zaphod.bee.ble/brox");
+               widget = fac.parse(zip);
+               assertEquals("Re-Modified Widget", widget.getLocalName("en"));
+               // Check the content is now pointing to the new location
+               assertEquals("/zaphod.bee.ble/brox/b6/index.html", 
widget.getContentList().get(0).getSrc());
+       }
+       
+       private W3CWidget load(String url) throws Exception{
+               String outputPath = "/widgets";
+               
+               // Load the widget
+               W3CWidgetFactory fac = new W3CWidgetFactory();
+               fac.setLocalPath(outputPath);
+               fac.setFeatures(new String[]{"feature:a9bb79c1"});
+               fac.setEncodings(new String[]{"UTF-8", 
"ISO-8859-1","Windows-1252"});
+               if (download.exists()) download.delete();
+               if (output.exists()) output.delete();
+               output.mkdir();
+               fac.setOutputDirectory(output.getAbsolutePath());
+               W3CWidget widget = fac.parse(new URL(url));
+               return widget;
+       }
+}


Reply via email to