# test.deploy/core/converters/text.converter.test.ts

> 50 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-deploy-core-converters-text-converter-test-ts
Source text: https://banes-lab.com/source/testing/test.deploy/core/converters/text.converter.test.ts.txt

Listed in [test.deploy/core/converters](https://banes-lab.com/api/source/testing/test.deploy/core/converters.md), after [test.deploy/core/converters/search.converter.test.ts](https://banes-lab.com/source/testing/test.deploy/core/converters/search.converter.test.ts.md).

## Contained in

- [test.deploy/core/converters](https://banes-lab.com/anatomy/testing/folder-testing-test-deploy-core-converters.md)

## Source

```typescript
import {
    BYTES_PER_GB,
    BYTES_PER_MB,
    ELLIPSIS,
    STAMP_SEPARATOR,
} from "@banes-lab/deploy/configuration/constants/deployment.constants.ts";
import { GIGABYTE, MEGABYTE } from "@banes-lab/deploy/configuration/strings/notification.strings.ts";
import { describe, expect, it } from "vitest";
import {
    formatBytes,
    formatClock,
    formatDuration,
    stamp,
    truncate,
} from "@banes-lab/deploy/core/converters/text.converter.ts";

describe("formatBytes", () => {
    it("reports megabytes below the gigabyte threshold", () => {
        expect(formatBytes(BYTES_PER_MB * 3)).toBe(`3.00${MEGABYTE}`);
    });

    it("reports gigabytes at and above the threshold", () => {
        expect(formatBytes(BYTES_PER_GB * 2)).toBe(`2.00${GIGABYTE}`);
    });
});

describe("formatDuration", () => {
    it("renders milliseconds as seconds with two decimals", () => {
        expect(formatDuration(1500)).toBe("1.50");
    });
});

describe("formatClock", () => {
    it("renders seconds as hours, minutes and seconds, and never below zero", () => {
        expect(formatClock(3725)).toBe("01:02:05");
        expect(formatClock(-4)).toBe("00:00:00");
    });
});

describe("stamp", () => {
    it("replaces every iso punctuation mark with the stamp separator", () => {
        const value = stamp();
        expect(value).not.toContain(":");
        expect(value).not.toContain("T");
        expect(value).toContain(STAMP_SEPARATOR);
    });
});

describe("truncate", () => {
    it("leaves short text untouched", () => {
        expect(truncate("short", 10, ELLIPSIS)).toBe("short");
    });

    it("cuts long text and appends the marker", () => {
        expect(truncate("a long sentence", 6, ELLIPSIS)).toBe(`a long${ELLIPSIS}`);
    });
});
```
