[seam-commits] Seam SVN: r14123 - in branches/community/Seam_2_3/jboss-seam-remoting: src/test and 2 other directories.
seam-commits at lists.jboss.org
seam-commits at lists.jboss.org
Fri Jul 8 13:03:04 EDT 2011
Author: manaRH
Date: 2011-07-08 13:03:04 -0400 (Fri, 08 Jul 2011)
New Revision: 14123
Added:
branches/community/Seam_2_3/jboss-seam-remoting/src/test/javascript/
branches/community/Seam_2_3/jboss-seam-remoting/src/test/javascript/remote.spec.js
branches/community/Seam_2_3/jboss-seam-remoting/src/test/jsUnit/
branches/community/Seam_2_3/jboss-seam-remoting/src/test/jsUnit/jsUnitSeamRemoting.html
Modified:
branches/community/Seam_2_3/jboss-seam-remoting/pom.xml
Log:
JBSEAM-4823 - added jasmine maven plugin for testing remote.js
Modified: branches/community/Seam_2_3/jboss-seam-remoting/pom.xml
===================================================================
--- branches/community/Seam_2_3/jboss-seam-remoting/pom.xml 2011-07-08 17:02:38 UTC (rev 14122)
+++ branches/community/Seam_2_3/jboss-seam-remoting/pom.xml 2011-07-08 17:03:04 UTC (rev 14123)
@@ -11,6 +11,25 @@
<artifactId>jboss-seam-remoting</artifactId>
<name>Seam Remoting</name>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.github.searls</groupId>
+ <artifactId>jasmine-maven-plugin</artifactId>
+ <version>1.0.2-beta-5</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <jsSrcDir>src/main/resources/org/jboss/seam/remoting/</jsSrcDir>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
<dependencies>
Added: branches/community/Seam_2_3/jboss-seam-remoting/src/test/javascript/remote.spec.js
===================================================================
--- branches/community/Seam_2_3/jboss-seam-remoting/src/test/javascript/remote.spec.js (rev 0)
+++ branches/community/Seam_2_3/jboss-seam-remoting/src/test/javascript/remote.spec.js 2011-07-08 17:03:04 UTC (rev 14123)
@@ -0,0 +1,204 @@
+describe('Seam Remoting javascript suite', function () {
+
+ it('Confirm that URL encoding/decoding function we are using works', function () {
+ var val = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890!@#$%^&*()_-;',./:\"<>?~`\|[]{}+= ";
+ expect(decodeURIComponent(encodeURIComponent(val))).toEqual(val);
+ });
+
+ it('Seam.Remoting.Map tests GET', function () {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ var val = new Object();
+ map.put(key, val);
+ map.put(new Object(), new Object());
+ expect(map.get(key)).toEqual(val);
+ });
+
+ it('Seam.Remoting.Map tests PUT', function() {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ var val = new Object();
+ map.put(key, val);
+ expect(map.keySet()[0]).toEqual(key);
+ expect(map.values()[0]).toEqual(val);
+ });
+
+ it('Seam.Remoting.Map tests SIZE', function() {
+ var map = new Seam.Remoting.Map();
+ map.put("a", new Object());
+ expect(map.size()).toEqual(1);
+ });
+
+
+ it('Seam.Remoting.Map tests IsEmpty', function() {
+ var map = new Seam.Remoting.Map();
+ expect(map.isEmpty()).toBeTruthy();
+ map.put("a", new Object());
+ expect(map.isEmpty()).toBeFalsy();
+ });
+
+ it('Seam.Remoting.Map tests Set KeySet', function() {
+ var map = new Seam.Remoting.Map();
+ expect(map.keySet().length).toEqual(0);
+ var key = new Object();
+ map.put(key, null);
+ expect(map.keySet()[0]).toEqual(key);
+ expect(map.keySet().length).toEqual(1);
+ map.put(new Object(), null);
+ expect(map.keySet().length).toEqual(2);
+ });
+
+ it('Seam.Remoting.Map tests Values', function() {
+ var map = new Seam.Remoting.Map();
+ expect(map.keySet().length).toEqual(0);
+ var val = new Object();
+ map.put(new Object(), val);
+ expect(map.values()[0]).toEqual(val);
+ });
+
+ it('Seam.Remoting.Map tests MapRemove', function() {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ map.put(key, null);
+ expect(map.keySet().length).toEqual(1);
+ map.remove(key);
+ expect(map.keySet().length).toEqual(0);
+ });
+
+ it('Seam.Remoting.Map tests MapContains', function() {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ expect(map.contains(key)).toBeFalsy();
+ map.put(key, null);
+ expect(map.contains(key)).toBeTruthy();
+ });
+
+/** Seam.Remoting.Serialize tests **/
+
+ it('Seam.Remoting.Serialize testSerializeBool', function() {
+ expect(Seam.Remoting.serializeValue(true, "bool")).toEqual("<bool>true</bool>");
+ expect(Seam.Remoting.serializeValue(false, "bool")).toEqual("<bool>false</bool>");
+ expect(Seam.Remoting.serializeValue(true)).toEqual("<bool>true</bool>");
+ expect(Seam.Remoting.serializeValue(false)).toEqual("<bool>false</bool>");
+ });
+
+ it('Seam.Remoting.Serialize testSerializeNumber', function() {
+ expect(Seam.Remoting.serializeValue(123, "number")).toEqual("<number>123</number>");
+ expect(Seam.Remoting.serializeValue(123)).toEqual("<number>123</number>");
+ expect(Seam.Remoting.serializeValue(123.45)).toEqual("<number>123.45</number>");
+ });
+
+ it('Seam.Remoting.Serialize testSerializeDate', function() {
+ var dte = new Date(2005, 0, 1);
+ expect(Seam.Remoting.serializeValue(dte, "date")).toEqual("<date>20050101000000000</date>");
+ dte = new Date(2005, 10, 15, 12, 30, 9, 150);
+ expect(Seam.Remoting.serializeValue(dte, "date")).toEqual("<date>20051115123009150</date>");
+ expect(Seam.Remoting.serializeValue(dte)).toEqual("<date>20051115123009150</date>");
+ });
+
+ it('Seam.Remoting.Serialize testSerializeString', function() {
+ var val = "abc";
+ expect(Seam.Remoting.serializeValue(val, "str")).toEqual("<str>abc</str>");
+ expect(Seam.Remoting.serializeValue(val)).toEqual("<str>abc</str>");
+ });
+
+ it('Seam.Remoting.Serialize testSerializeBag', function() {
+ var bag = new Array();
+ bag.push(1);
+ expect(Seam.Remoting.serializeBag(bag, "bag")).toEqual("<bag><element><number>1</number></element></bag>");
+ expect(Seam.Remoting.serializeBag(bag)).toEqual("<bag><element><number>1</number></element></bag>");
+ bag.push("zzz");
+ expect(Seam.Remoting.serializeBag(bag, "bag")).toEqual("<bag><element><number>1</number></element><element><str>zzz</str></element></bag>");
+ expect(Seam.Remoting.serializeBag(bag)).toEqual("<bag><element><number>1</number></element><element><str>zzz</str></element></bag>");
+ });
+
+ it('Seam.Remoting.Serialize testSerializeMap', function() {
+ var map = new Seam.Remoting.Map();
+ map.put("1", "zzzz");
+ expect(Seam.Remoting.serializeMap(map, "map")).toEqual("<map><element><k><str>1</str></k><v><str>zzzz</str></v></element></map>");
+ expect(Seam.Remoting.serializeMap(map)).toEqual("<map><element><k><str>1</str></k><v><str>zzzz</str></v></element></map>");
+ });
+
+ it('Seam.Remoting.Serialize testSerializeNull', function() {
+ expect(Seam.Remoting.serializeValue(null)).toEqual("<null/>");
+ });
+
+ it('Seam.Remoting.Serialize testComponent', function() {
+ var comp = function() { };
+ comp.__name = "testComponent";
+
+ expect(Seam.Component.isRegistered("testComponent")).toBeFalsy();
+ Seam.Component.register(comp);
+ expect(Seam.Component.isRegistered("testComponent")).toBeTruthy();
+
+ var instance = Seam.Component.getInstance("testComponent");
+ expect(Seam.Component.getInstance("testComponent")).toEqual(instance);
+ expect(instance).not.toEqual(Seam.Component.newInstance("testComponent1"));
+
+ expect(Seam.Component.getComponentName(instance)).toEqual("testComponent");
+ expect(Seam.Component.getComponentType(instance)).toEqual(comp);
+ });
+
+ it('Seam.Remoting.Serialize testTypes', function() {
+ var t = function() { };
+ t.__name = "testType";
+
+ Seam.Remoting.registerType(t);
+
+ var instance = Seam.Remoting.createType("testType");
+ expect(Seam.Remoting.getTypeName(instance)).toEqual("testType");
+ expect(Seam.Remoting.getType(instance)).toEqual(t);
+ });
+
+ it('Seam.Remoting.Serialize testExtractEncodedSessionId', function() {
+ expect('abcdefg').toEqual(Seam.Remoting.extractEncodedSessionId('http://localhost:8080/contextPath/page.seam;jsessionid=abcdefg?foo=bar'));
+ expect('abcdefg').toEqual(Seam.Remoting.extractEncodedSessionId('http://localhost:8080/contextPath/page.seam;jsessionid=abcdefg'));
+ expect(null).toEqual(Seam.Remoting.extractEncodedSessionId('http://localhost:8080/contextPath/page.seam'));
+ });
+
+ // THIS doesn't work
+ xit('Seam.Remoting.Serialize testEncodeAjaxRequest', function() {
+ var restoreXMLHttpRequest = window.XMLHttpRequest;
+ window.XMLHttpRequest = dummyXMLHttpRequest;
+ Seam.Remoting.resourcePath = "/resourcePath";
+ Seam.Remoting.encodedSessionId = 'abcdefg';
+ var req = Seam.Remoting.sendAjaxRequest(null, "/execute", null, true);
+ expect(req.method).toEqual("POST");
+ expect(req.path).toEqual("/resourcePath/execute;jsessionid=abcdefg");
+ expect(req.async).toBeTruthy();
+ window.XMLHttpRequest = restoreXMLHttpRequest;
+ });
+
+ // THIS doesn't work
+ xit('Seam.Remoting.Serialize testNoEncodeAjaxRequest', function() {
+ var restoreXMLHttpRequest = window.XMLHttpRequest;
+ window.XMLHttpRequest = dummyXMLHttpRequest;
+ Seam.Remoting.resourcePath = "/resourcePath";
+ Seam.Remoting.encodedSessionId = null;
+ var req = Seam.Remoting.sendAjaxRequest(null, "/execute", null, true);
+ expect(req.method).toEqual("POST");
+ expect(req.path).toEqual("/resourcePath/execute");
+ expect(req.async).toBeTruthy();
+ window.XMLHttpRequest = restoreXMLHttpRequest;
+ });
+
+});
+
+
+function dummyXMLHttpRequest() {
+ this.method = null;
+ this.path = null;
+ this.async = null;
+}
+
+dummyXMLHttpRequest.prototype = {
+ open: function(method, path, async) {
+ this.method = method;
+ this.path = path;
+ this.async = async;
+ },
+
+ send: function(envelope) {}
+}
+
+
Added: branches/community/Seam_2_3/jboss-seam-remoting/src/test/jsUnit/jsUnitSeamRemoting.html
===================================================================
--- branches/community/Seam_2_3/jboss-seam-remoting/src/test/jsUnit/jsUnitSeamRemoting.html (rev 0)
+++ branches/community/Seam_2_3/jboss-seam-remoting/src/test/jsUnit/jsUnitSeamRemoting.html 2011-07-08 17:03:04 UTC (rev 14123)
@@ -0,0 +1,224 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Seam Remoting JsUnit Tests</title>
+<link rel="stylesheet" type="text/css" href="../css/jsUnitStyle.css">
+<script language="JavaScript" type="text/javascript" src="../../../extras/jsUnit/app/jsUnitCore.js"></script>
+<script language="JavaScript" type="text/javascript" src="../../remoting/org/jboss/seam/remoting/remote.js"></script>
+<script language="JavaScript" type="text/javascript">
+
+/** Confirm that the URL encoding/decoding function we are using works **/
+
+function testURLEncodeDecode() {
+ var val = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890!@#$%^&*()_-;',./:\"<>?~`\|[]{}+= ";
+ assertEquals(val, decodeURIComponent(encodeURIComponent(val)));
+}
+
+/** Seam.Remoting.Map tests **/
+
+function testMapGet() {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ var val = new Object();
+ map.put(key, val);
+ map.put(new Object(), new Object());
+ assertEquals(val, map.get(key));
+}
+
+function testMapPut() {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ var val = new Object();
+ map.put(key, val);
+ assertEquals(key, map.keySet()[0]);
+ assertEquals(val, map.values()[0]);
+}
+
+function testMapSize() {
+ var map = new Seam.Remoting.Map();
+ map.put("a", new Object());
+ assertEquals("Map size should be 1", 1, map.size());
+}
+
+function testMapIsEmpty() {
+ var map = new Seam.Remoting.Map();
+ assertTrue("Map should be empty", map.isEmpty());
+ map.put("a", new Object());
+ assertFalse("Map should not be empty", map.isEmpty());
+}
+
+function testMapKeySet() {
+ var map = new Seam.Remoting.Map();
+ assertEquals("Keyset size should be 0", 0, map.keySet().length);
+ var key = new Object();
+ map.put(key, null);
+ assertEquals(map.keySet()[0], key);
+ assertEquals("Keyset size should be 1", 1, map.keySet().length);
+ map.put(new Object(), null);
+ assertEquals("Keyset size should be 2", 2, map.keySet().length);
+}
+
+function testMapValues() {
+ var map = new Seam.Remoting.Map();
+ assertEquals("Values sizes should be 0", 0, map.keySet().length);
+ var val = new Object();
+ map.put(new Object(), val);
+ assertEquals(val, map.values()[0]);
+}
+
+function testMapRemove() {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ map.put(key, null);
+ assertEquals(1, map.values().length);
+ map.remove(key);
+ assertEquals(0, map.values().length);
+}
+function testMapContains() {
+ var map = new Seam.Remoting.Map();
+ var key = new Object();
+ assertFalse(map.contains(key));
+ map.put(key, null);
+ assertTrue(map.contains(key));
+}
+
+/** Seam.Remoting.Serialize tests **/
+
+function testSerializeBool() {
+ assertEquals("<bool>true</bool>", Seam.Remoting.serializeValue(true, "bool"));
+ assertEquals("<bool>false</bool>", Seam.Remoting.serializeValue(false, "bool"));
+ assertEquals("<bool>true</bool>", Seam.Remoting.serializeValue(true));
+ assertEquals("<bool>false</bool>", Seam.Remoting.serializeValue(false));
+}
+
+function testSerializeNumber() {
+ assertEquals("<number>123</number>", Seam.Remoting.serializeValue(123, "number"));
+ assertEquals("<number>123</number>", Seam.Remoting.serializeValue(123));
+ assertEquals("<number>123.45</number>", Seam.Remoting.serializeValue(123.45));
+}
+
+function testSerializeDate() {
+ var dte = new Date(2005, 0, 1);
+ assertEquals("<date>20050101000000000</date>", Seam.Remoting.serializeValue(dte, "date"));
+ assertEquals("<date>20050101000000000</date>", Seam.Remoting.serializeValue(dte));
+ dte = new Date(2005, 10, 15, 12, 30, 9, 150);
+ assertEquals("<date>20051115123009150</date>", Seam.Remoting.serializeValue(dte, "date"));
+ assertEquals("<date>20051115123009150</date>", Seam.Remoting.serializeValue(dte));
+}
+
+function testSerializeString() {
+ var val = "abc";
+ assertEquals("<str>abc</str>", Seam.Remoting.serializeValue(val, "str"));
+ assertEquals("<str>abc</str>", Seam.Remoting.serializeValue(val));
+}
+
+function testSerializeBag() {
+ var bag = new Array();
+ bag.push(1);
+ assertEquals("<bag><element><number>1</number></element></bag>", Seam.Remoting.serializeBag(bag, "bag"));
+ assertEquals("<bag><element><number>1</number></element></bag>", Seam.Remoting.serializeBag(bag));
+ bag.push("zzz");
+ assertEquals("<bag><element><number>1</number></element><element><str>zzz</str></element></bag>",
+ Seam.Remoting.serializeBag(bag, "bag"));
+ assertEquals("<bag><element><number>1</number></element><element><str>zzz</str></element></bag>",
+ Seam.Remoting.serializeBag(bag));
+}
+
+function testSerializeMap() {
+ var map = new Seam.Remoting.Map();
+ map.put("1", "zzzz");
+ assertEquals("<map><element><k><str>1</str></k><v><str>zzzz</str></v></element></map>",
+ Seam.Remoting.serializeMap(map, "map"));
+ assertEquals("<map><element><k><str>1</str></k><v><str>zzzz</str></v></element></map>",
+ Seam.Remoting.serializeMap(map));
+
+}
+
+function testSerializeNull() {
+ assertEquals("<null/>", Seam.Remoting.serializeValue(null));
+}
+
+function testComponent() {
+ var comp = function() { };
+ comp.__name = "testComponent";
+
+ assertFalse(Seam.Component.isRegistered("testComponent"));
+ Seam.Component.register(comp);
+ assertTrue(Seam.Component.isRegistered("testComponent"));
+
+ var instance = Seam.Component.getInstance("testComponent");
+ assertEquals(instance, Seam.Component.getInstance("testComponent"));
+ assertNotEquals(instance, Seam.Component.newInstance("testComponent"));
+ assertEquals("testComponent", Seam.Component.getComponentName(instance));
+ assertEquals(comp, Seam.Component.getComponentType(instance));
+}
+
+function testTypes() {
+ var t = function() { };
+ t.__name = "testType";
+
+ Seam.Remoting.registerType(t);
+
+ var instance = Seam.Remoting.createType("testType");
+ assertEquals("testType", Seam.Remoting.getTypeName(instance));
+ assertEquals(t, Seam.Remoting.getType(instance));
+}
+
+function testExtractEncodedSessionId() {
+ assertEquals('abcdefg', Seam.Remoting.extractEncodedSessionId('http://localhost:8080/contextPath/page.seam;jsessionid=abcdefg?foo=bar'));
+ assertEquals('abcdefg', Seam.Remoting.extractEncodedSessionId('http://localhost:8080/contextPath/page.seam;jsessionid=abcdefg'));
+ assertEquals(null, Seam.Remoting.extractEncodedSessionId('http://localhost:8080/contextPath/page.seam'));
+}
+
+function testEncodeAjaxRequest() {
+ var restoreXMLHttpRequest = window.XMLHttpRequest;
+ window.XMLHttpRequest = dummyXMLHttpRequest;
+ Seam.Remoting.resourcePath = "/resourcePath";
+ Seam.Remoting.encodedSessionId = 'abcdefg';
+ var req = Seam.Remoting.sendAjaxRequest(null, "/execute", null, true);
+ assertEquals("POST", req.method);
+ assertEquals("/resourcePath/execute;jsessionid=abcdefg", req.path);
+ assertEquals(true, req.async);
+ window.XMLHttpRequest = restoreXMLHttpRequest;
+}
+
+function testNoEncodeAjaxRequest() {
+ var restoreXMLHttpRequest = window.XMLHttpRequest;
+ window.XMLHttpRequest = dummyXMLHttpRequest;
+ Seam.Remoting.resourcePath = "/resourcePath";
+ Seam.Remoting.encodedSessionId = null;
+ var req = Seam.Remoting.sendAjaxRequest(null, "/execute", null, true);
+ assertEquals("POST", req.method);
+ assertEquals("/resourcePath/execute", req.path);
+ assertEquals(true, req.async);
+ window.XMLHttpRequest = restoreXMLHttpRequest;
+}
+
+function dummyXMLHttpRequest() {
+ this.method = null;
+ this.path = null;
+ this.async = null;
+}
+
+dummyXMLHttpRequest.prototype = {
+ open: function(method, path, async) {
+ this.method = method;
+ this.path = path;
+ this.async = async;
+ },
+
+ send: function(envelope) {}
+}
+
+</script>
+</head>
+
+<body>
+<h1>Seam Remoting JsUnit Tests</h1>
+
+<p>This page contains tests for the Seam Remoting Javascript source.</p>
+</body>
+</html>
More information about the seam-commits
mailing list