DepsTracker_test.js 2.6 KB

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