closest.test.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. require("./chai.helper");
  2. var domHelper = require("./dom.helper");
  3. describe("closest", function () {
  4. var elt;
  5. var emptyCollection;
  6. beforeEach(function () {
  7. domHelper(
  8. "<div id=\"too-far-away\" class=\"outer\">" +
  9. "<div id=\"should-be-me\" class=\"outer\">" +
  10. "<p class=\"inner1\">" +
  11. "<span class=\"inner2\">" +
  12. "<em class=\"inner3\">hello</em>" +
  13. "</span>" +
  14. "</p>" +
  15. "</div>" +
  16. "</div>" +
  17. "<div id=\"not-me\" class=\"outer no-match\"></div>" +
  18. "<div id=\"or-me\" class=\"outer no-match\"></div>"
  19. );
  20. elt = $(".inner3");
  21. elt.length.should.equal(1);
  22. emptyCollection = $("bloop");
  23. emptyCollection.length.should.equal(0);
  24. });
  25. it("should select the first ancestor node which matches the selector", function () {
  26. var closest = elt.closest(".outer");
  27. closest.length.should.equal(1);
  28. closest[0].should.equal($("#should-be-me")[0]);
  29. });
  30. it("should select the first ancestor node which matches the selector wrt a context", function () {
  31. var closest = elt.closest(".outer", document);
  32. closest.length.should.equal(1);
  33. closest[0].should.equal($("#should-be-me")[0]);
  34. });
  35. it("should return an empty collection if context causes match to fail", function () {
  36. var closest = elt.closest(".outer", $(".no-match"));
  37. closest.length.should.equal(0);
  38. $.is$(closest).should.be.true;
  39. });
  40. it("should return an empty collection if no matching closest node", function () {
  41. var closest = elt.closest("yottaflop");
  42. closest.length.should.equal(0);
  43. $.is$(closest).should.be.true;
  44. });
  45. it("should return the empty collection if called on an empty collection", function () {
  46. var closest = emptyCollection.closest(".outer");
  47. closest.should.equal(emptyCollection);
  48. closest.length.should.equal(0);
  49. $.is$(closest).should.be.true;
  50. });
  51. });