You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ro...@apache.org on 2015/03/03 14:24:35 UTC
fauxton commit: updated refs/heads/master to 4b3b73f
Repository: couchdb-fauxton
Updated Branches:
refs/heads/master 69d098bf5 -> 4b3b73f44
Detect system databases on _
All system databases are now prefixed by `_`, so we can remove
a lot of detection logic.
Additionally colored the warning in red.
closes COUCHDB-2607
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/4b3b73f4
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/4b3b73f4
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/4b3b73f4
Branch: refs/heads/master
Commit: 4b3b73f44349230ea8ae3a877f4c2e2a87258d9d
Parents: 69d098b
Author: Robert Kowalski <ro...@apache.org>
Authored: Mon Mar 2 18:43:00 2015 +0100
Committer: Robert Kowalski <ro...@apache.org>
Committed: Tue Mar 3 14:24:04 2015 +0100
----------------------------------------------------------------------
app/addons/databases/resources.js | 43 ++----------------
app/addons/databases/tests/resourcesSpec.js | 17 --------
app/addons/documents/assets/less/documents.less | 6 +++
app/addons/documents/shared-routes.js | 3 +-
app/addons/documents/shared-views.js | 11 ++---
.../templates/delete_database_modal.html | 2 +-
.../tests/nightwatch/deleteDatabaseModal.js | 46 ++++++++++++++++++++
test/nightwatch_tests/helpers/helpers.js | 6 ++-
8 files changed, 66 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/app/addons/databases/resources.js
----------------------------------------------------------------------
diff --git a/app/addons/databases/resources.js b/app/addons/databases/resources.js
index 2066368..ba883b6 100644
--- a/app/addons/databases/resources.js
+++ b/app/addons/databases/resources.js
@@ -49,6 +49,10 @@ function(app, FauxtonAPI, Documents) {
return false;
},
+ isSystemDatabase: function () {
+ return (/^_/).test(this.id);
+ },
+
url: function(context) {
if (context === "index") {
return "/database/" + this.safeID() + "/_all_docs";
@@ -82,45 +86,6 @@ function(app, FauxtonAPI, Documents) {
}
});
- Databases.IsSystemDatabaseModel = FauxtonAPI.Model.extend({
-
- initialize: function (options) {
- this.name = options.name;
- },
-
- url: function () {
- return app.host + '/_stats';
- },
-
- sync: function (method, model, options) {
- options.url = this.url();
- return $.ajax(options);
- },
-
- parse: function (data) {
- var isOnFrontendNode,
- isSystemDatabase = false,
- systemDatabases = [
- '_replicator',
- '_users',
- 'nodes',
- 'dbs',
- 'cassim'
- ];
- try {
- JSON.parse(data);
- isOnFrontendNode = false;
-
- } catch (e) {
- isOnFrontendNode = true;
- }
- if (systemDatabases.indexOf(this.name) !== -1 && !isOnFrontendNode) {
- isSystemDatabase = true;
- }
- this.set('isSystemDatabase', isSystemDatabase);
- }
- });
-
Databases.Changes = FauxtonAPI.Collection.extend({
initialize: function(options) {
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/app/addons/databases/tests/resourcesSpec.js
----------------------------------------------------------------------
diff --git a/app/addons/databases/tests/resourcesSpec.js b/app/addons/databases/tests/resourcesSpec.js
index b5d01a8..2980dd2 100644
--- a/app/addons/databases/tests/resourcesSpec.js
+++ b/app/addons/databases/tests/resourcesSpec.js
@@ -50,22 +50,5 @@ define([
assert.equal(databaseNames[1], 'rocko');
});
});
- describe('Is system Database', function () {
- it('checks if the current database is a systemDatabase if /_stats returns json', function () {
- var isSystemDatabase = new Resources.IsSystemDatabaseModel({name: '_users'});
- isSystemDatabase.parse('{"couch_replicator":{}}');
- assert.ok(isSystemDatabase.get('isSystemDatabase'));
- });
- it('checks if the current database is a systemDatabase if /_stats returns no json', function () {
- var isSystemDatabase = new Resources.IsSystemDatabaseModel({name: '_users'});
- isSystemDatabase.parse('<html></html>');
- assert.notOk(isSystemDatabase.get('isSystemDatabase'));
- });
- it('checks if the "cassim" internal database is a system database', function () {
- var isSystemDatabase = new Resources.IsSystemDatabaseModel({name: 'cassim'});
- isSystemDatabase.parse('{"couch_replicator":{}}');
- assert.ok(isSystemDatabase.get('isSystemDatabase'));
- });
- });
});
});
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/app/addons/documents/assets/less/documents.less
----------------------------------------------------------------------
diff --git a/app/addons/documents/assets/less/documents.less b/app/addons/documents/assets/less/documents.less
index f7fcb20..baae4d7 100644
--- a/app/addons/documents/assets/less/documents.less
+++ b/app/addons/documents/assets/less/documents.less
@@ -90,6 +90,12 @@ button.string-edit[disabled] {
display: none;
}
+#delete-db-check {
+ .warning {
+ color: #d14;
+ }
+}
+
#string-edit-modal {
div.modal {
overflow-x: visible;
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/app/addons/documents/shared-routes.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/shared-routes.js b/app/addons/documents/shared-routes.js
index e1a84a1..8167d8f 100644
--- a/app/addons/documents/shared-routes.js
+++ b/app/addons/documents/shared-routes.js
@@ -65,8 +65,7 @@ define([
addSidebar: function (selectedTab) {
var params = {
collection: this.designDocs,
- database: this.database,
- isSystemDatabaseModel: new Databases.IsSystemDatabaseModel({name: this.database.get('id')})
+ database: this.database
};
if (selectedTab) {
params.selectedTab = selectedTab;
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/app/addons/documents/shared-views.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/shared-views.js b/app/addons/documents/shared-views.js
index fa9ae37..31eaf62 100644
--- a/app/addons/documents/shared-views.js
+++ b/app/addons/documents/shared-views.js
@@ -30,7 +30,6 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
initialize: function(options) {
this.database = options.database;
- this.isSystemDatabaseModel = options.isSystemDatabaseModel;
if (options.ddocInfo) {
this.ddocID = options.ddocInfo.id;
@@ -93,15 +92,13 @@ function(app, FauxtonAPI, Components, Documents, Databases) {
}]);
},
- establish: function () {
- return [this.isSystemDatabaseModel.fetch({reset: true})];
-
- },
-
beforeRender: function(manage) {
this.deleteDBModal = this.setView(
'#delete-db-modal',
- new Views.DeleteDBModal({database: this.database, isSystemDatabase: this.isSystemDatabaseModel.get('isSystemDatabase')})
+ new Views.DeleteDBModal({
+ database: this.database,
+ isSystemDatabase: this.database.isSystemDatabase()
+ })
);
var newLinks = [{
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/app/addons/documents/templates/delete_database_modal.html
----------------------------------------------------------------------
diff --git a/app/addons/documents/templates/delete_database_modal.html b/app/addons/documents/templates/delete_database_modal.html
index 6c493d7..f1f8325 100644
--- a/app/addons/documents/templates/delete_database_modal.html
+++ b/app/addons/documents/templates/delete_database_modal.html
@@ -20,7 +20,7 @@ the License.
<div class="modal-body">
<form id="delete-db-check" class="form" method="post">
<% if (isSystemDatabase) { %>
- <p>You are about to delete a system database, be careful!</p>
+ <p class="warning"><b>You are about to delete a system database, be careful!</b></p>
<% } %>
<p>
You've asked to <b>permanently delete</b> <code><%- database.id %></code>.
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js b/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js
new file mode 100644
index 0000000..d222ee7
--- /dev/null
+++ b/app/addons/documents/tests/nightwatch/deleteDatabaseModal.js
@@ -0,0 +1,46 @@
+// 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.
+
+module.exports = {
+ 'Shows a warning for system databases (prefixed with _)': function (client) {
+ var waitTime = 8000,
+ baseUrl = client.globals.test_settings.launch_url;
+
+ client
+ .loginToGUI()
+ .url(baseUrl + '/#/database/_replicator/_all_docs')
+ .waitForElementPresent('#header-dropdown-menu a.dropdown-toggle.icon.fonticon-cog', waitTime, false)
+ .click("#header-dropdown-menu a.dropdown-toggle.icon.fonticon-cog")
+ .waitForElementPresent('#header-dropdown-menu .fonticon-trash', waitTime, false)
+ .click('#header-dropdown-menu .fonticon-trash')
+ .waitForElementVisible('#db_name', waitTime, false)
+ .assert.elementPresent('.warning')
+ .end();
+ },
+
+ 'Shows no warning for non system databases': function (client) {
+ var waitTime = 8000,
+ newDatabaseName = client.globals.testDatabaseName,
+ baseUrl = client.globals.test_settings.launch_url;
+
+ client
+ .loginToGUI()
+ .url(baseUrl + '/#/database/' + newDatabaseName + '/_all_docs')
+ .waitForElementPresent('#header-dropdown-menu a.dropdown-toggle.icon.fonticon-cog', waitTime, false)
+ .click("#header-dropdown-menu a.dropdown-toggle.icon.fonticon-cog")
+ .waitForElementPresent('#header-dropdown-menu .fonticon-trash', waitTime, false)
+ .click('#header-dropdown-menu .fonticon-trash')
+ .waitForElementVisible('#db_name', waitTime, false)
+ .assert.elementNotPresent('.warning')
+ .end();
+ }
+};
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/4b3b73f4/test/nightwatch_tests/helpers/helpers.js
----------------------------------------------------------------------
diff --git a/test/nightwatch_tests/helpers/helpers.js b/test/nightwatch_tests/helpers/helpers.js
index 555a747..5db5c60 100644
--- a/test/nightwatch_tests/helpers/helpers.js
+++ b/test/nightwatch_tests/helpers/helpers.js
@@ -22,9 +22,11 @@ module.exports = {
// create a new database
nano.db.create(database, function (err, body, header) {
if (err) {
- console.log('Error in setting up '+database, err.message);
+ console.log('Error in setting up ' + database, err.message);
}
- done();
+ nano.db.create('_replicator', function (err, body, header) {
+ done();
+ });
});
});
},