json.date-extensions
Version:
JSON date parsing extensions by extending JSON object.
159 lines (115 loc) • 5.18 kB
JavaScript
/// <reference path="http://code.jquery.com/jquery-1.10.2.min.js" />
/// <reference path="../src/json.date-extensions.js" />
// Date Parser Extension
test("dateParserExtension", function () {
var date = new Date();
var json = JSON.stringify(date);
var date2 = JSON.parse(json, JSON.dateParser);
console.log(date2);
equal(!date2.getTime, false, "Date should be a date object");
equal(date2.toString(), date.toString(), "Dates should be equal");
});
// Date Parser Extension with object dates
test("dateParserExtensionObject", function () {
var obj = {
id: "141923asd1",
name: "rick",
entered: new Date(),
updated: new Date()
};
var json = JSON.stringify(obj);
var obj2 = JSON.parse(json, JSON.dateParser);
equal(!obj2.entered.getTime, false, "Date should be a date object");
equal(obj2.entered.toString(), obj.entered.toString(), "Dates should be equal");
});
test("parseWithDate", function () {
var date = new Date();
var json = JSON.stringify(date);
var date2 = JSON.parseWithDate(json);
console.log(date2);
equal(!date2.getTime, false, "Date should be a date object");
equal(date2.toString(), date.toString(), "Dates should be equal");
});
test("parseWithDateObject", function () {
var obj = {
id: "141923asd1",
name: "rick",
entered: new Date(),
updated: new Date()
};
var json = JSON.stringify(obj);
var obj2 = JSON.parseWithDate(json);
equal(!obj2.entered.getTime, false, "Date should be a date object");
equal(obj2.entered.toString(), obj.entered.toString(), "Dates should be equal");
});
// useDateParser global replace operation
test("useDateParser", function () {
// enable global JSON parsing
JSON.useDateParser();
var date = new Date();
var json = JSON.stringify(date);
// using just plain JSON.parse() should decode dates
var date2 = JSON.parse(json);
console.log(date2);
equal(!date2.getTime, false, "Date should be a date object");
equal(date2.toString(), date.toString(), "Dates should be equal");
// replace original parser
JSON.useDateParser();
});
test("dateStringToDateJson", function () {
var date = new Date();
var json = JSON.stringify(date);
var date2 = JSON.dateStringToDate(json);
equal(date2.toString(), date.toString(), "Deserialized date should match original date");
});
test("ISODateFormatsDateStringToDate", function () {
var date = JSON.dateStringToDate("2014-01-01T13:13:34.441Z");
equal(date !== null, true, "Deserialized date string should be a date");
date = JSON.dateStringToDate("2014-01-01T13:13:34.41Z");
equal(date !== null, true, "Deserialized date string should be a date");
date = JSON.dateStringToDate("2014-01-01T13:13:34.01Z");
equal(date !== null, true, "Deserialized date string should be a date");
date = JSON.dateStringToDate("2014-01-01T13:13:34.11Z");
equal(date !== null, true, "Deserialized date string should be a date");
date = JSON.dateStringToDate("2014-01-01T13:13:34Z"); // no decimals
equal(date !== null, true, "Deserialized date string should be a date");
date = JSON.dateStringToDate("2014-01-01T04:13:00+00:00");
equal(date !== null, true, "Deserialized date string should be a date ");
});
test("dateStringToDateMsAjaxString", function () {
JSON.parseMsAjaxDate = true; // default is off
var date2 = JSON.dateStringToDate("\/Date(1388804145879)\/");
JSON.parseWithDate = false; // turn off for subsequent tests
console.log(date2); // should be a date (or null on failure)
equal(date2 !== null, true, "Deserialized date string should be a date");
});
test("dateStringToDateDate", function () {
var date2 = JSON.dateStringToDate(new Date());
equal(!date2.getTime, false, "Deserialized date string should be a date");
});
test("dateStringToDateNull", function () {
var date2 = JSON.dateStringToDate(null);
equal(!date2, true, "Date should be null");
});
// jQuery JSON from AJAX
test("useDateParserAjax", function () {
JSON.useDateParser();
stop();
$.getJSON("JsonWithDate.txt")
.done(function(data) {
start();
console.log("jquery result.entered: " + data.entered +
" result.updated: " + data.updated);
equal(data.entered != null && data.entered.getTime != null, true,
"data.entered should be a Date. Value: " + data.entered + " Note this error may fail randomly due to async setting for useDateParser(). To see this test work properly consistently run individually.");
// replace original parser
JSON.useDateParser(false);
})
.error(function () {
start();
console.log("error");
equal(false, true, "Callback failed - no date was converted.");
// replace original parser
JSON.useDateParser(false);
});
});