DepsTracker.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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":true}};
  65. deps.fields = {'a':1,'a.b':1};
  66. assert.deepEqual(expected, deps.toParsedDeps());
  67. },
  68. "should be able to parse dependencies with arrays": function() {
  69. var deps = new DepsTracker(),
  70. expected = {"_fields":{"a":true,"b":true}};
  71. deps.fields = {'a':1,'b':[{'c':1},{'d':'d.e'}]};
  72. assert.deepEqual(expected, deps.toParsedDeps());
  73. }
  74. }
  75. }
  76. };
  77. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run();