blob: aac0ba60a21675bde664862ee67c381e238ffef6 [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001"use strict";
2/* Unit tests for Toaster's JS */
3
4/* libtoaster tests */
5
6QUnit.test("Layer alert notification", function(assert) {
7 var layer = {
8 "layerdetailurl":"/toastergui/project/1/layer/22",
9 "vcs_url":"git://example.com/example.git",
10 "detail":"[ git://example.com/example.git | master ]",
11 "vcs_reference":"master",
12 "id": 22,
13 "name":"meta-example"
14 };
15
Patrick Williamsc124f4f2015-09-15 14:41:29 -050016 var layerDepsList = [
17 {
18 "layerdetailurl":"/toastergui/project/1/layer/9",
19 "vcs_url":"git://example.com/example.git",
20 "detail":"[ git://example.com/example.git | master ]",
21 "vcs_reference":"master",
22 "id": 9,
23 "name":"meta-example-two"
24 },
25 {
26 "layerdetailurl":"/toastergui/project/1/layer/9",
27 "vcs_url":"git://example.com/example.git",
28 "detail":"[ git://example.com/example.git | master ]",
29 "vcs_reference":"master",
30 "id": 10,
31 "name":"meta-example-three"
32 },
33 ];
34
35 var msg = libtoaster.makeLayerAddRmAlertMsg(layer, layerDepsList, true);
36 var test = $("<div></div>");
37
38 test.html(msg);
39
40 assert.equal(test.children("strong").text(), "3");
41 assert.equal(test.children("a").length, 3);
42});
43
44QUnit.test("Project info", function(assert){
45 var done = assert.async();
46 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){
47 assert.ok(prjInfo.machine.name);
48 assert.ok(prjInfo.releases.length > 0);
49 assert.ok(prjInfo.layers.length > 0);
50 assert.ok(prjInfo.freqtargets);
51 assert.ok(prjInfo.release);
52 done();
53 });
54});
55
56QUnit.test("Show notification", function(assert){
57 var msg = "Testing";
58 var element = $("#change-notification-msg");
59
60 libtoaster.showChangeNotification(msg);
61
62 assert.equal(element.text(), msg);
63 assert.ok(element.is(":visible"));
64
65 $("#change-notification").hide();
66});
67
68var layer = {
Patrick Williamsf1e5d692016-03-30 15:21:19 -050069 "id": 1,
70 "name": "meta-testing",
71 "layerdetailurl": "/toastergui/project/1/layer/1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050072};
73
74QUnit.test("Add layer", function(assert){
75 var done = assert.async();
76
77 /* Wait for the modal to be added to the dom */
78 var checkModal = setInterval(function(){
79 if ($("#dependencies-modal").length > 0) {
80 $("#dependencies-modal .btn-primary").click();
81 clearInterval(checkModal);
82 }
83 }, 200);
84
Patrick Williamsf1e5d692016-03-30 15:21:19 -050085 /* Compare the number of layers before and after the add in the project */
86 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){
87 var origNumLayers = prjInfo.layers.length;
Patrick Williamsc124f4f2015-09-15 14:41:29 -050088
Patrick Williamsf1e5d692016-03-30 15:21:19 -050089 libtoaster.addRmLayer(layer, true, function(deps){
90 libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl,
91 function(prjInfo){
92 assert.ok(prjInfo.layers.length > origNumLayers,
93 "Layer not added to project");
94 done();
95 });
96 });
97 });
Patrick Williamsc124f4f2015-09-15 14:41:29 -050098});
99
100QUnit.test("Rm layer", function(assert){
101 var done = assert.async();
102
103 libtoaster.addRmLayer(layer, false, function(deps){
104 assert.equal(deps.length, 0);
105 done();
106 });
107
108});
109
110QUnit.test("Parse url params", function(assert){
111 var params = libtoaster.parseUrlParams();
112 assert.ok(params);
113});
114
115QUnit.test("Dump url params", function(assert){
116 var params = libtoaster.dumpsUrlParams();
117 assert.ok(params);
118});
119
120QUnit.test("Make typeaheads", function(assert){
121 var layersT = $("#layers");
122 var machinesT = $("#machines");
123 var projectsT = $("#projects");
124 var recipesT = $("#recipes");
125
126 libtoaster.makeTypeahead(layersT,
127 libtoaster.ctx.layersTypeAheadUrl, {}, function(){});
128
129 libtoaster.makeTypeahead(machinesT,
130 libtoaster.ctx.machinesTypeAheadUrl, {}, function(){});
131
132 libtoaster.makeTypeahead(projectsT,
133 libtoaster.ctx.projectsTypeAheadUrl, {}, function(){});
134
135 libtoaster.makeTypeahead(recipesT,
136 libtoaster.ctx.recipesTypeAheadUrl, {}, function(){});
137
138 assert.ok(recipesT.data('typeahead'));
139 assert.ok(layersT.data('typeahead'));
140 assert.ok(projectsT.data('typeahead'));
141 assert.ok(recipesT.data('typeahead'));
142});
143
144
145
146/* Page init functions */
147
148QUnit.test("Import layer page init", function(assert){
149 assert.throws(importLayerPageInit());
150});
151
152QUnit.test("Project page init", function(assert){
153 assert.throws(projectPageInit());
154});
155
156QUnit.test("Layer details page init", function(assert){
157 assert.throws(layerDetailsPageInit());
158});
159
160QUnit.test("Layer btns init", function(assert){
Patrick Williamsf1e5d692016-03-30 15:21:19 -0500161 assert.throws(layerBtnsInit());
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500162});
163
164QUnit.test("Table init", function(assert){
Patrick Williamsf1e5d692016-03-30 15:21:19 -0500165 assert.throws(tableInit({ url : ctx.tableUrl }));
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500166});
167
168$(document).ajaxError(function(event, jqxhr, settings, errMsg){
169 if (errMsg === 'abort')
170 return;
171
172 QUnit.test("Ajax error", function(assert){
173 assert.notOk(jqxhr.responseText);
174 });
175});