| var assert = require("../assert"); | |
| module.exports = { | |
| "on a new transition": { | |
| topic: function(d3) { | |
| var callback = this.callback, | |
| t = d3.select("body").append("div").transition().remove(); | |
| t.each("end", function() { | |
| process.nextTick(function() { | |
| callback(null, t); | |
| }); | |
| }); | |
| }, | |
| "removes the selected elements": function(transition) { | |
| assert.domEqual(transition[0][0].parentNode, null); | |
| } | |
| }, | |
| "when the element is already removed": { | |
| topic: function(d3) { | |
| var callback = this.callback, | |
| t = d3.select("body").append("div").remove().transition().remove(); | |
| t.each("end", function() { | |
| process.nextTick(function() { | |
| callback(null, t); | |
| }); | |
| }); | |
| }, | |
| "does nothing": function(transition) { | |
| assert.domEqual(transition[0][0].parentNode, null); | |
| } | |
| }, | |
| // Since these tests are triggered inside the end event of the above topic, | |
| // transitions will inherit ids from the original transition. But we want to | |
| // test concurrent transitions, so we use timeouts to avoid inheritance. This | |
| // test also verifies that if multiple transitions are created at the same | |
| // time, the last transition becomes the owner. | |
| "when another transition is scheduled": { | |
| topic: function(d3) { | |
| var callback = this.callback, | |
| s = d3.select("body").append("div"); | |
| setTimeout(function() { | |
| s.transition().duration(150).remove().each("end", function() { | |
| process.nextTick(function() { | |
| callback(null, s); | |
| }); | |
| }); | |
| s.transition().delay(250); | |
| }, 10); | |
| }, | |
| "does nothing": function(selection) { | |
| assert.equal(selection[0][0].parentNode.tagName, "BODY"); | |
| } | |
| } | |
| }; |