DepsTracker.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. "use strict";
  2. var assert = require("assert"),
  3. DepsTracker = require("../../../lib/pipeline/DepsTracker");
  4. module.exports = {
  5. "DepsTracker": {
  6. "toProjection()": {
  7. "should be able to convert dependencies to a projection": function(){
  8. var deps = new DepsTracker(),
  9. expected = {"_id":0,"a":1,"b":1};
  10. deps.fields = {'a':1,'b':1};
  11. assert.deepEqual(expected, deps.toProjection());
  12. },
  13. "should be able to convert dependencies with subfields to a projection": function(){
  14. var deps = new DepsTracker(),
  15. expected = {"_id":0,"a":1};
  16. deps.fields = {'a':1,'a.b':1};
  17. assert.deepEqual(expected, deps.toProjection());
  18. },
  19. "should be able to convert dependencies with _id to a projection": function(){
  20. var deps = new DepsTracker(),
  21. expected = {"a":1,"b":1,"_id":1};
  22. deps.fields = {"_id":1,'a':1,'b':1};
  23. assert.deepEqual(expected, deps.toProjection());
  24. },
  25. "should be able to convert dependencies with id and subfields to a projection": function(){
  26. var deps = new DepsTracker(),
  27. expected = {"_id":1,"b":1};
  28. deps.fields = {'_id.a':1,'b':1};
  29. assert.deepEqual(expected, deps.toProjection());
  30. },
  31. "should return empty object if needWholeDocument is true": function() {
  32. var deps = new DepsTracker(),
  33. expected = {};
  34. deps.needWholeDocument = true;
  35. assert.deepEqual(expected, deps.toProjection());
  36. },
  37. "should return $noFieldsNeeded if there are no dependencies": function() {
  38. var deps = new DepsTracker(),
  39. expected = {"_id":0,"$noFieldsNeeded":1};
  40. assert.deepEqual(expected, deps.toProjection());
  41. }
  42. },
  43. "toParsedDeps()": {
  44. "should not parse if needWholeDocument is true": function() {
  45. var deps = new DepsTracker(),
  46. expected;
  47. deps.needWholeDocument = true;
  48. assert.deepEqual(expected, deps.toParsedDeps());
  49. },
  50. "should not parse if needTextScore is true": function() {
  51. var deps = new DepsTracker(),
  52. expected;
  53. deps.needTextScore = true;
  54. assert.deepEqual(expected, deps.toParsedDeps());
  55. },
  56. "should be able to parse dependencies": function() {
  57. var deps = new DepsTracker(),
  58. expected = {"_fields":{"a":true,"b":true}};
  59. deps.fields = {'a':1,'b':1};
  60. assert.deepEqual(expected, deps.toParsedDeps());
  61. },
  62. "should be able to parse dependencies with subfields": function() {
  63. var deps = new DepsTracker(),
  64. expected = {"_fields":{"a.b":true}};
  65. deps.fields = {'a.b':1};
  66. assert.deepEqual(expected, deps.toParsedDeps());
  67. }
  68. }
  69. }
  70. };
  71. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run();