istanbul-slack-notify
Version:
Sends nyc (aka: istanbul) coverage summary and git build details to Slack using a pass/fail threshold for project coverage.
64 lines (56 loc) • 2.22 kB
JavaScript
import {expect, test} from "@jest/globals";
import NycReport from "../src/nyc-report";
import path from "path";
import {v7 as uuid} from "uuid";
import fs from "fs";
import os from "os";
const settings = {
coveragePath: "test/data/sample-coverage",
threshold: 20.52,
};
beforeEach(() => {
settings.coveragePath = "test/data/sample-coverage";
});
test("constructor", () => {
const report = new NycReport();
expect(report).toBeDefined();
});
test("generateSummary - coverage directory does not exist", () => {
const invalidDirectory = path.join(os.tmpdir(), `nyc-test-directory-${uuid()}`);
const report = new NycReport({coveragePath: invalidDirectory});
return expect(report.generateSummary()).rejects.toThrowError("Coverage directory does not exist (settings.coveragePath)");
});
test("generateSummary - no coverage file (empty coverage directory)", () => {
const emptyDirectory = fs.mkdtempSync(path.join(os.tmpdir(), "nyc-test"));
const report = new NycReport({coveragePath: emptyDirectory});
return expect(report.generateSummary()).resolves.toMatchObject({
branches: {covered: 0, pct: "Unknown", skipped: 0, total: 0},
branchesTrue: {covered: 0, pct: "Unknown", skipped: 0, total: 0},
functions: {covered: 0, pct: "Unknown", skipped: 0, total: 0},
lines: {covered: 0, pct: "Unknown", skipped: 0, total: 0},
statements: {covered: 0, pct: "Unknown", skipped: 0, total: 0},
});
});
test("generateSummary", () => {
const report = new NycReport(settings);
expect.assertions(1);
return expect(report.generateSummary()).resolves.toMatchObject({
branches: {covered: 18, pct: 38.29, skipped: 0, total: 47},
branchesTrue: {covered: 0, pct: "Unknown", skipped: 0, total: 0},
functions: {covered: 6, pct: 24, skipped: 0, total: 25},
lines: {covered: 29, pct: 32.22, skipped: 0, total: 90},
statements: {covered: 29, pct: 32.22, skipped: 0, total: 90},
});
});
test("processSummary", () => {
const report = new NycReport(settings);
return expect(report.processSummary()).resolves.toMatchObject({
statements: 32.22,
branches: 38.29,
lines: 32.22,
functions: 24,
project: 31.68,
threshold: 20.52,
success: true,
});
});