You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ko...@apache.org on 2014/06/06 14:05:06 UTC
git commit: [OLINGO-316] Add first test for odata-json-tests,
start with grunt test-node
Repository: olingo-odata4-js
Updated Branches:
refs/heads/master 199d1fcb9 -> f9aaa8149
[OLINGO-316] Add first test for odata-json-tests, start with grunt test-node
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/commit/f9aaa814
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/tree/f9aaa814
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/diff/f9aaa814
Branch: refs/heads/master
Commit: f9aaa8149dcffb39ab22966e5266af1d7167f479
Parents: 199d1fc
Author: Sven Kobler <sv...@sap.com>
Authored: Fri Jun 6 14:00:52 2014 +0200
Committer: Sven Kobler <sv...@sap.com>
Committed: Fri Jun 6 14:00:52 2014 +0200
----------------------------------------------------------------------
datajs/Gruntfile.js | 85 ++++++++++++++----------------
datajs/package.json | 14 +----
datajs/src/lib/odata.js | 1 +
datajs/src/lib/odata/json.js | 6 +--
datajs/tests/common/djstest.js | 46 ++++++++++------
datajs/tests/common/mockHttpClient.js | 22 +++++---
datajs/tests/node-test-setup.js | 12 +++++
datajs/tests/odata-json-tests.js | 21 ++++----
datajs/tests/odata-qunit-tests.htm | 2 +-
9 files changed, 117 insertions(+), 92 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/Gruntfile.js
----------------------------------------------------------------------
diff --git a/datajs/Gruntfile.js b/datajs/Gruntfile.js
index 6fdabdc..1c6d369 100644
--- a/datajs/Gruntfile.js
+++ b/datajs/Gruntfile.js
@@ -5,7 +5,9 @@ module.exports = function(grunt) {
banner: grunt.file.read('src/banner.txt'),
filename : '<%= pkg.name %>-<%= pkg.version %>',
+
browserify: {
+ // start with index.js and follow all required source in order pack them together
datajs: {
files: {
'build/<%= filename %>.js': ['src/index.js'],
@@ -24,44 +26,13 @@ module.exports = function(grunt) {
sourceMapName : 'build/<%= filename %>.map',
sourceMapIncludeSources :true,
},
+ // uglify and compress the packed sources
build: {
src: 'build/<%= filename %>.js',
dest: 'build/<%= filename %>.min.js'
}
},
- copy: {
- saveOrig : {
- files: [
- // includes files within path
- {expand: false, flatten: true,src: './build/<%= filename %>.js', dest: 'demo/jscripts/<%= filename %>.bu_js'},
- ]
- },
- toDemo: {
- files: [
- // includes files within path
- {expand: false, flatten: true,src: './build/<%= filename %>.js', dest: 'demo/jscripts/<%= filename %>.js'},
- {expand: false, flatten: true,src: './build/<%= filename %>.min.js', dest: 'demo/jscripts/<%= filename %>.min.js'},
- {expand: false, flatten: true,src: './build/<%= filename %>.map', dest: 'demo/jscripts/<%= filename %>.map'},
- {expand: false, flatten: true,src: './build/<%= filename %>.split_map', dest: 'demo/jscripts/<%= filename %>.split_map'},
- ]
- }
- },
connect: {
- proxies: [{
- context: "/tests/endpoints/", // When the url contains this...
- host: "localhost",
- changeOrigin: true,
- https: false,
- port: 46541,
- rejectUnauthorized: false,
- }/*,{
- context: "/tests/common/", // When the url contains this...
- host: "localhost",
- changeOrigin: true,
- https: false,
- port: 46541,
- rejectUnauthorized: false,
- }*/],
demo: {
options: {
port: 4001 ,
@@ -77,7 +48,8 @@ module.exports = function(grunt) {
},
},
},
- test: {
+ // start a node webserver with proxy to host the qunit-test html files
+ 'test-browser': {
options: {
port: 4002 ,
hostname: "localhost",
@@ -92,30 +64,55 @@ module.exports = function(grunt) {
];
},
},
+ // proxy all request going to /tests/endpoints/ to the .net data services
+ proxies: [{
+ context: "/tests/endpoints/", // When the url contains this...
+ host: "localhost",
+ changeOrigin: true,
+ https: false,
+ port: 46541,
+ rejectUnauthorized: false,
+ }],
},
},
- open: {
- demo: {
- path: "http://<%= connect.demo.options.hostname %>:<%= connect.demo.options.port %>/demo.html",
- options: {
- delay : 500,
+ 'node-qunit': {
+ //used to run some background qunit test on node
+ 'default-tests': {
+ setup: {
+ log: {
+ summary: true,
+ assertions: true,
+ errors: true,
+ globalSummary: true,
+ coverage: false,
+ globalCoverage: false,
+ testing: true
+ },
+ coverage: false,
+ deps: null,
+ namespace: null
+ },
+ deps: '',
+ code: './tests/node-test-setup.js',
+ tests: ['./tests/odata-json-tests.js'],
+ done: function(err, res){
+ !err && publishResults("node", res, this.async());
}
- }
+ },
},
});
// These plugins provide necessary tasks.
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks("grunt-connect-proxy");
grunt.loadNpmTasks("grunt-contrib-connect");
-
+ grunt.loadNpmTasks('grunt-node-qunit');
// Default task.
- grunt.registerTask('build', ['browserify:datajs', 'copy:toDemo', "uglify:build"]);
- grunt.registerTask('run', ['configureProxies', 'connect:demo']);
- grunt.registerTask('test', ['configureProxies', 'connect:test']);
+ grunt.registerTask('build', ['browserify:datajs', 'uglify:build']);
+ grunt.registerTask('test-browser', ['configureProxies:test-browser', 'connect:test-browser']);
+ grunt.registerTask('test-node', ['node-qunit:default-tests']);
};
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/package.json
----------------------------------------------------------------------
diff --git a/datajs/package.json b/datajs/package.json
index 97017cf..a45f2e8 100644
--- a/datajs/package.json
+++ b/datajs/package.json
@@ -14,22 +14,14 @@
"contributors": [
{
"name": "Bing Li",
- "email": "????@apache.org"
+ "email": "bingl@apache.org"
},
{
"name": "Sven Kobler-Morris",
"email": "koblers@apache.org"
}
],
- "testling": {
- "harness": "mocha-tdd",
- "files": "test/sampletest_mocca.js",
- "browsers": [
- "ie/8"
- ]
- },
"scripts": {
- "test": "mocha --ui tdd"
},
"devDependencies": {
"browserify": "^4.1.5",
@@ -37,9 +29,7 @@
"grunt-browserify": "^2.1.0",
"grunt-connect-proxy": "^0.1.10",
"grunt-contrib-connect": "^0.7.1",
- "grunt-contrib-copy": "^0.5.0",
"grunt-contrib-uglify": "^0.4.0",
- "grunt-mocha": "^0.4.10",
- "grunt-open": "^0.2.3"
+ "grunt-node-qunit": "^2.0.2"
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/src/lib/odata.js
----------------------------------------------------------------------
diff --git a/datajs/src/lib/odata.js b/datajs/src/lib/odata.js
index 857c90c..7c44a19 100644
--- a/datajs/src/lib/odata.js
+++ b/datajs/src/lib/odata.js
@@ -22,6 +22,7 @@ exports.utils = odataUtils = require('./odata/utils.js');
exports.handler = odataHandler = require('./odata/handler.js');
exports.metadata = odataMetadata = require('./odata/metadata.js');
exports.net = odataNet = require('./odata/net.js');
+//exports.net = odataNet = require('./odata/net-nodejs.js');//testing only
exports.gml = require('./odata/gml.js');
exports.jsonLight = require('./odata/json-light.js');
exports.json = odataJson = require('./odata/json.js');
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/src/lib/odata/json.js
----------------------------------------------------------------------
diff --git a/datajs/src/lib/odata/json.js b/datajs/src/lib/odata/json.js
index a4aeea7..5265c0e 100644
--- a/datajs/src/lib/odata/json.js
+++ b/datajs/src/lib/odata/json.js
@@ -243,7 +243,7 @@ var jsonParser = function (handler, text, context) {
/// <returns>An object representation of the OData payload.</returns>
var dataServiceVersion = context.dataServiceVersion;
- var json = (typeof text === "string") ? window.JSON.parse(text) : text;
+ var json = (typeof text === "string") ? JSON.parse(text) : text;
if ((maxVersion("4.0", dataServiceVersion) === dataServiceVersion)) {
return json;
@@ -265,7 +265,7 @@ var jsonToString = function (data) {
Date.prototype.toJSON = function () {
return formatDateTimeOffset(this);
};
- result = window.JSON.stringify(data, jsonReplacer);
+ result = JSON.stringify(data, jsonReplacer);
} finally {
// Restore the original toJSON function
Date.prototype.toJSON = dateToJSON;
@@ -287,7 +287,7 @@ var jsonSerializer = function (handler, data, context) {
context.dataServiceVersion = maxVersion(dataServiceVersion, "4.0");
var newdata = formatJsonLightRequestPayload(data);
if (newdata) {
- return window.JSON.stringify(newdata);
+ return JSON.stringify(newdata);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/tests/common/djstest.js
----------------------------------------------------------------------
diff --git a/datajs/tests/common/djstest.js b/datajs/tests/common/djstest.js
index ab52567..554b064 100644
--- a/datajs/tests/common/djstest.js
+++ b/datajs/tests/common/djstest.js
@@ -17,10 +17,9 @@
* under the License.
*/
-(function (window, undefined) {
+var init = function (window) {
var djstest = {};
- window.djstest = djstest;
djstest.indexedDB = window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.indexedDB;
@@ -397,19 +396,32 @@
// Disable caching to ensure that every test-related AJAX request is actually being sent,
// and set up a default error handler
- $.ajaxSetup({
- cache: false,
- error: function (jqXHR, textStatus, errorThrown) {
- // Work around bug in IE-Mobile on Windows Phone 7
- if (jqXHR.status !== 1223) {
- var err = {
- status: jqXHR.status,
- statusText: jqXHR.statusText,
- responseText: jqXHR.responseText
- };
- djstest.fail("AJAX request failed with: " + djstest.toString(err));
+ if (window !== undefined) {//TODO improve
+ /*$.ajaxSetup({
+ cache: false,
+ error: function (jqXHR, textStatus, errorThrown) {
+ // Work around bug in IE-Mobile on Windows Phone 7
+ if (jqXHR.status !== 1223) {
+ var err = {
+ status: jqXHR.status,
+ statusText: jqXHR.statusText,
+ responseText: jqXHR.responseText
+ };
+ djstest.fail("AJAX request failed with: " + djstest.toString(err));
+ }
+ djstest.done();
}
- djstest.done();
- }
- });
-})(window);
\ No newline at end of file
+ });*/
+ }
+
+ return djstest;
+};
+
+if (typeof window !== 'undefined') {
+ //in browser call init() directly window as context
+ window.djstest = init(window);
+} else {
+ //expose function init to be called with a custom context
+ module.exports.init = init;
+}
+
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/tests/common/mockHttpClient.js
----------------------------------------------------------------------
diff --git a/datajs/tests/common/mockHttpClient.js b/datajs/tests/common/mockHttpClient.js
index faea931..d1380f6 100644
--- a/datajs/tests/common/mockHttpClient.js
+++ b/datajs/tests/common/mockHttpClient.js
@@ -44,12 +44,9 @@
// MockHttpClient will throw an exception if it receives a request to a URI that is not mapped to either a request verifier or a response.
//
-(function (window, undefined) {
- if (!window.MockHttpClient) {
- window.MockHttpClient = {};
- }
+var init = function (window, undefined) {
- var httpClient = window.MockHttpClient;
+ var httpClient = {};
var responses = {};
var requestVerifiers = {};
@@ -123,4 +120,17 @@
this.async = value;
return this;
};
-})(this);
+
+ return httpClient;
+};
+
+
+
+if (typeof window !== 'undefined') {
+ //in browser call init() directly window as context
+ window.MockHttpClient = init(window);
+} else {
+ //expose function init to be called with a custom context
+ module.exports.init = init;
+}
+
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/tests/node-test-setup.js
----------------------------------------------------------------------
diff --git a/datajs/tests/node-test-setup.js b/datajs/tests/node-test-setup.js
new file mode 100644
index 0000000..2a94b81
--- /dev/null
+++ b/datajs/tests/node-test-setup.js
@@ -0,0 +1,12 @@
+//Creates the global objects
+
+//tools
+djstest = require("./common/djstest.js").init({});
+MockHttpClient = require("./common/MockHttpClient.js").init({});
+
+//lib
+datajs = require('./../src/lib/datajs.js');
+OData = require('./../src/lib/odata.js');
+
+
+
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/tests/odata-json-tests.js
----------------------------------------------------------------------
diff --git a/datajs/tests/odata-json-tests.js b/datajs/tests/odata-json-tests.js
index b97bbd7..ebb7c6a 100644
--- a/datajs/tests/odata-json-tests.js
+++ b/datajs/tests/odata-json-tests.js
@@ -20,8 +20,8 @@
// odata-tests.js
(function (window, undefined) {
-
- // DATAJS INTERNAL START
+
+
djstest.addTest(function isArrayTest() {
djstest.assert(datajs.utils.isArray([]));
djstest.assert(datajs.utils.isArray([1, 2]));
@@ -192,7 +192,7 @@
var i, len;
for (i = 0, len = tests.length; i < len; i++) {
- var data = window.JSON.stringify(tests[i].expected);
+ var data = JSON.stringify(tests[i].expected);
var actual = OData.json.jsonParser(OData.json.jsonHandler, data, tests[i].context);
djstest.assertAreEqualDeep(actual, tests[i].expected, "test " + i + "didn't return the expected data");
}
@@ -834,7 +834,7 @@
for (i = 0, len = tests.length; i < len; i++) {
var data = tests[i].data ? tests[i].data : tests[i].expected;
var actual = OData.json.jsonSerializer(OData.json.jsonHandler, data, tests[i].context);
- var expected = window.JSON.stringify(tests[i].expected);
+ var expected = JSON.stringify(tests[i].expected);
djstest.assertAreEqualDeep(actual, expected, "test " + i + "didn't return the expected data");
}
djstest.done();
@@ -843,7 +843,9 @@
djstest.addTest(function normalizeHeadersReadTest() {
// Verifies that headers are normalized for reading.
// See issue at http://datajs.codeplex.com/workitem/148
- window.MockHttpClient.clear().addResponse("/foo", {
+ MockHttpClient.clear();
+
+ MockHttpClient.clear().addResponse("/foo", {
statusCode: 200,
body: { "@odata.context": "http://foo", value: [] },
headers: { "unknown": "u", "Content-Encoding": "compress, gzip", "Content-Length": "8042",
@@ -869,9 +871,11 @@
});
djstest.addTest(function normalizeHeadersWriteTest() {
+
// Verifies that headers are normalized for writing.
// See issue at http://datajs.codeplex.com/workitem/148
- window.MockHttpClient.clear().addRequestVerifier("/foo", function (request) {
+
+ MockHttpClient.clear().addRequestVerifier("/foo", function (request) {
djstest.assertAreEqual(request.headers.Accept, "application/json", "Accept available");
djstest.assertAreEqual(request.headers["Content-Type"], "application/json", "json found");
djstest.assertAreEqual(request.headers["Content-Encoding"], "compress, gzip", "Content-Encoding available");
@@ -895,9 +899,8 @@
"odata-maxversion": "4.0", "prefer": "prefer"
}
};
- OData.request(request, function (data) {
- }, undefined, undefined, MockHttpClient);
+ OData.request(request, function (data) { }, undefined, undefined, MockHttpClient);
+
});
- // DATAJS INTERNAL END
})(this);
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f9aaa814/datajs/tests/odata-qunit-tests.htm
----------------------------------------------------------------------
diff --git a/datajs/tests/odata-qunit-tests.htm b/datajs/tests/odata-qunit-tests.htm
index f7b4676..5dd5fbe 100644
--- a/datajs/tests/odata-qunit-tests.htm
+++ b/datajs/tests/odata-qunit-tests.htm
@@ -41,7 +41,7 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEAL
window.TestSynchronizer.init(QUnit);
</script>
- <script type="text/javascript" src="../build/datajs-2.0.0.js"></script>
+ <script type="text/javascript" src="../build/datajs-2.0.0.min.js"></script>
<!--SK TODO enable <script type="text/javascript" src="../src/datajs.js"></script>
<script type="text/javascript" src="../src/utils.js"></script>
<script type="text/javascript" src="../src/xml.js"></script>