Revision 1420aae4 ui/static/snf/js/tests.js
b/ui/static/snf/js/tests.js | ||
---|---|---|
78 | 78 |
equals(v1.get('state'), 'DESTROY', "From destroy to active should keep state to DESTROY"); |
79 | 79 |
v1.set({'status': 'REBOOT'}) |
80 | 80 |
equals(v1.get('state'), 'DESTROY', "From destroy to active should keep state to DESTROY"); |
81 |
v1.set({'status': 'DELETE'}) |
|
82 |
equals(v1.get('state'), 'DELETE', "Destroy should be kept until DELETE or ERROR"); |
|
81 |
v1.set({'status': 'DELETED'})
|
|
82 |
equals(v1.get('state'), 'DELETED', "Destroy should be kept until DELETE or ERROR");
|
|
83 | 83 |
|
84 | 84 |
v1 = new vm({status:'BUILD'}); |
85 | 85 |
equals(v1.get('state'), 'BUILD', "new vm with build as initial status") |
... | ... | |
315 | 315 |
}) |
316 | 316 |
|
317 | 317 |
|
318 |
module("VM List view"); |
|
319 |
test("test vm list views", function() { |
|
320 |
vms.unbind(); |
|
321 |
expect(11); |
|
322 |
|
|
323 |
var api_mock = undefined; |
|
324 |
function mock_api(data) { |
|
325 |
if (api_mock != undefined) { |
|
326 |
$.mockjaxClear(api_mock) |
|
327 |
} |
|
328 |
|
|
329 |
api_mock = $.mockjax({ |
|
330 |
url: '/api/v1.1/servers/detail*', |
|
331 |
responseTime: 1, |
|
332 |
responseText: {'servers':{'values':vms_data}} |
|
333 |
}); |
|
334 |
} |
|
335 |
|
|
336 |
$("body").append('<div id="demo-vm-view"><div id="demo-vm-view-tpl"><div class="spinner"></div></div></div>'); |
|
337 |
|
|
338 |
// create the test vms view |
|
339 |
// bind append calls when view |
|
340 |
// or vm gets updated |
|
341 |
var DemoView = snf.views.VMListView.extend({ |
|
342 |
id_tpl: 'demo-vm-{0}', |
|
343 |
view_id: "test", |
|
344 |
selectors: { |
|
345 |
'vms': '#demo-vm-view', |
|
346 |
'vm': '#demo-vm-{0}', |
|
347 |
'view': '#demo-vm-view', |
|
348 |
'tpl': '#demo-vm-view-tpl', |
|
349 |
'vm_cont_active': '#demo-vm-view', |
|
350 |
'vm_cont_terminated': '#demo-vm-view', |
|
351 |
'vm_spinner': '#demo-vm-{0} .spinner' |
|
352 |
}, |
|
353 |
|
|
354 |
test: "initialize", |
|
355 |
post_add: function(vm) {}, |
|
356 |
set_vm_handlers: function(vm) {}, |
|
357 |
set_handlers: function() {}, |
|
358 |
update_layout: function() {ok(1, "layout updated on '" + this.test + "'")}, |
|
359 |
post_update_vm: function(vm) {ok(1, 'vm['+vm.id+'] updated on '+this.test+'')}, |
|
360 |
post_remove_vm: function(vm) {ok(1, 'vm['+vm.id+'] removed on '+this.test+'')}, |
|
361 |
update_details: function(vm) {} |
|
362 |
}) |
|
363 |
|
|
364 |
|
|
365 |
// 1 call (only layout update |
|
366 |
var view = new DemoView(); |
|
367 |
var vms_data = {}; |
|
368 |
|
|
369 |
// initial fetch |
|
370 |
// 2 calls one for layout 1 for the first vm |
|
371 |
view.test = "initial fetch 1 new vm"; |
|
372 |
vms_data = [{id:1, name:"server1", status:"ACTIVE"}]; |
|
373 |
mock_api(vms_data); |
|
374 |
view.test = "initial fetch"; |
|
375 |
vms.fetch({async:false, refresh:true, update:false}); |
|
376 |
|
|
377 |
// 1 new vm 1 unchanged |
|
378 |
// 2 calls one for layout 1 for new vm |
|
379 |
view.test = "1 new vm 1 unchanged"; |
|
380 |
vms_data = [{id:1, name:"server1", status:"ACTIVE"}, |
|
381 |
{id:2, name:"server2", status:"ACTIVE"}]; |
|
382 |
mock_api(vms_data); |
|
383 |
vms.fetch({async:false}); |
|
384 |
|
|
385 |
// 2 changed |
|
386 |
// 4 calls 2 for layout 2 for vms |
|
387 |
view.test = "2 existing changed"; |
|
388 |
vms_data = [{id:1, name:"server141", status:"REBOOT"}, |
|
389 |
{id:2, name:"server2512", status:"REBOOT"}]; |
|
390 |
mock_api(vms_data); |
|
391 |
vms.fetch({async:false}); |
|
392 |
|
|
393 |
// 2 removed |
|
394 |
// 4 calls 2 for layout 2 for vms |
|
395 |
view.test = "2 vms removed"; |
|
396 |
vms_data = [{id:1, name:"server141", status:"DELETED"}, |
|
397 |
{id:2, name:"server2512", status:"DELETED"}]; |
|
398 |
mock_api(vms_data); |
|
399 |
vms.fetch({async:false}); |
|
400 |
|
|
401 |
vms.unbind(); |
|
402 |
delete view; |
|
403 |
$.mockjaxClear(); |
|
404 |
}); |
|
405 |
|
|
406 |
module("API errors"); |
|
407 |
|
|
408 |
test("test api error", function(){ |
|
409 |
expect(2); |
|
410 |
vms.unbind(); |
|
411 |
|
|
412 |
var api_mock = undefined; |
|
413 |
function mock_api(data) { |
|
414 |
if (api_mock != undefined) { |
|
415 |
$.mockjaxClear(api_mock) |
|
416 |
} |
|
417 |
|
|
418 |
api_mock = $.mockjax({ |
|
419 |
url: '/api/v1.1/servers/detail*', |
|
420 |
responseTime: 200, |
|
421 |
responseText: {'servers':{'values':data}} |
|
422 |
}); |
|
423 |
} |
|
424 |
|
|
425 |
mock_api({}); |
|
426 |
|
|
427 |
snf.api.bind("error", function() {ok(1,"error")}); |
|
428 |
snf.api.bind("abort", function() {ok(1,"abort")}); |
|
429 |
|
|
430 |
var a = snf.api.sync("read", {}, {url:"/api/v1.1/servers/detail"}); |
|
431 |
a.abort(); |
|
432 |
}) |
|
433 |
|
|
434 | 318 |
module("network vm connections") |
435 | 319 |
test("network vm connections", function() { |
436 | 320 |
|
... | ... | |
447 | 331 |
nets.add({id:"p", nid:"p", name:"n1", linked_to:[1]}); |
448 | 332 |
var n = nets.at(0); |
449 | 333 |
}) |
334 |
|
|
335 |
module("images/flavors") |
|
336 |
test("Test DELETE state image retrieval", function() { |
|
337 |
snf.storage.images.reset(); |
|
338 |
snf.storage.vms.reset(); |
|
339 |
|
|
340 |
var images = snf.storage.images; |
|
341 |
var vms = snf.storage.vms; |
|
342 |
|
|
343 |
var img = images.add({name:"image 1", id:1}).last(); |
|
344 |
var vm1 = vms.add({imageRef:1, name:"vm1"}).last(); |
|
345 |
var vm2 = vms.add({imageRef:2, name:"vm2"}).last(); |
|
346 |
|
|
347 |
equals(img, vm1.get_image()); |
|
348 |
|
|
349 |
// reset is not called on 304 |
|
350 |
$.mockjax({ |
|
351 |
url: '/api/v1.1/images/2', |
|
352 |
responseTime: 50, |
|
353 |
status: 200, |
|
354 |
responseText: {image:{name:"image 2", id:2}} |
|
355 |
}); |
|
356 |
|
|
357 |
|
|
358 |
equals(images.length, 1, "1 image exists"); |
|
359 |
vm2.get_image(); |
|
360 |
equals(images.get(2).get("name"), "image 2", "image data parsed"); |
|
361 |
equals(images.length, 2); |
|
362 |
}) |
|
363 |
|
|
364 |
test("Test DELETE state flavor retrieval", function() { |
|
365 |
snf.storage.flavors.reset(); |
|
366 |
snf.storage.vms.reset(); |
|
367 |
|
|
368 |
var flavors = snf.storage.flavors; |
|
369 |
var vms = snf.storage.vms; |
|
370 |
|
|
371 |
var flv = flavors.add({id:1, cpu:1, disk:1, ram:1024}).last(); |
|
372 |
var vm1 = vms.add({flavorRef:1, name:"vm1"}).last(); |
|
373 |
var vm2 = vms.add({flavorRef:2, name:"vm2"}).last(); |
|
374 |
|
|
375 |
equals(flv, vm1.get_flavor()); |
|
376 |
|
|
377 |
// reset is not called on 304 |
|
378 |
$.mockjax({ |
|
379 |
url: '/api/v1.1/flavors/2', |
|
380 |
responseTime: 50, |
|
381 |
status: 200, |
|
382 |
responseText: {flavor:{cpu:1, ram:2048, disk:100, id:2}} |
|
383 |
}); |
|
384 |
|
|
385 |
|
|
386 |
equals(flavors.length, 1, "1 flavor exists"); |
|
387 |
vm2.get_flavor(); |
|
388 |
equals(flavors.get(2).get("ram"), 2048, "flavor data parsed"); |
|
389 |
equals(flavors.length, 2); |
|
390 |
console.log(flavors); |
|
391 |
}) |
|
450 | 392 |
}) |
Also available in: Unified diff