/
maintenance_mode_widget_spec.tsx
79 lines (66 loc) · 2.78 KB
/
maintenance_mode_widget_spec.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
* Copyright 2018 ThoughtWorks, Inc.
*
* 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.
*/
import {docsUrl} from "gen/gocd_version";
import * as m from "mithril";
import {MaintenanceModeWidget} from "views/pages/maintenance_mode/maintenance_mode_widget";
import {TestData} from "views/pages/maintenance_mode/spec/test_data";
describe("Maintenance Mode Widget", () => {
let $root: any, root: any;
const toggleMaintenanceMode = jasmine.createSpy("onToggle");
const onCancelStage = jasmine.createSpy("onCancelStage");
const TimeFormatter = require("helpers/time_formatter");
beforeEach(() => {
// @ts-ignore
[$root, root] = window.createDomElementForTest();
mount();
});
afterEach(unmount);
// @ts-ignore
afterEach(window.destroyDomElementForTest);
it("should provide the description of the maintenance mode feature", () => {
const expectedDescription = "When put into maintenance mode, it is safe to restart or upgrade the GoCD server without having any running jobs reschedule when the server is back up.";
expect(find("maintenance-mode-description")).toContainText(expectedDescription);
});
it("should add a link to the maintenance mode documentation", () => {
const expectedLink = docsUrl("/advanced_usage/maintenance_mode.html");
const expectedText = "Learn more..";
expect($root.find("a")[0].href).toBe(expectedLink);
expect($root.find("a")[0].innerText).toBe(expectedText);
});
it("should provide the maintenance mode updated information", () => {
const updatedOn = TimeFormatter.format(TestData.UPDATED_ON);
const expectedUpdatedByInfo = `${TestData.info().metdata.updatedBy} changed the maintenance mode state on ${updatedOn}.`;
expect(find("maintenance-mode-updated-by-info")).toContainText(expectedUpdatedByInfo);
});
//private
function mount() {
m.mount(root, {
view() {
return (<MaintenanceModeWidget toggleMaintenanceMode={toggleMaintenanceMode}
onCancelStage={onCancelStage}
maintenanceModeInfo={TestData.info()}/>);
}
});
m.redraw();
}
function unmount() {
m.mount(root, null);
m.redraw();
}
function find(id: string) {
return $root.find(`[data-test-id='${id}']`);
}
});