Viewing File: /usr/local/cpanel/base/frontend/jupiter/site-monitor/models/site.spec.js
/*
# site-monitor/models/site.spec.js Copyright 2021 cPanel, L.L.C.
# All rights reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
*/
/* global define: false, describe: false, it: false, beforeEach: false, expect: false */
define([
"app/models/site",
"app/models/monitor",
"app/models/domain-type.enum",
],
function(Site, Monitor, DomainType) {
"use strict";
var sampleSite = {
documentRoot: 'public_html',
domain: 'muppets.com',
hasValidHTTPSAliases: false,
homedir: '/home/muppets',
isHttpsRedirecting: true,
nonHTTPS: false,
realRootDomain: 'muppets.com',
redirectsTo: undefined,
rootDomain: 'muppets.com',
type: 'main_domain',
};
describe("new Site", function() {
it("should create a new Site object if everything is valid", function() {
var site = new Site(sampleSite);
expect(site).toEqual(jasmine.objectContaining({
documentRoot: 'public_html',
domain: 'muppets.com',
hasValidHTTPSAliases: false,
homedir: '/home/muppets',
isHttpsRedirecting: true,
nonHTTPS: false,
realRootDomain: 'muppets.com',
redirectsTo: undefined,
rootDomain: 'muppets.com',
type: DomainType.MAIN,
protocol: 'https',
monitors: [],
fetchFailed: false,
}));
})
});
describe("Sites methods", function() {
var sampleSite = {
domain: 'muppets.com',
type: DomainType.MAIN,
isHttpsRedirecting: true,
};
var site;
var monitors = {
first: new Monitor({
id: '1234',
name: 'Public Site',
domain: 'muppets.com',
}),
second: new Monitor({
id: '5678',
name: 'Store',
domain: 'muppets.com',
path: 'tickets'
}),
third: new Monitor({
id: '91011',
name: 'Actors Portal',
domain: 'muppets.com',
path: 'actors',
}),
update: new Monitor({
id: '121314',
name: 'Public Site',
domain: 'muppets.com',
path: 'index2.html'
}),
};
var findByIdGenerator = function(partial) {
return function findById(monitor) {
return monitor.id === partial.id;
};
};
describe("addMonitor", function() {
beforeEach(function() {
site = new Site(sampleSite);
});
it('should add monitors that are unique', function() {
site.addMonitor(monitors.first);
site.addMonitor(monitors.second);
site.addMonitor(monitors.third);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.first),
jasmine.objectContaining(monitors.second),
jasmine.objectContaining(monitors.third),
]);
});
it('should update monitors that have the same name', function() {
site.addMonitor(monitors.first);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.first),
]);
site.addMonitor(monitors.update);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.update),
]);
});
it('should add monitors that have distinct ids when passing a different match function', function() {
site.addMonitor(monitors.first, findByIdGenerator);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.first),
]);
site.addMonitor(monitors.update, findByIdGenerator);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.first),
jasmine.objectContaining(monitors.update),
]);
});
});
describe("removeMonitor", function() {
beforeEach(function() {
site = new Site(sampleSite);
site.addMonitor(monitors.first);
site.addMonitor(monitors.second);
site.addMonitor(monitors.third);
});
it("should remove the first item by its name", function() {
expect(site.monitors.length).toEqual(3);
site.removeMonitor(monitors.first);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.second),
jasmine.objectContaining(monitors.third),
]);
});
it("should remove the middle item by its name", function() {
expect(site.monitors.length).toEqual(3);
site.removeMonitor(monitors.second);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.first),
jasmine.objectContaining(monitors.third),
]);
});
it("should remove the last item by its name", function() {
expect(site.monitors.length).toEqual(3);
site.removeMonitor(monitors.third);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.first),
jasmine.objectContaining(monitors.second),
]);
});
it("should not remove an item that it can't find", function() {
expect(site.monitors.length).toEqual(3);
site.removeMonitor({ name: "unknown" });
expect(site.monitors.length).toEqual(3);
});
it("should remove an item by its id if passed a custom lookup method.", function() {
expect(site.monitors.length).toEqual(3);
site.removeMonitor({ id: '1234' }, findByIdGenerator);
expect(site.monitors).toEqual([
jasmine.objectContaining(monitors.second),
jasmine.objectContaining(monitors.third),
]);
});
});
describe("anyEnabled", function() {
beforeEach(function() {
site = new Site(sampleSite);
});
it("should report false if no montors are present", function() {
expect(site.anyEnabled()).toEqual(false);
});
it("should report true if any monitors are present", function() {
site.addMonitor(monitors.first);
expect(site.anyEnabled()).toEqual(true);
});
});
});
});
Back to Directory
File Manager