blob: eb6dac41a5e67bee7b2db12bd82a7744fd9d408b [file] [log] [blame]
// 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.
define([
"app",
"api",
"addons/verifyinstall/resources",
],
function(app, FauxtonAPI, VerifyInstall) {
VerifyInstall.Main = FauxtonAPI.View.extend({
template: 'addons/verifyinstall/templates/main',
events: {
"click #start": "startTest"
},
initialize: function (options) {
_.bindAll(this);
},
setPass: function (id) {
this.$('#' + id).html('✓');
},
setError: function (id, msg) {
this.$('#' + id).html('✗');
FauxtonAPI.addNotification({
msg: 'Error: ' + msg,
type: 'error',
selector: '#error'
});
},
complete: function () {
FauxtonAPI.addNotification({
msg: 'Success! You Couchdb install is working. Time to Relax',
type: 'success',
selector: '#error'
});
},
enableButton: function () {
this.$('#start').removeAttr('disabled').text('Verify Installation');
},
disableButton: function () {
this.$('#start').attr('disabled','disabled').text('Verifying');
},
formatError: function (id) {
var enableButton = this.enableButton,
setError = this.setError;
return function (xhr, error, reason) {
enableButton();
if (!xhr) { return; }
setError(id, JSON.parse(xhr.responseText).reason);
};
},
startTest: function () {
this.disableButton();
this.$('.status').text('');
var testProcess = VerifyInstall.testProcess,
setPass = this.setPass,
complete = this.complete,
setError = this.setError,
formatError = this.formatError;
testProcess.setup()
.then(function () {
return testProcess.saveDB();
}, formatError('create-database'))
.then(function () {
setPass('create-database');
return testProcess.saveDoc();
}, formatError('create-document'))
.then(function () {
setPass('create-document');
return testProcess.updateDoc();
}, formatError('update-document'))
.then(function () {
setPass('update-document');
return testProcess.destroyDoc();
}, formatError('delete-document'))
.then(function () {
setPass('delete-document');
return testProcess.setupView();
}, formatError('create-view'))
.then(function () {
return testProcess.testView();
}, formatError('create-view'))
.then(function () {
setPass('create-view');
return testProcess.setupReplicate();
}, formatError('create-view'))
.then(function () {
return testProcess.testReplicate();
}, formatError('replicate'))
.then(function () {
setPass('replicate');
complete();
testProcess.removeDBs();
}, formatError('replicate'));
this.enableButton();
}
});
return VerifyInstall;
});