CalUserTypeParam.spec.ts 2.52 KB
Newer Older
Mark Stenglein's avatar
Mark Stenglein committed
1 2
/*
 * lib-ical
Mark Stenglein's avatar
Mark Stenglein committed
3
 * Copyright (C) 2017 Mark Stenglein
Mark Stenglein's avatar
Mark Stenglein committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
18 19 20 21 22 23 24 25 26 27
import CalUserTypeParam from "../src/CalUserTypeParam";
import { expect } from "chai";
import "mocha";

describe("CalUserTypeParam", () => {
    it("should exist", () => {
        expect(CalUserTypeParam).to.exist;
    });

    describe("constructor()", () => {
Mark Stenglein's avatar
Mark Stenglein committed
28 29 30 31
        it("Generates a value", () => {
            const param: CalUserTypeParam = new CalUserTypeParam("");
            expect(param).to.exist;
        });
32

Mark Stenglein's avatar
Mark Stenglein committed
33 34 35 36 37 38 39 40 41
        it("Generates a default value correctly", () => {
            const param: CalUserTypeParam = new CalUserTypeParam("");
            expect(param.calUserType).to.be.equal("INDIVIDUAL");
        });

        it("Sets non-default value correctly", () => {
            const param: CalUserTypeParam = new CalUserTypeParam("ROOM");
            expect(param.calUserType).to.be.equal("ROOM");
        });
42

Mark Stenglein's avatar
Mark Stenglein committed
43 44 45 46 47
        it("Fails on incorrect input type", () => {
            expect(() => {
                const param: CalUserTypeParam = new CalUserTypeParam("INVALID;NAME");
            }).to.throw("Cal User Type must either be known or validXName/Iana Token");
        });
48 49 50

    });

Mark Stenglein's avatar
Mark Stenglein committed
51 52 53 54
    describe("GET/SET Methods", () => {
        it("Allows for changes and returns correct values", () => {
            const param: CalUserTypeParam = new CalUserTypeParam("INDIVIDUAL");
            const res1: string = param.calUserType;
55

Mark Stenglein's avatar
Mark Stenglein committed
56 57 58 59 60 61
            param.calUserType = "GROUP";
            const res2: string = param.calUserType;

            expect(res1).to.be.equal("INDIVIDUAL");
            expect(res2).to.be.equal("GROUP");
        });
62 63 64
    });

    describe("generate()", () => {
Mark Stenglein's avatar
Mark Stenglein committed
65 66 67 68 69
        it("Generates the right value", () => {
            const param: CalUserTypeParam = new CalUserTypeParam("GROUP");
            const expected: string = "CUTYPE=GROUP";
            expect(param.generate()).to.equal(expected);
        });
70 71 72
    });

});