From 5176ce08195df68d884183144ad878c36b3b27b0 Mon Sep 17 00:00:00 2001 From: LeeDr Date: Mon, 2 Nov 2015 15:54:53 -0600 Subject: [PATCH] Changed more testSettings tests to BDD. --- .../apps/settings/_create_button.js | 37 ++++++ .../settings/_index_pattern_create_delete.js | 124 ++++++++++++++++++ .../apps/settings/_name_pattern_checkbox.js | 41 ++++++ test/functional/apps/settings/testSettings.js | 16 ++- test/support/pages/Common.js | 6 +- 5 files changed, 218 insertions(+), 6 deletions(-) create mode 100644 test/functional/apps/settings/_create_button.js create mode 100644 test/functional/apps/settings/_index_pattern_create_delete.js create mode 100644 test/functional/apps/settings/_name_pattern_checkbox.js diff --git a/test/functional/apps/settings/_create_button.js b/test/functional/apps/settings/_create_button.js new file mode 100644 index 000000000000..1f56ebf13c70 --- /dev/null +++ b/test/functional/apps/settings/_create_button.js @@ -0,0 +1,37 @@ +define(function (require) { + var Common = require('../../../support/pages/Common'); + var SettingsPage = require('../../../support/pages/SettingsPage'); + var expect = require('intern/dojo/node!expect.js'); + + return function (bdd) { + bdd.describe('create button states', function () { + var common; + var settingsPage; + + bdd.before(function () { + common = new Common(this.remote); + settingsPage = new SettingsPage(this.remote); + }); + + bdd.it('should not be initially enabled', function () { + return settingsPage.getCreateButton().isEnabled() + .then(function (enabled) { + expect(enabled).to.not.be.ok(); + }) + .catch(common.handleError(this)); + }); + + bdd.it('should be enabled after selecting time field option', function () { + // select a time field and check that Create button is enabled + return settingsPage.selectTimeFieldOption('@timestamp') + .then(function () { + return settingsPage.getCreateButton().isEnabled() + .then(function (enabled) { + expect(enabled).to.be.ok(); + }); + }) + .catch(common.handleError(this)); + }); + }); + }; +}); diff --git a/test/functional/apps/settings/_index_pattern_create_delete.js b/test/functional/apps/settings/_index_pattern_create_delete.js new file mode 100644 index 000000000000..d68fb5cf0a9f --- /dev/null +++ b/test/functional/apps/settings/_index_pattern_create_delete.js @@ -0,0 +1,124 @@ +define(function (require) { + var Common = require('../../../support/pages/Common'); + var SettingsPage = require('../../../support/pages/SettingsPage'); + var expect = require('intern/dojo/node!expect.js'); + var Promise = require('bluebird'); + + return function (bdd) { + bdd.describe('creating and deleting default index', function describeIndexTests() { + var common; + var settingsPage; + var remote; + var expectedAlertText = 'Are you sure you want to remove this index pattern?'; + + bdd.before(function () { + common = new Common(this.remote); + settingsPage = new SettingsPage(this.remote); + remote = this.remote; + }); + + + function createIndex() { + return settingsPage.selectTimeFieldOption('@timestamp') + .then(function () { + return settingsPage.getCreateButton().click(); + }); + } + + function removeIndex() { + return common.tryForTime(3000, function () { + // delete the index pattern -X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X + return settingsPage.clickDeletePattern(); + }) + .then(function () { + return common.tryForTime(3000, function () { + return remote.getAlertText() + .then(function (alertText) { + expect(alertText).to.be(expectedAlertText); + }); + }); + }) + .then(function () { + return remote.acceptAlert(); + }); + } + + bdd.describe('index pattern creation', function indexPatternCreation() { + bdd.beforeEach(function be() { + return createIndex(); + }); + + bdd.afterEach(function ae() { + return removeIndex(); + }); + + bdd.it('should have index pattern in page header', function pageHeader() { + return settingsPage.getIndexPageHeading().getVisibleText() + .then(function (patternName) { + expect(patternName).to.be('logstash-*'); + }) + .catch(common.handleError(this)); + }); + + bdd.it('should have index pattern in url', function url() { + return common.tryForTime(5000, function () { + return remote.getCurrentUrl() + .then(function (currentUrl) { + expect(currentUrl).to.contain('logstash-*'); + }); + }) + .catch(common.handleError(this)); + }); + + bdd.it('should have expected table headers', function checkingHeader() { + return settingsPage.getTableHeader() + .then(function (headers) { + common.log('header.length = ' + headers.length); + var expectedHeaders = [ + 'name', + 'type', + 'format', + 'analyzed', + 'indexed', + 'controls' + ]; + + // 6 name type format analyzed indexed controls + expect(headers.length).to.be(expectedHeaders.length); + + var comparedHeaders = headers.map(function compareHead(header, i) { + return header.getVisibleText() + .then(function (text) { + expect(text).to.be(expectedHeaders[i]); + }); + }); + + return Promise.all(comparedHeaders); + }) + .catch(common.handleError(this)); + }); + }); + + bdd.describe('index pattern deletion', function indexDelete() { + bdd.it('should return to index pattern creation page', function returnToPage() { + return common.tryForTime(5000, function () { + return settingsPage.getCreateButton(); + }) + .catch(common.handleError(this)); + }); + + bdd.it('should remove index pattern from url', function indexNotInUrl() { + return common.tryForTime(3000, function () { + return remote.getCurrentUrl() + .then(function (currentUrl) { + common.log('currentUrl = ' + currentUrl); + expect(currentUrl).to.not.contain('logstash-*'); + }); + }) + .catch(common.handleError(this)); + }); + }); + + }); + }; +}); diff --git a/test/functional/apps/settings/_name_pattern_checkbox.js b/test/functional/apps/settings/_name_pattern_checkbox.js new file mode 100644 index 000000000000..2e6f93b30117 --- /dev/null +++ b/test/functional/apps/settings/_name_pattern_checkbox.js @@ -0,0 +1,41 @@ +define(function (require) { + var Common = require('../../../support/pages/Common'); + var SettingsPage = require('../../../support/pages/SettingsPage'); + var expect = require('intern/dojo/node!expect.js'); + + return function (bdd) { + bdd.describe('name is pattern checkbox', function () { + var common; + var settingsPage; + + bdd.before(function () { + common = new Common(this.remote); + settingsPage = new SettingsPage(this.remote); + }); + + bdd.it('should be hidden with time based unchecked', function () { + var self = this; + return settingsPage.getTimeBasedEventsCheckbox() + .then(function (selected) { + // uncheck the 'time-based events' checkbox + return selected.click(); + }) + // try to find the name is pattern checkbox (shouldn't find it) + .then(function () { + return settingsPage.getNameIsPatternCheckbox(); + }) + .then(function () { + // we expect the promise above to fail + var handler = common.handleError(self); + handler( + 'Did not expect to find the Name is Pattern checkbox when the TimeBasedEvents checkbox is unchecked' + ); + }) + .catch(function () { + // we expect this failure since the 'name is pattern' checkbox should be hidden + return; + }); + }); + }); + }; +}); diff --git a/test/functional/apps/settings/testSettings.js b/test/functional/apps/settings/testSettings.js index 3f0a3f87a55e..efc39e284833 100644 --- a/test/functional/apps/settings/testSettings.js +++ b/test/functional/apps/settings/testSettings.js @@ -4,18 +4,22 @@ define(function (require) { var config = require('intern').config; var url = require('intern/dojo/node!url'); var _ = require('intern/dojo/node!lodash'); - var Common = require('../../../support/pages/Common'); var ScenarioManager = require('intern/dojo/node!../../../fixtures/scenarioManager'); // var HeaderPage = require('../../../support/pages/HeaderPage'); // var pollUntil = require('intern/dojo/node!leadfoot/helpers/pollUntil'); + var initialStateTest = require('./_initial_state'); + var createButtonTest = require('./_create_button'); + var namePatternCheckboxTest = require('./_name_pattern_checkbox'); + var indexPatternCreateDeleteTest = require('./_index_pattern_create_delete'); + // var indexPatternResultsSortTest = require('./_index_pattern_results_sort'); + // var indexPatternPopularityTest = require('./_index_pattern_popularity'); bdd.describe('settings app', function () { var common; var scenarioManager; var remote; - var expectedAlertText = 'Are you sure you want to remove this index pattern?'; // on setup, we create an settingsPage instance // that we will use for all the tests bdd.before(function () { @@ -25,6 +29,7 @@ define(function (require) { }); bdd.beforeEach(function () { + common.log('running bdd.beforeEach'); // start each test with an empty kibana index return scenarioManager.reload('emptyKibana') // and load a minimal set of makelogs data @@ -57,7 +62,12 @@ define(function (require) { return scenarioManager.unload('makelogs'); }); - require('./_initial_state')(bdd); + initialStateTest(bdd); + createButtonTest(bdd); + + namePatternCheckboxTest(bdd); + + indexPatternCreateDeleteTest(bdd); }); }); diff --git a/test/support/pages/Common.js b/test/support/pages/Common.js index b47140692258..8a1450542ecd 100644 --- a/test/support/pages/Common.js +++ b/test/support/pages/Common.js @@ -52,12 +52,12 @@ define(function (require) { log('... sleep(' + sleepMilliseconds + ') start'); return Promise.resolve().delay(sleepMilliseconds) - .then(function () { log('... sleep(' + sleepMilliseconds + ') end'); }) + .then(function () { log('... sleep(' + sleepMilliseconds + ') end'); }); }, handleError: function (testObj) { var self = this; - testName = (testObj.parent) ? [testObj.parent.name, testObj.name].join('_') : testObj.name; + var testName = (testObj.parent) ? [testObj.parent.name, testObj.name].join('_') : testObj.name; return function (reason) { var now = Date.now(); @@ -66,7 +66,7 @@ define(function (require) { return self.saveScreenshot(filename) .then(function () { throw new Error(reason); - }) + }); }; },