mirror of https://gitee.com/bigwinds/arangodb
193 lines
5.5 KiB
JavaScript
193 lines
5.5 KiB
JavaScript
/*jshint browser: true */
|
|
/*jshint unused: false */
|
|
/*global describe, beforeEach, afterEach, it, spyOn, expect*/
|
|
/*global runs, waitsFor, jasmine*/
|
|
/*global $, arangoHelper */
|
|
|
|
(function() {
|
|
"use strict";
|
|
|
|
describe("Applications View", function() {
|
|
var view,
|
|
collection,
|
|
model,
|
|
div,
|
|
specificFetch,
|
|
modalDiv;
|
|
|
|
beforeEach(function() {
|
|
specificFetch = undefined;
|
|
modalDiv = document.createElement("div");
|
|
modalDiv.id = "modalPlaceholder";
|
|
document.body.appendChild(modalDiv);
|
|
window.modalView = new window.ModalView();
|
|
div = document.createElement("div");
|
|
div.id = "content";
|
|
document.body.appendChild(div);
|
|
collection = new window.FoxxCollection();
|
|
spyOn(collection, "fetch").andCallFake(function(opts) {
|
|
if (specificFetch) {
|
|
specificFetch(opts);
|
|
return;
|
|
}
|
|
// Fake model already included
|
|
if (collection.length > 0) {
|
|
if (opts.success) {
|
|
opts.success();
|
|
}
|
|
return;
|
|
}
|
|
model = new window.Foxx({
|
|
_key: "1234",
|
|
_id: "aal/1234",
|
|
title: "TestFoxx",
|
|
version: 1.2,
|
|
mount: "/testfoxx",
|
|
description: "Test application",
|
|
manifest: {
|
|
git: "gitpath"
|
|
},
|
|
app: "app:TestFoxx:1.2",
|
|
type: "mount",
|
|
isSystem: false,
|
|
options: {
|
|
collectionPrefix: "testfoxx"
|
|
},
|
|
development: false
|
|
});
|
|
collection.add(model);
|
|
if (opts.success) {
|
|
opts.success();
|
|
}
|
|
});
|
|
view = new window.ApplicationsView({collection: collection});
|
|
view.reload();
|
|
});
|
|
|
|
afterEach(function() {
|
|
delete window.modalView;
|
|
document.body.removeChild(div);
|
|
document.body.removeChild(modalDiv);
|
|
});
|
|
|
|
describe("edit a foxx", function() {
|
|
|
|
var modalButtons, ajaxFunction;
|
|
|
|
beforeEach(function() {
|
|
runs(function() {
|
|
// Check if exactly on application is available
|
|
var button = $(".iconSet .icon_arangodb_settings2");
|
|
expect(button.length).toEqual(1);
|
|
button.click();
|
|
});
|
|
|
|
waitsFor(function() {
|
|
return $("#modal-dialog").css("display") === "block";
|
|
}, "show the modal dialog");
|
|
|
|
runs(function() {
|
|
ajaxFunction = function() {
|
|
return undefined;
|
|
};
|
|
modalButtons = {};
|
|
modalButtons.uninstall = function() {
|
|
return $("#modal-dialog .button-danger");
|
|
};
|
|
modalButtons.cancel = function() {
|
|
return $("#modal-dialog .button-close");
|
|
};
|
|
modalButtons.change = function() {
|
|
return $("#modal-dialog .button-success");
|
|
};
|
|
spyOn($, "ajax").andCallFake(function() {
|
|
ajaxFunction.apply(window, arguments);
|
|
});
|
|
});
|
|
});
|
|
|
|
it("should be able to switch mount point", function() {
|
|
var calledBack,
|
|
newMount;
|
|
|
|
runs(function() {
|
|
newMount = "/newMount";
|
|
ajaxFunction = function() {
|
|
calledBack = true;
|
|
};
|
|
$("#change-mount-point").val(newMount);
|
|
modalButtons.change().click();
|
|
});
|
|
|
|
waitsFor(function() {
|
|
return calledBack;
|
|
}, 1000);
|
|
|
|
runs(function() {
|
|
expect($.ajax).toHaveBeenCalledWith(
|
|
"foxx/move/" + model.get("_key"),{
|
|
dataType: "json",
|
|
data: JSON.stringify({
|
|
mount: newMount,
|
|
app: model.get("app"),
|
|
prefix: model.get("options").collectionPrefix
|
|
}),
|
|
async: false,
|
|
type: "PUT",
|
|
error: jasmine.any(Function)
|
|
});
|
|
});
|
|
});
|
|
|
|
it("should not hide the modal view if mountpoint change has failed", function() {
|
|
var calledBack,
|
|
newMount,
|
|
resText;
|
|
|
|
runs(function() {
|
|
newMount = "/newMount";
|
|
resText = "Mount-Point already in use";
|
|
ajaxFunction = function(url, options) {
|
|
expect(options.error).toEqual(jasmine.any(Function));
|
|
options.error(
|
|
{
|
|
status: 409,
|
|
statusText: "Conflict",
|
|
responseText: resText
|
|
}
|
|
);
|
|
calledBack = true;
|
|
};
|
|
spyOn(window.modalView, "hide");
|
|
spyOn(arangoHelper, "arangoError");
|
|
$("#change-mount-point").val(newMount);
|
|
modalButtons.change().click();
|
|
});
|
|
|
|
waitsFor(function() {
|
|
return calledBack;
|
|
}, 1000);
|
|
|
|
runs(function() {
|
|
expect(arangoHelper.arangoError).toHaveBeenCalledWith(resText);
|
|
expect(window.modalView.hide).not.toHaveBeenCalled();
|
|
});
|
|
|
|
});
|
|
|
|
it("should not trigger a remount if mountpoint has not been changed", function() {
|
|
spyOn(window, "alert");
|
|
modalButtons.change().click();
|
|
expect(window.alert).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("should prevent an illegal mountpoint", function() {
|
|
spyOn(arangoHelper, "arangoError");
|
|
$("#change-mount-point").val("illegal");
|
|
modalButtons.change().click();
|
|
expect(arangoHelper.arangoError).toHaveBeenCalled();
|
|
});
|
|
});
|
|
});
|
|
}());
|