'use strict';

var assert = require('assert');
var hash = require('../index');

if (typeof Blob !== 'undefined') {
describe('hash()ing Blob objects', function() {
  var blob;
  before('create blob', function() {
    try {
      blob = new Blob(['ABC']);
    } catch(e) {
      // https://github.com/ariya/phantomjs/issues/11013
      if (!e.message.match(/'\[object BlobConstructor\]' is not a constructor/)) {
        throw e;
      }
      
      var builder = new WebKitBlobBuilder();
      builder.append('ABC');
      blob = builder.getBlob();
    }
  });

  it('should throw when trying to hash a blob', function() {
    assert.throws(function() {
      hash(blob);
    }, /not supported/);
    
    assert.throws(function() {
      hash({abcdef: blob});
    }, /not supported/);
  });

  it('should not throw when trying to hash a blob with ignoreUnknown', function() {
    var opt = {ignoreUnknown: true};
    
    assert.ok(validSha1.test(hash(blob, opt)), 'ignore Blob');
    assert.ok(validSha1.test(hash({abcdef: blob}, opt)), 'ignore Blob');
  });
});
}