DepsTracker_test.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. DepsTracker = require("../../../lib/pipeline/DepsTracker");
  5. exports.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; // undefined;
  47. deps.needWholeDocument = true;
  48. assert.strictEqual(expected, deps.toParsedDeps());
  49. },
  50. "should not parse if needTextScore is true": function() {
  51. var deps = new DepsTracker(),
  52. expected; // undefined;
  53. deps.needTextScore = true;
  54. assert.strictEqual(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. },
  69. };