Files
faveo/public/filemanager/scripts/zeroclipboard/test/built/ZeroClipboard.tests.js
Bhanu Slathia c710c20b9e Update v1.0.6
2016-02-16 23:22:09 +05:30

229 lines
7.1 KiB
JavaScript
Vendored

/*global ZeroClipboard */
(function(module, test) {
"use strict";
var originalConfig, originalFlashDetect;
// Helper functions
var TestUtils = {
getHtmlBridge: function() {
return document.getElementById(ZeroClipboard.config("containerId"));
}
};
module("ZeroClipboard.js (built) unit tests - Core", {
setup: function() {
// Store
originalConfig = ZeroClipboard.config();
originalFlashDetect = ZeroClipboard.isFlashUnusable;
// Modify
ZeroClipboard.isFlashUnusable = function() {
return false;
};
ZeroClipboard.config({ swfPath: originalConfig.swfPath.replace(/\/(?:src|test)\/.*$/i, "/dist/ZeroClipboard.swf") });
},
teardown: function() {
// Restore
ZeroClipboard.destroy();
ZeroClipboard.config(originalConfig);
ZeroClipboard.isFlashUnusable = originalFlashDetect;
}
});
test("`swfPath` finds the expected default URL", function(assert) {
assert.expect(1);
// Assert, act, assert
var rootOrigin = window.location.protocol + "//" + window.location.host + "/";
var indexOfTest = window.location.pathname.toLowerCase().indexOf("/test/");
var rootDir = window.location.pathname.slice(1, indexOfTest + 1);
var rootPath = rootOrigin + rootDir;
//var zcJsUrl = rootPath + "dist/ZeroClipboard.js";
var swfPathBasedOnZeroClipboardJsPath = rootPath + "dist/ZeroClipboard.swf";
// Test that the client has the expected default URL [even if it's not correct]
assert.strictEqual(ZeroClipboard.config("swfPath"), swfPathBasedOnZeroClipboardJsPath);
});
test("`destroy` destroys the bridge", function(assert) {
assert.expect(3);
// Arrange
ZeroClipboard.isFlashUnusable = function() {
return false;
};
// Assert, arrange, assert, act, assert
assert.equal(TestUtils.getHtmlBridge(), null, "The bridge does not exist before creating a client");
/*jshint nonew:false */
new ZeroClipboard();
assert.notEqual(TestUtils.getHtmlBridge(), null, "The bridge does exist after creating a client");
ZeroClipboard.destroy();
assert.equal(TestUtils.getHtmlBridge(), null, "The bridge does not exist after calling `destroy`");
});
module("ZeroClipboard.js (built) unit tests - Client", {
setup: function() {
// Store
originalConfig = ZeroClipboard.config();
originalFlashDetect = ZeroClipboard.isFlashUnusable;
// Modify
ZeroClipboard.isFlashUnusable = function() {
return false;
};
ZeroClipboard.config({ swfPath: originalConfig.swfPath.replace(/\/(?:src|test)\/.*$/i, "/dist/ZeroClipboard.swf") });
},
teardown: function() {
// Restore
ZeroClipboard.destroy();
ZeroClipboard.config(originalConfig);
ZeroClipboard.isFlashUnusable = originalFlashDetect;
}
});
test("`ZeroClipboard` exists", function(assert) {
assert.expect(1);
// Arrange -> N/A
// Act -> N/A
// Assert
assert.ok(ZeroClipboard);
});
test("Client is created properly", function(assert) {
assert.expect(2);
// Arrange & Act
var client = new ZeroClipboard();
// Assert
assert.ok(client);
assert.ok(client.id);
});
test("Client without selector doesn't have elements", function(assert) {
assert.expect(2);
// Arrange & Act
var client = new ZeroClipboard();
// Assert
assert.ok(client);
assert.deepEqual(client.elements(), []);
});
test("Object has a title", function(assert) {
assert.expect(1);
// Arrange
var client = new ZeroClipboard();
var currentEl = document.getElementById("d_clip_button");
// Act
client.clip(currentEl);
ZeroClipboard.activate(currentEl);
// Assert
assert.strictEqual(TestUtils.getHtmlBridge().getAttribute("title"), "Click me to copy to clipboard.");
// Revert
ZeroClipboard.deactivate();
});
test("Object has no title", function(assert) {
assert.expect(1);
// Arrange
var client = new ZeroClipboard();
var currentEl = document.getElementById("d_clip_button_no_title");
// Act
client.clip(currentEl);
ZeroClipboard.activate(currentEl);
// Assert
assert.ok(!TestUtils.getHtmlBridge().getAttribute("title"));
});
test("Object doesn't have data-clipboard-text", function(assert) {
assert.expect(1);
// Arrange
var client = new ZeroClipboard();
var currentEl = document.getElementById("d_clip_button_no_text");
// Act
client.clip(currentEl);
ZeroClipboard.activate(currentEl);
// Assert
assert.ok(!TestUtils.getHtmlBridge().getAttribute("data-clipboard-text"));
});
test("New client is not the same client (no singleton) but does share the same bridge", function(assert) {
assert.expect(6);
// Assert, arrange, assert, act, assert
var containerClass = "." + ZeroClipboard.config("containerClass");
assert.strictEqual($(containerClass).length, 0);
var client1 = new ZeroClipboard();
assert.ok(client1.id);
assert.strictEqual($(containerClass).length, 1);
var client2 = new ZeroClipboard();
assert.strictEqual($(containerClass).length, 1);
assert.notEqual(client2.id, client1.id);
assert.notEqual(client2, client1);
});
test("Calculations based on borderWidth never return NaN", function(assert) {
assert.expect(4);
// Arrange
var client = new ZeroClipboard();
var currentEl = document.getElementById("d_clip_button");
// Act
client.clip(currentEl);
ZeroClipboard.activate(currentEl);
// Assert
var htmlBridge = TestUtils.getHtmlBridge();
assert.strictEqual(/^-?[0-9\.]+px$/.test(htmlBridge.style.top), true);
assert.strictEqual(/^-?[0-9\.]+px$/.test(htmlBridge.style.left), true);
assert.strictEqual(/^-?[0-9\.]+px$/.test(htmlBridge.style.width), true);
assert.strictEqual(/^-?[0-9\.]+px$/.test(htmlBridge.style.height), true);
});
test("No more client singleton!", function(assert) {
assert.expect(7);
// Arrange
ZeroClipboard.isFlashUnusable = function() {
return false;
};
// Assert, arrange, assert, act, assert
assert.ok(!ZeroClipboard.prototype._singleton, "The client singleton does not exist on the prototype before creating a client");
var client1 = new ZeroClipboard();
assert.ok(!ZeroClipboard.prototype._singleton, "The client singleton does not exist on the prototype after creating a client");
assert.ok(!client1._singleton, "The client singleton does not exist on the client instance after creating a client");
var client2 = new ZeroClipboard();
assert.ok(!ZeroClipboard.prototype._singleton, "The client singleton does not exist on the prototype after creating a second client");
assert.ok(!client1._singleton, "The client singleton does not exist on the first client instance after creating a second client");
assert.ok(!client2._singleton, "The client singleton does not exist on the second client instance after creating a second client");
ZeroClipboard.destroy();
assert.ok(!ZeroClipboard.prototype._singleton, "The client singleton does not exist on the prototype after calling `destroy`");
});
})(QUnit.module, QUnit.test);