Bug 1313050 - Handle invalid dates in reps. r=nchevobbe

This commit is contained in:
Lin Clark 2016-10-26 09:42:00 -04:00
parent 76f5d03bb6
commit 0a299d9f15
2 changed files with 42 additions and 12 deletions

View File

@ -37,14 +37,18 @@ define(function (require, exports, module) {
render: function () {
let grip = this.props.object;
return (
span({className: "objectBox"},
let date;
try {
date = span({className: "objectBox"},
this.getTitle(grip),
span({className: "Date"},
new Date(grip.preview.timestamp).toISOString()
)
)
);
);
} catch (e) {
date = span({className: "objectBox"}, "Invalid Date");
}
return date;
},
});

View File

@ -15,10 +15,19 @@ Test DateTime rep
<script src="head.js" type="application/javascript;version=1.8"></script>
<script type="application/javascript;version=1.8">
window.onload = Task.async(function* () {
try {
let { Rep } = browserRequire("devtools/client/shared/components/reps/rep");
let { DateTime } = browserRequire("devtools/client/shared/components/reps/date-time");
let { Rep } = browserRequire("devtools/client/shared/components/reps/rep");
let { DateTime } = browserRequire("devtools/client/shared/components/reps/date-time");
try {
testValid();
testInvalid();
} catch(e) {
ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e));
} finally {
SimpleTest.finish();
}
function testValid() {
let gripStub = {
"type": "object",
"class": "Date",
@ -38,11 +47,28 @@ window.onload = Task.async(function* () {
// Test rendering
const renderedComponent = renderComponent(DateTime.rep, { object: gripStub });
is(renderedComponent.textContent, "2016-03-30T21:17:24.859Z", "DateTime rep has expected text content");
} catch(e) {
ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e));
} finally {
SimpleTest.finish();
is(renderedComponent.textContent, "2016-03-30T21:17:24.859Z", "DateTime rep has expected text content for valid date");
}
function testInvalid() {
let gripStub = {
"type": "object",
"actor": "server1.conn0.child1/obj32",
"class": "Date",
"extensible": true,
"frozen": false,
"sealed": false,
"ownPropertyLength": 0,
"preview": {
"timestamp": {
"type": "NaN"
}
}
};
// Test rendering
const renderedComponent = renderComponent(DateTime.rep, { object: gripStub });
is(renderedComponent.textContent, "Invalid Date", "DateTime rep has expected text content for invalid date");
}
});
</script>