diff options
author | Nick Zolnierz <nicholas.zolnierz@mongodb.com> | 2018-02-12 14:16:14 -0500 |
---|---|---|
committer | Nick Zolnierz <nicholas.zolnierz@mongodb.com> | 2018-02-13 14:12:00 -0500 |
commit | b365c65216459eeeefa549c61344ed6107d612c8 (patch) | |
tree | 766d960a551eafaa6cc5410b2401851a88e01b9a /jstests/aggregation/expressions | |
parent | 7f074daf0ad102b6f32abdd1b28cc9c73b46b52f (diff) | |
download | mongo-b365c65216459eeeefa549c61344ed6107d612c8.tar.gz |
SERVER-33172: Add onNull parameter to $dateToString
Diffstat (limited to 'jstests/aggregation/expressions')
-rw-r--r-- | jstests/aggregation/expressions/date_to_string_on_null.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/jstests/aggregation/expressions/date_to_string_on_null.js b/jstests/aggregation/expressions/date_to_string_on_null.js new file mode 100644 index 00000000000..e5b3ec50f1b --- /dev/null +++ b/jstests/aggregation/expressions/date_to_string_on_null.js @@ -0,0 +1,77 @@ +/** + * Tests for the $dateToString expression with the optional 'onNull' parameter. + */ +(function() { + "use strict"; + + const onNullValue = ISODate("2017-07-04T11:56:02Z"); + const coll = db.date_to_string_on_null; + coll.drop(); + + assert.writeOK(coll.insert({_id: 0})); + + for (let nullishValue of[null, undefined, "$missing"]) { + // Test that the 'onNull' value is returned when the 'date' is nullish. + assert.eq([{_id: 0, date: onNullValue}], + coll.aggregate({ + $project: { + date: { + $dateToString: { + date: nullishValue, + format: "%Y-%m-%d %H:%M:%S", + onNull: onNullValue + } + } + } + }) + .toArray()); + + // Test that null is returned when the 'timezone' is nullish, regardless of the 'onNull' + // value. + assert.eq([{_id: 0, date: null}], + coll.aggregate({ + $project: { + date: { + $dateToString: { + date: "2018-02-06T11:56:02Z", + format: "%Y-%m-%d %H:%M:%S", + timezone: nullishValue, + onNull: onNullValue + } + } + } + }) + .toArray()); + } + + // Test that 'onNull' can be any type, not just an ISODate. + for (let onNullValue of[{}, 5, "Not a date", null, undefined]) { + assert.eq([{_id: 0, date: onNullValue}], + coll.aggregate({ + $project: { + date: { + $dateToString: { + date: "$missing", + format: "%Y-%m-%d %H:%M:%S", + onNull: onNullValue + } + } + } + }) + .toArray()); + } + + // Test that 'onNull' can be missing, resulting in no output field when used within a $project + // stage. + assert.eq( + [{_id: 0}], + coll.aggregate({ + $project: { + date: { + $dateToString: + {date: "$missing", format: "%Y-%m-%d %H:%M:%S", onNull: "$missing"} + } + } + }) + .toArray()); +})(); |