@codecovevienna/gittt-cli
Version:
Tracking time with CLI into a git repository
131 lines (122 loc) • 3.83 kB
text/typescript
import proxyquire from "proxyquire";
import { IProject, IProjectMeta } from "../../interfaces";
import { RECORD_TYPES } from "../../types";
import moment from "moment";
import sinon from "sinon";
import { assert, expect } from "chai";
import { utils } from 'xlsx';
describe("ExportHelper", function () {
before(function () {
proxyquire.noCallThru();
});
it("should export projects", async function () {
const expectedFilePath = `${process.cwd()}/gittt-export.ods`
const writeFileStub = sinon.stub().callsFake((expectedWorksheet: any, filePath: string) => {
expect(filePath).equals(expectedFilePath);
assert.isNotEmpty(expectedWorksheet);
assert.isNotEmpty(expectedWorksheet["SheetNames"]);
expect(expectedWorksheet["SheetNames"]).deep.equal(["TestProject_1", "TestProject_2"]);
});
const proxy: any = proxyquire("../../helper/export", {
xlsx: {
writeFile: writeFileStub,
utils,
}
});
const mockedProjects: IProject[] = [
{
meta: {
host: "github.com",
port: 22,
} as IProjectMeta,
name: "TestProject_1",
records: [
{
amount: 1337,
end: moment("2013-02-08 16:00:00.000").unix() * 1000,
message: "Test message",
type: RECORD_TYPES.Time,
},
{
amount: 69,
end: moment("2013-02-09 18:00:00.000").unix() * 1000,
message: "Some other test message",
type: RECORD_TYPES.Time,
},
],
} as IProject,
{
meta: {
host: "github.com",
port: 22,
} as IProjectMeta,
name: "TestProject_2",
records: [
{
amount: 12,
end: moment("2013-02-10 13:00:00.000").unix() * 1000,
message: "git init awesome project",
type: RECORD_TYPES.Time,
},
],
} as IProject
]
proxy.ExportHelper.export(undefined, undefined, undefined, mockedProjects);
assert.isTrue(writeFileStub.called);
});
it("should export projects with parameters", async function () {
const expectedFilePath = `/tmp/test.xlsx`
const writeFileStub = sinon.stub().callsFake((expectedWorksheet: any, filePath: string) => {
expect(filePath).equals(expectedFilePath);
assert.isNotEmpty(expectedWorksheet);
assert.isNotEmpty(expectedWorksheet["SheetNames"]);
expect(expectedWorksheet["SheetNames"]).deep.equal(["TestProject_1", "TestProject_2"]);
});
const proxy: any = proxyquire("../../helper/export", {
xlsx: {
writeFile: writeFileStub,
utils,
}
});
const mockedProjects: IProject[] = [
{
meta: {
host: "github.com",
port: 22,
} as IProjectMeta,
name: "TestProject_1",
records: [
{
amount: 1337,
end: moment("2013-02-08 16:00:00.000").unix() * 1000,
message: "Test message",
type: RECORD_TYPES.Time,
},
{
amount: 69,
end: moment("2013-02-09 18:00:00.000").unix() * 1000,
message: "Some other test message",
type: RECORD_TYPES.Time,
},
],
} as IProject,
{
meta: {
host: "github.com",
port: 22,
} as IProjectMeta,
name: "TestProject_2",
records: [
{
amount: 12,
end: moment("2013-02-10 13:00:00.000").unix() * 1000,
message: "git init awesome project",
type: RECORD_TYPES.Time,
},
],
} as IProject
]
proxy.ExportHelper.export("/tmp", "test", "xlsx", mockedProjects);
assert.isTrue(writeFileStub.called);
});
});