Viewing File: /usr/local/cpanel/base/frontend/jupiter/site-monitor/services/sitesCache.spec.js

/*
 * site-monitor/services/sitesCache.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, PAGE */

define([
    "app/models/site",
    "angular",
    "cjt/core",
    "cjt/util/test",
    "ngMocks",
    "app/services/sitesCache",
  ],
    function(Site) {
        "use strict";
        let service;

        beforeEach(function() {
            module("cpanel.siteMonitor.sitesCacheService");

            inject(function($injector) {
                service = $injector.get("sitesCache");
            });
        });

        describe("add", function() {
            it("should add a single site to the cache", function() {
                let site_to_add = {domain: "a.tld", docroot: "public_html/a", type: "main_domain"};
                let returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                let site_from_cache = service.get()[0];
                expect(site_from_cache).toEqual(new Site(site_to_add));
            });

            it("should not add a site to the cache if the site already exists", function() {
                let site_to_add = {domain: "a.tld", docroot: "public_html/a", type: "main_domain"};

                let returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                expect(service.get().length).toEqual(1);
            });
        });

        describe("clear", function() {
            it("should remove all sites from the cache", function() {
                let site_to_add = {domain: "a.tld", docroot: "public_html/a", type: "main_domain"};
                let returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                site_to_add = {domain: "b.xyz", docroot: "public_html/b", type: "main_domain"};
                returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                service.clear();
                let got_sites_list = service.get();

                expect(got_sites_list.length).toEqual(0);
            });
        });

        describe("remove", function() {
            it("should return true and remove the correct site from the cache", function() {
                let site_to_add = {domain: "a.tld", docroot: "public_html/a", type: "main_domain"};
                let site_to_check = site_to_add;
                let returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                site_to_add = {domain: "b.xyz", docroot: "public_html/b", type: "main_domain"};
                returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                expect(service.remove("b.xyz")).toBe(true);
                expect(service.get().length).toBe(1);

                let remaining_site = service.get()[0];
                expect(remaining_site).toEqual(new Site(site_to_check));
            });

            it("should return false and not remove sites if the site does not exist", function() {
                let site_to_add = {domain: "a.tld", docroot: "public_html/a", type: "main_domain"};
                let returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                site_to_add = {domain: "b.xyz", docroot: "public_html/b", type: "main_domain"};
                returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                expect(service.remove("invalid")).toBe(false);
                expect(service.get().length).toBe(2);
            });

            it("should return false when the cache is empty", function() {
                expect(service.remove("a.tld")).toBe(false);
                expect(service.get().length).toBe(0);
            });
        });

        describe("get", function() {
            it("should return a list of Site objects", function() {
                let site_a = {domain: "a.tld", docroot: "public_html/a", type: "main_domain"};
                let returned_site = service.add(site_a);
                site_a = new Site(site_a);
                expect(returned_site).toEqual(site_a);

                let site_b = {domain: "b.xyz", docroot: "public_html/b", type: "main_domain"};
                returned_site = service.add(site_b);
                site_b = new Site(site_b);
                expect(returned_site).toEqual(site_b);

                expect(service.get()).toEqual([site_a, site_b]);
            });

            it("should return an empty list if the cache is empty", function() {
                expect(service.get()).toEqual([]);
            });
        });

        describe("findByDomainName", function() {
            it("should return the correct Site object", function() {
                let site_to_add = {domain: "a.tld", docroot: "public_html/a", type: "main_domain"};
                let returned_site = service.add(site_to_add);
                expect(returned_site).toEqual(new Site(site_to_add));

                let site_to_check = {domain: "b.xyz", docroot: "public_html/b", type: "main_domain"};
                returned_site = service.add(site_to_check);
                site_to_check = new Site(site_to_check);
                expect(returned_site).toEqual(site_to_check);

                expect(service.findByDomainName("b.xyz")).toEqual(site_to_check);
                expect(service.findByDomainName("invalid")).not.toBeDefined();
            });
        });
});

Back to Directory File Manager