You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2016/11/30 09:27:14 UTC
fauxton commit: updated refs/heads/master to 2dc4188
Repository: couchdb-fauxton
Updated Branches:
refs/heads/master e53deb5d9 -> 2dc418893
add more tests to replication activity
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/2dc41889
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/2dc41889
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/2dc41889
Branch: refs/heads/master
Commit: 2dc4188936d4a0a2be5fcbfdf220248510726e80
Parents: e53deb5
Author: Garren Smith <ga...@gmail.com>
Authored: Mon Nov 28 11:15:10 2016 +0200
Committer: Garren Smith <ga...@gmail.com>
Committed: Wed Nov 30 11:26:50 2016 +0200
----------------------------------------------------------------------
.../replication/tests/nightwatch/replication.js | 8 +--
.../tests/nightwatch/replicationactivity.js | 75 ++++++++++++++++----
.../custom-commands/checkForDocumentDeleted.js | 49 +++++++++++++
test/nightwatch_tests/custom-commands/helper.js | 17 +++++
4 files changed, 130 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2dc41889/app/addons/replication/tests/nightwatch/replication.js
----------------------------------------------------------------------
diff --git a/app/addons/replication/tests/nightwatch/replication.js b/app/addons/replication/tests/nightwatch/replication.js
index 1f879af..9c21361 100644
--- a/app/addons/replication/tests/nightwatch/replication.js
+++ b/app/addons/replication/tests/nightwatch/replication.js
@@ -39,6 +39,7 @@ module.exports = {
const waitTime = client.globals.maxWaitTime;
const baseUrl = client.globals.test_settings.launch_url;
const password = client.globals.test_settings.password;
+ console.log('PASSWORD', password);
client
.createDatabase(newDatabaseName1)
@@ -65,14 +66,10 @@ module.exports = {
.click('#replicate')
.waitForElementPresent('.enter-password-modal', waitTime, true)
- .setValue('.enter-password-modal input[type="password"]', password)
+ .setValue('.enter-password-modal .password-modal-input', password)
.click('.enter-password-modal button.save')
.waitForElementNotPresent('.enter-password-modal', waitTime, true)
.waitForElementNotPresent('.global-notification .fonticon-cancel', waitTime, false)
-
- // now check the database was created
- //.checkForDatabaseCreated(replicatedDBName, waitTime)
-
.end();
},
@@ -133,7 +130,6 @@ module.exports = {
};
client
-
// create two databases, each with a single (different) doc
.createDatabase(newDatabaseName1)
.checkForDatabaseCreated(newDatabaseName1, waitTime)
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2dc41889/app/addons/replication/tests/nightwatch/replicationactivity.js
----------------------------------------------------------------------
diff --git a/app/addons/replication/tests/nightwatch/replicationactivity.js b/app/addons/replication/tests/nightwatch/replicationactivity.js
index b8dc7c3..2bb9b59 100644
--- a/app/addons/replication/tests/nightwatch/replicationactivity.js
+++ b/app/addons/replication/tests/nightwatch/replicationactivity.js
@@ -13,13 +13,13 @@
module.exports = {
- 'Can delete document': (client) => {
+ 'Can view doc': client => {
const waitTime = client.globals.maxWaitTime;
const baseUrl = client.globals.test_settings.launch_url;
const password = client.globals.test_settings.password;
const replicatorDoc = {
- _id: 'existing-doc-id-2',
+ _id: 'existing-doc-id-view-doc',
source: "http://source-db.com",
target: "http://target-db.com"
};
@@ -29,21 +29,70 @@ module.exports = {
.createDocument(replicatorDoc._id, '_replicator', replicatorDoc)
.loginToGUI()
.waitForElementNotPresent('.global-notification .fonticon-cancel', waitTime, false)
- .url(baseUrl + '/#/replication')
+ .url(baseUrl + '/#replication')
.waitForElementNotPresent('.load-lines', waitTime, true)
.waitForElementPresent('.replication__filter', waitTime, true)
- .click('a[title="Delete document existing-doc-id-2"]')
- .waitForElementPresent('.replication_delete-doc-modal', waitTime, true)
- .click('.replication_delete-doc-modal button.save')
- .waitForElementNotPresent('.replication_delete-doc-modal', waitTime, true)
- .waitForElementPresent('.global-notification .fonticon-cancel', waitTime, false)
+ .clickWhenVisible('a[href="#/database/_replicator/existing-doc-id-view-doc"]')
+ .waitForElementNotPresent('.load-lines', waitTime, true)
+ .waitForElementPresent('#editor-container', waitTime, true)
+ .end();
+ },
+
+ 'Can edit doc': client => {
+ const waitTime = client.globals.maxWaitTime;
+ const baseUrl = client.globals.test_settings.launch_url;
+ const password = client.globals.test_settings.password;
+
+ const replicatorDoc = {
+ _id: 'existing-doc-id-edit-doc',
+ source: "http://source-db.com",
+ target: "http://target-db.com"
+ };
+ client
+ .deleteDatabase('_replicator')
+ .createDatabase('_replicator')
+ .createDocument(replicatorDoc._id, '_replicator', replicatorDoc)
+ .loginToGUI()
+ .waitForElementNotPresent('.global-notification .fonticon-cancel', waitTime, false)
+ .url(baseUrl + '/#replication')
+ .waitForElementNotPresent('.load-lines', waitTime, true)
+ .waitForElementPresent('.replication__filter', waitTime, true)
+ .clickWhenVisible('a[title="Edit replication"]')
+ .waitForElementNotPresent('.load-lines', waitTime, true)
+ .waitForElementPresent('.replication__section', waitTime, true)
+ .end();
+ },
+
+ 'Can filter docs': client => {
+ const waitTime = client.globals.maxWaitTime;
+ const baseUrl = client.globals.test_settings.launch_url;
+ const password = client.globals.test_settings.password;
+
+ const replicatorDoc1 = {
+ _id: 'existing-doc-id-filter1',
+ source: "http://source-db.com",
+ target: "http://target-db.com"
+ };
+
+ const replicatorDoc2 = {
+ _id: 'existing-doc-filter2',
+ source: "http://source-db2.com",
+ target: "http://target-db.com"
+ };
+ client
+ .deleteDatabase('_replicator')
+ .createDatabase('_replicator')
+ .createDocument(replicatorDoc1._id, '_replicator', replicatorDoc1)
+ .createDocument(replicatorDoc2._id, '_replicator', replicatorDoc2)
+ .loginToGUI()
.waitForElementNotPresent('.global-notification .fonticon-cancel', waitTime, false)
- .url(baseUrl)
- .waitForElementPresent('.databases.table', waitTime, false)
- .url(baseUrl + '/#/replication')
+ .url(baseUrl + '/#replication')
.waitForElementNotPresent('.load-lines', waitTime, true)
- .waitForElementNotPresent('a[title="Delete document existing-doc-id-2"]', waitTime, true)
- .assert.elementNotPresent('a[title="Delete document existing-doc-id-2"]')
+ .setValue('.replication__filter-input', 'filter1')
+ .waitForElementNotPresent('a[href="#/database/_replicator/existing-doc-filter2"]', waitTime, true)
+ .clearValue('.replication__filter-input')
+ .setValue('.replication__filter-input', 'filter')
+ .waitForElementPresent('a[href="#/database/_replicator/existing-doc-filter2"]', waitTime, true)
.end();
}
};
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2dc41889/test/nightwatch_tests/custom-commands/checkForDocumentDeleted.js
----------------------------------------------------------------------
diff --git a/test/nightwatch_tests/custom-commands/checkForDocumentDeleted.js b/test/nightwatch_tests/custom-commands/checkForDocumentDeleted.js
new file mode 100644
index 0000000..7b28821
--- /dev/null
+++ b/test/nightwatch_tests/custom-commands/checkForDocumentDeleted.js
@@ -0,0 +1,49 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+var util = require('util'),
+ events = require('events'),
+ helpers = require('../helpers/helpers.js'),
+ request = require('request');
+
+const commandHelper = require('./helper.js');
+const checkForDocumentDeleted = commandHelper.checkForDocumentDeleted;
+
+function CheckForDocumentDeleted () {
+ events.EventEmitter.call(this);
+}
+
+// inherit from node's event emitter
+util.inherits(CheckForDocumentDeleted, events.EventEmitter);
+
+CheckForDocumentDeleted.prototype.command = function (doc, timeout, db) {
+ const couchUrl = this.client.options.db_url;
+
+ if (!db) {
+ db = helpers.testDatabaseName;
+ }
+
+ if (!timeout) {
+ timeout = helpers.maxWaitTime;
+ }
+
+ const url = [couchUrl, db, doc].join('/');
+
+ console.log('checking this doc is deleted: ', url);
+ checkForDocumentDeleted(url, timeout, () => {
+ this.emit('complete');
+ });
+
+ return this;
+};
+
+module.exports = CheckForDocumentDeleted;
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/2dc41889/test/nightwatch_tests/custom-commands/helper.js
----------------------------------------------------------------------
diff --git a/test/nightwatch_tests/custom-commands/helper.js b/test/nightwatch_tests/custom-commands/helper.js
index 5b1718b..93a1516 100644
--- a/test/nightwatch_tests/custom-commands/helper.js
+++ b/test/nightwatch_tests/custom-commands/helper.js
@@ -37,3 +37,20 @@ exports.checkForDatabaseCreated = function checkForDatabaseCreated (couchUrl, da
});
}, 1000);
};
+
+exports.checkForDocumentDeleted = function checkForDocumentDeleted (couchUrl, timeout, cb) {
+ const timeOutId = setTimeout(() => {
+ throw new Error('timeout waiting for doc to be deleted');
+ }, timeout);
+
+ const intervalId = setInterval(() => {
+ request(couchUrl, function (er, res, body) {
+ if (res.statusCode === 404) {
+ clearTimeout(timeOutId);
+ clearInterval(intervalId);
+ cb(null);
+ }
+ });
+ }, 1000);
+
+};