mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2026-01-01 07:09:43 -06:00
131 lines
3.0 KiB
JavaScript
Executable File
131 lines
3.0 KiB
JavaScript
Executable File
import sinon from "sinon";
|
|
import {
|
|
createStatusPage,
|
|
getStatusPageByUrl,
|
|
} from "../../controllers/statusPageController.js";
|
|
|
|
describe("statusPageController", function () {
|
|
let req, res, next;
|
|
|
|
beforeEach(function () {
|
|
req = {
|
|
params: {},
|
|
body: {},
|
|
db: {
|
|
createStatusPage: sinon.stub(),
|
|
getStatusPageByUrl: sinon.stub(),
|
|
},
|
|
};
|
|
res = {
|
|
status: sinon.stub().returnsThis(),
|
|
json: sinon.stub(),
|
|
};
|
|
next = sinon.stub();
|
|
});
|
|
|
|
afterEach(function () {
|
|
sinon.restore();
|
|
});
|
|
|
|
describe("createStatusPage", function () {
|
|
beforeEach(function () {
|
|
req.body = {
|
|
companyName: "Test Company",
|
|
url: "123456",
|
|
timezone: "America/Toronto",
|
|
color: "#000000",
|
|
theme: "light",
|
|
monitors: ["67309ca673788e808884c8ac", "67309ca673788e808884c8ac"],
|
|
};
|
|
});
|
|
|
|
afterEach(function () {
|
|
sinon.restore();
|
|
});
|
|
|
|
it("should handle a validation error", async function () {
|
|
req.body = {
|
|
// Invalid data that will trigger validation error
|
|
companyName: "",
|
|
url: "",
|
|
timezone: "",
|
|
color: "invalid",
|
|
theme: "invalid",
|
|
monitors: ["invalid-id"],
|
|
};
|
|
try {
|
|
await createStatusPage(req, res, next);
|
|
} catch (error) {
|
|
expect(error).to.be.an.instanceOf(Error);
|
|
expect(error.message).to.equal("Validation error");
|
|
}
|
|
});
|
|
|
|
it("should handle a db error", async function () {
|
|
const err = new Error("DB error");
|
|
req.db.createStatusPage.throws(err);
|
|
|
|
try {
|
|
await createStatusPage(req, res, next);
|
|
} catch (error) {
|
|
expect(error).to.deep.equal(err);
|
|
}
|
|
});
|
|
|
|
it("should insert a properly formatted status page", async function () {
|
|
const result = await createStatusPage(req, res, next);
|
|
expect(res.status.firstCall.args[0]).to.equal(200);
|
|
expect(res.json.firstCall.args[0].success).to.be.true;
|
|
});
|
|
});
|
|
|
|
describe("getStatusPageByUrl", function () {
|
|
beforeEach(function () {
|
|
req.params = {
|
|
url: "123456",
|
|
};
|
|
});
|
|
|
|
afterEach(function () {
|
|
sinon.restore();
|
|
});
|
|
|
|
it("should handle a validation error", async function () {
|
|
req.params = {
|
|
url: "",
|
|
};
|
|
|
|
try {
|
|
await getStatusPageByUrl(req, res, next);
|
|
} catch (error) {
|
|
expect(error).to.be.an.instanceOf(Error);
|
|
expect(error.message).to.equal("Validation error");
|
|
}
|
|
});
|
|
|
|
it("should handle a DB error", async function () {
|
|
const err = new Error("DB error");
|
|
req.db.getStatusPageByUrl.throws(err);
|
|
|
|
try {
|
|
await getStatusPageByUrl(req, res, next);
|
|
} catch (error) {
|
|
expect(error).to.deep.equal(err);
|
|
}
|
|
});
|
|
|
|
it("should return a status page", async function () {
|
|
const statusPage = {
|
|
_id: "123456",
|
|
companyName: "Test Company",
|
|
url: "123456",
|
|
};
|
|
req.db.getStatusPageByUrl.resolves(statusPage);
|
|
const result = await getStatusPageByUrl(req, res, next);
|
|
expect(res.status.firstCall.args[0]).to.equal(200);
|
|
expect(res.json.firstCall.args[0].success).to.be.true;
|
|
expect(res.json.firstCall.args[0].data).to.deep.equal(statusPage);
|
|
});
|
|
});
|
|
});
|