ParsedDeps.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. "use strict";
  2. var assert = require("assert"),
  3. ParsedDeps = require("../../../lib/pipeline/ParsedDeps");
  4. module.exports = {
  5. "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. parse = new ParsedDeps(deps);
  11. var proj = parse.extractFields(doc);
  12. assert.deepEqual({a:23,b:64}, proj);
  13. }
  14. },
  15. "#_documentHelper": {
  16. "should skip fields that are not needed": function() {
  17. var json = {'foo':'bar'},
  18. neededFields = {},
  19. parse = new ParsedDeps(),
  20. expected = {};
  21. assert.deepEqual(expected, parse._documentHelper(json, neededFields));
  22. },
  23. "should return values that are booleans": function() {
  24. var json = {'foo':'bar'},
  25. neededFields = {'foo':true},
  26. parse = new ParsedDeps(),
  27. expected = {'foo':'bar'};
  28. assert.deepEqual(expected, parse._documentHelper(json, neededFields));
  29. },
  30. "should call _arrayHelper on values that are arrays": function() {
  31. var json = {'foo':[{'bar':'baz'}]},
  32. neededFields = {'foo':true},
  33. parse = new ParsedDeps(),
  34. expected = {'foo':true};
  35. // TODO: mock out _arrayHelper to return true
  36. parse._arrayHelper = function() {
  37. return true;
  38. };
  39. assert.deepEqual(expected, parse._documentHelper(json, neededFields));
  40. },
  41. "should recurse on values that are objects": function() {
  42. var json = {'foo':{'bar':'baz'}},
  43. neededFields = {'foo':true},
  44. parse = new ParsedDeps(),
  45. expected = {'foo':{'bar':'baz'}};
  46. assert.deepEqual(expected, parse._documentHelper(json, neededFields));
  47. }
  48. },
  49. "#_arrayHelper": {
  50. "should call _documentHelper on values that are objects": function() {
  51. var array = [{'foo':'bar'}],
  52. neededFields = {'foo':true},
  53. parse = new ParsedDeps(),
  54. expected = [true];
  55. // TODO: mock out _documentHelper to return true
  56. parse._documentHelper = function() {
  57. return true;
  58. };
  59. assert.deepEqual(expected, parse._arrayHelper(array, neededFields));
  60. },
  61. "should recurse on values that are arrays": function() {
  62. var array = [[{'foo':'bar'}]],
  63. neededFields = {'foo':true},
  64. parse = new ParsedDeps(),
  65. expected = [[{'foo':'bar'}]];
  66. assert.deepEqual(expected, parse._arrayHelper(array, neededFields));
  67. }
  68. }
  69. }
  70. };
  71. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run();