The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>MessageBanner tests</title>
    <link rel="stylesheet" href="qunit.css">
  </head>
  <body>
    <div id="mb"></div>
    <div id="qunit"></div>
    <div id="qunit-fixture"></div>
    <script src="qunit.js"></script>
    <script src="sinon.js"></script>
    <script src="../../share/www/static/jquery.js"></script>
    <script src="../../share/www/static/busybird.js"></script>
    <script type="text/javascript">
"use strict";

function testMessage(type, message) {
    var class_name = ".bb-msg-" + type;
    notStrictEqual($("#mb").css("display"), "none", "message banner displayed");
    var $msg_span = $("#mb " + class_name);
    strictEqual($msg_span.size(), 1, "message exists");
    notStrictEqual($msg_span.css('display'), "none", "message displayed");
    strictEqual($msg_span.text(), message, "message content OK");
}

function testNoMessage() {
    var $msg_children = 
    strictEqual($("#mb").css("display"), "none", "message banner hidden");
}

test("MessageBanner", function() {
    var faketimer = sinon.useFakeTimers();
    var mb = new bb.MessageBanner("#mb");
    
    ok(defined(mb), "MessageBanner created");
    mb.show("normal message");
    testMessage("normal", "normal message");
    mb.show("error message", "error");
    testMessage("error", "error message");
    faketimer.tick(3000);
    testMessage("error", "error message");
    
    faketimer.tick(4000);
    testNoMessage();

    mb.show("message", null, 500);
    testMessage("normal", "message");

    faketimer.tick(2000);
    testNoMessage();

    faketimer.restore();
});

    </script>
  </body>
</html>