Mushpup 3.0 Tests (Dev Branch)

Test of Mushpup v3.0 module hosted on Github (via rawgit.com).

by klenwell

HTML

<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.15.0.css">
<script src="https://rawgit.com/klenwell/mushpup/master/vendor/crypto-js/sha1.js"></script>
<script src="https://rawgit.com/klenwell/mushpup/master/vendor/crypto-js/enc-base64-min.js"></script>
<script src="https://rawgit.com/klenwell/mushpup/dev/src/mushpup.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>

JavaScript

/*
 * Mushpup Tests
 */
(function() {
  module('Mushpup module');

  test('should load Mushpup module and verify version', function() {
    ok(Mushpup);
    equal(Mushpup.version(), '3.0');
  });
})();

(function() {
  module('Mushpup basic hash');

  test('should generate basic hash', function() {
    equal(Mushpup.mush('test', ''), 'qUqP5cyxm6YcTAhz05Hph5gv');
    equal(Mushpup.mush('te', 'st'), 'qUqP5cyxm6YcTAhz05Hph5gv');
    equal(Mushpup.mush('', 'test'), 'qUqP5cyxm6YcTAhz05Hph5gv');
    equal(Mushpup.mush('locus', 'pocus'), 'dhjcHSkePkdoNZDZwrmZO33v');
    equal(Mushpup.mush('mushpup.org/klenwell', 'pocus'), 'dOyw5hTH46xzHJK1N8bagrAT');
  });
})();

(function() {
  module('Mushpup locus normalization');

  test('that locus values are normalized as expected', function() {
    var testCases = [
      // Input, Expect
      ['mushpup.org/klenwell', 'mushpup.org/klenwell'],
      ['  mushpup.org/klenwell  ', 'mushpup.org/klenwell'],
      ['/mushpup.org/klenwell/', 'mushpup.org/klenwell'],
      ['//mushpup.org//klenwell//', 'mushpup.org/klenwell']
    ];

    testCases.map(function(testCase) {
      var locusInput = testCase[0];
      var expects = testCase[1];
      var locus = new LocusValidator(locusInput);
      equal(locus.value(), expects);
    });
  });

  test('that locus with extra spaces raises a warning', function() {
    var locusInput = '  mushpup.org/klenwell  ';
    var locus = new LocusValidator(locusInput);
    equal(locus.value(), locusInput.trim());
    equal(locus.warnings.length, 1);
    equal(locus.warnings[0][1], 'Trimmed whitespace from ends of site value.');
  });

  test('that locus with extra slashes raises a warning', function() {
    var locusInput = '//mushpup.org//klenwell//';
    var locus = new LocusValidator(locusInput);
    equal(locus.value(), 'mushpup.org/klenwell');
    equal(locus.warnings.length, 1);
    equal(locus.warnings[0][1], 'Removed extra slashes from site value.');
  });

  test('should remove duplicate...