mirror of
https://github.com/hay-kot/homebox.git
synced 2025-05-28 08:02:31 +00:00
feat: item-attachments CRUD (#22)
* change /content/ -> /homebox/ * add cache to code generators * update env variables to set data storage * update env variables * set env variables in prod container * implement attachment post route (WIP) * get attachment endpoint * attachment download * implement string utilities lib * implement generic drop zone * use explicit truncate * remove clean dir * drop strings composable for lib * update item types and add attachments * add attachment API * implement service context * consolidate API code * implement editing attachments * implement upload limit configuration * improve error handling * add docs for max upload size * fix test cases
This commit is contained in:
parent
852d312ba7
commit
31b34241e0
165 changed files with 2509 additions and 664 deletions
56
frontend/lib/strings/index.test.ts
Normal file
56
frontend/lib/strings/index.test.ts
Normal file
|
@ -0,0 +1,56 @@
|
|||
import { describe, it, expect } from "vitest";
|
||||
import { titlecase, capitalize, truncate } from ".";
|
||||
|
||||
describe("title case tests", () => {
|
||||
it("should return the same string if it's already title case", () => {
|
||||
expect(titlecase("Hello World")).toBe("Hello World");
|
||||
});
|
||||
|
||||
it("should title case a lower case word", () => {
|
||||
expect(titlecase("hello")).toBe("Hello");
|
||||
});
|
||||
|
||||
it("should title case a sentence", () => {
|
||||
expect(titlecase("hello world")).toBe("Hello World");
|
||||
});
|
||||
|
||||
it("should title case a sentence with multiple words", () => {
|
||||
expect(titlecase("hello world this is a test")).toBe("Hello World This Is A Test");
|
||||
});
|
||||
});
|
||||
|
||||
describe("capitilize tests", () => {
|
||||
it("should return the same string if it's already capitalized", () => {
|
||||
expect(capitalize("Hello")).toBe("Hello");
|
||||
});
|
||||
|
||||
it("should capitalize a lower case word", () => {
|
||||
expect(capitalize("hello")).toBe("Hello");
|
||||
});
|
||||
|
||||
it("should capitalize a sentence", () => {
|
||||
expect(capitalize("hello world")).toBe("Hello world");
|
||||
});
|
||||
|
||||
it("should capitalize a sentence with multiple words", () => {
|
||||
expect(capitalize("hello world this is a test")).toBe("Hello world this is a test");
|
||||
});
|
||||
});
|
||||
|
||||
describe("truncase tests", () => {
|
||||
it("should return the same string if it's already truncated", () => {
|
||||
expect(truncate("Hello", 5)).toBe("Hello");
|
||||
});
|
||||
|
||||
it("should truncate a lower case word", () => {
|
||||
expect(truncate("hello", 3)).toBe("hel...");
|
||||
});
|
||||
|
||||
it("should truncate a sentence", () => {
|
||||
expect(truncate("hello world", 5)).toBe("hello...");
|
||||
});
|
||||
|
||||
it("should truncate a sentence with multiple words", () => {
|
||||
expect(truncate("hello world this is a test", 10)).toBe("hello worl...");
|
||||
});
|
||||
});
|
14
frontend/lib/strings/index.ts
Normal file
14
frontend/lib/strings/index.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
export function titlecase(str: string) {
|
||||
return str
|
||||
.split(" ")
|
||||
.map(word => word[0].toUpperCase() + word.slice(1))
|
||||
.join(" ");
|
||||
}
|
||||
|
||||
export function capitalize(str: string) {
|
||||
return str[0].toUpperCase() + str.slice(1);
|
||||
}
|
||||
|
||||
export function truncate(str: string, length: number) {
|
||||
return str.length > length ? str.substring(0, length) + "..." : str;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue