ParsedDeps_test.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. "use strict";
  2. if (!module.parent) return require.cache[__filename] = 0, (new(require("mocha"))()).addFile(__filename).ui("exports").run(process.exit);
  3. var assert = require("assert"),
  4. ParsedDeps = require("../../../lib/pipeline/ParsedDeps");
  5. exports.ParsedDeps = {
  6. "#extractFields": {
  7. "should be able to convert a document to its projected form": function() {
  8. var deps = {a:true, b:true},
  9. doc = {a:23, b:64, c:92},
  10. proj = new ParsedDeps(deps).extractFields(doc),
  11. expected = {a:23,b:64};
  12. assert.deepEqual(proj, expected);
  13. },
  14. "should extract fields for nested objects": function() {
  15. var deps = {a:{b:true}},
  16. doc = {a:{b:[1,2,3]},ignoreThisOne:123},
  17. proj = new ParsedDeps(deps).extractFields(doc),
  18. expected = {a:{b:[1,2,3]}};
  19. assert.deepEqual(proj, expected);
  20. },
  21. },
  22. "#_documentHelper": {
  23. "should skip fields that are not needed": function() {
  24. var json = {"foo":"bar"},
  25. neededFields = {},
  26. parse = new ParsedDeps(),
  27. expected = {};
  28. assert.deepEqual(parse._documentHelper(json, neededFields), expected);
  29. },
  30. "should return values that are booleans": function() {
  31. var json = {"foo":"bar"},
  32. neededFields = {"foo":true},
  33. parse = new ParsedDeps(),
  34. expected = {"foo":"bar"};
  35. assert.deepEqual(parse._documentHelper(json, neededFields), expected);
  36. },
  37. "should call _arrayHelper on values that are arrays": function() {
  38. var json = {"foo":[{"bar":"baz"}], "a": "b"},
  39. neededFields = {"foo":true},
  40. parse = new ParsedDeps(),
  41. expected = {"foo":[{bar:"baz"}]};
  42. assert.deepEqual(parse._documentHelper(json, neededFields), expected);
  43. },
  44. "should recurse on values that are objects": function() {
  45. var json = {"foo":{"bar":"baz"}},
  46. neededFields = {"foo":true},
  47. parse = new ParsedDeps(),
  48. expected = {"foo":{"bar":"baz"}};
  49. assert.deepEqual(parse._documentHelper(json, neededFields), expected);
  50. },
  51. },
  52. "#_arrayHelper": {
  53. "should call _documentHelper on values that are objects": function() {
  54. var array = [{"foo":"bar"}],
  55. neededFields = {"foo":true},
  56. parse = new ParsedDeps(),
  57. expected = [{foo:"bar"}];
  58. assert.deepEqual(parse._arrayHelper(array, neededFields), expected);
  59. },
  60. "should recurse on values that are arrays": function() {
  61. var array = [[{"foo":"bar"}]],
  62. neededFields = {"foo":true},
  63. parse = new ParsedDeps(),
  64. expected = [[{"foo":"bar"}]];
  65. var actual = parse._arrayHelper(array, neededFields);
  66. assert.deepEqual(actual, expected);
  67. },
  68. },
  69. };