I have jQuery code that when I click on a link it first hides and then removes some HTML, like so:
$(this).parent().parent().hide('slow', function () {
$(this).remove();
});
I want to make a QUnit test that makes sure that the HTML in question was deleted:
$(thelink).click();
// Check that it is gone, by finding the first item in the list
entity = input.form.find('.recurrenceinput_occurrences .occurrence span.action a')[0];
// And make sure it's NOT the deleted one:
ok(entity.attributes.date.value !== "20110413T000000");
The problem is of course that the ok() test is run before the hide animation has run to an end, so the offenting HTML hasn't been removed yet, and the test fails.
I've tried various ways of delaying/stopping the test for a second or so, but nothing seems to work. The most obvious one is to use an asynTest and do
stop();
setTimeout(start, 2000);
But this doesn't actually stop the test. It does seem to stop something for two seconds, but I'm not sure what. :-)
Any ideas?