sendou.ink/app/utils/string.test.ts
Kalle 986355050d
Some checks failed
Tests and checks on push / run-checks-and-tests (push) Has been cancelled
Updates translation progress / update-translation-progress-issue (push) Has been cancelled
Better meta tags (#2083)
* Initial

* Work

* lint

* Lint

* Remove twitter

* Progress

* Progress

* Progress

* Progress

* Progress

* Progress

* Fix
2025-02-07 16:01:42 +02:00

47 lines
1.6 KiB
TypeScript

import { describe, expect, test } from "vitest";
import { pathnameFromPotentialURL, truncateBySentence } from "./strings";
describe("pathnameFromPotentialURL()", () => {
test("Resolves path name from valid URL", () => {
expect(pathnameFromPotentialURL("https://bsky.app/sendouc")).toBe(
"sendouc",
);
});
test("Returns string as is if not URL", () => {
expect(pathnameFromPotentialURL("sendouc")).toBe("sendouc");
});
});
describe("truncateBySentence()", () => {
test("Truncates text by sentence within max length", () => {
const text = "This is the first sentence. This is the second sentence.";
expect(truncateBySentence(text, 30)).toBe("This is the first sentence.");
});
test("Returns original text if no sentences fit within max length", () => {
const text = "This is a very long sentence that exceeds the max length.";
expect(truncateBySentence(text, 10)).toBe("This is a");
});
test("Returns original text if it is shorter than max length", () => {
const text = "Short text.";
expect(truncateBySentence(text, 50)).toBe("Short text.");
});
test("Handles no senteces", () => {
const text = "One two three four five six seven eight nine ten";
expect(truncateBySentence(text, 10)).toBe("One two th");
});
test("Truncates text by sentence with newline characters", () => {
const text = "This is the first sentence\nThis is the second sentence";
expect(truncateBySentence(text, 30)).toBe("This is the first sentence");
});
test("Handles text with multiple newline characters", () => {
const text = "First line\nSecond line\nThird line";
expect(truncateBySentence(text, 20)).toBe("First line");
});
});