freeboard/test/casper/util/test_util.js

85 lines
3.0 KiB
JavaScript

var fs = require('fs');
exports.FREEBOARD_URL = fs.workingDirectory + '/index.html';
exports.BOGUS = 'json_input';
var SELECTORS = {
adminBar : '#admin-bar',
modelOverlay : '#modal_overlay',
addDatasource : '#datasources span.text-button',
pluginTypeDropdown : '#modal_overlay #setting-value-container-plugin-types select',
nameValueInput : '#modal_overlay #setting-value-container-name input',
urlValueInput : '#modal_overlay #setting-value-container-url input',
valueValueInput : '#modal_overlay #setting-value-container-value textarea',
modalOK : '#modal_overlay #dialog-ok',
modalValidationError : '#modal_overlay validation-error',
datasourceTable : '#datasources table#datasources-list',
datasourceName : '#datasources table#datasources-list span.datasource-name',
datasoureUpdated : '#datasources table#datasources-list tr td:nth-child(2)',
allPanes : '#board-content li',
allWidgets : '#board-content li section',
boardTools : '#board-tools',
addPane : '#board-tools #add-pane',
addWidget : '#board-content li header li i.icon-plus',
autofillDatasource : '#modal_overlay #setting-value-container-value li i.icon-plus',
autofillMenu : '#modal_overlay #value-selector',
autofillMenuItem : '#modal_overlay #value-selector li:nth-child(%s)',
singlePaneTextWidget : '#board-content li section div.text-widget-regular-value',
trashWidget : '#board-content li section i.icon-trash',
trashPane : '#board-content li header i.icon-trash',
trashDatasource : '#datasources table#datasources-list i.icon-trash'
};
exports.SELECTORS = SELECTORS;
function setValueAndTriggerChange(test, selector, value) {
test.assertVisible(selector);
casper.evaluate(function(selector, value) {
$(selector).val(value).change();
}, selector, value);
}
exports.setValueAndTriggerChange = setValueAndTriggerChange;
function clickModalOK(test) {
casper.then(function() {
test.assertVisible(SELECTORS.modalOK);
casper.click(SELECTORS.modalOK);
test.assertNotVisible(SELECTORS.modalValidationError);
});
casper.waitWhileVisible('#modal_overlay');
}
exports.clickModalOK = clickModalOK;
exports.getAutofillMenuItemSelector = function(index) {
return SELECTORS.autofillMenuItem.replace('%s', index);
}
exports.addJSONDatasource = function(test, name, url) {
casper.then(function() {
// Click Add datasource
casper.click(SELECTORS.addDatasource);
// Select JSON
setValueAndTriggerChange(test, SELECTORS.pluginTypeDropdown, 'JSON');
// Name the datasource "json_input"
setValueAndTriggerChange(test, SELECTORS.nameValueInput, name);
// Specify fixtures/input.json as the source
setValueAndTriggerChange(test, SELECTORS.urlValueInput, url);
});
// Click ok
clickModalOK(test);
casper.then(function() {
// Assert that the datasource displays correctly
test.assertVisible(SELECTORS.datasourceName);
var datasourceName = casper.fetchText(SELECTORS.datasourceName);
test.assertEquals(datasourceName, name);
var datasourceTime = casper.fetchText(SELECTORS.datasourceUpdated);
test.assertNotEquals(datasourceTime, 'never');
});
};