fix: ensure truncated result stays within maxLength limit
This commit is contained in:
@@ -21,9 +21,9 @@ describe("truncateDescription", () => {
|
|||||||
const result = truncateDescription(description)
|
const result = truncateDescription(description)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result.length).toBe(123) // 120 + "..."
|
expect(result.length).toBe(120) // 117 chars + "..."
|
||||||
expect(result).toEndWith("...")
|
expect(result).toEndWith("...")
|
||||||
expect(result).toBe(description.slice(0, 120) + "...")
|
expect(result).toBe(description.slice(0, 117) + "...")
|
||||||
})
|
})
|
||||||
|
|
||||||
it("respects custom max length parameter", () => {
|
it("respects custom max length parameter", () => {
|
||||||
@@ -35,9 +35,9 @@ describe("truncateDescription", () => {
|
|||||||
const result = truncateDescription(description, maxLength)
|
const result = truncateDescription(description, maxLength)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result.length).toBe(53) // 50 + "..."
|
expect(result.length).toBe(50) // 47 chars + "..."
|
||||||
expect(result).toEndWith("...")
|
expect(result).toEndWith("...")
|
||||||
expect(result).toBe(description.slice(0, 50) + "...")
|
expect(result).toBe(description.slice(0, 47) + "...")
|
||||||
})
|
})
|
||||||
|
|
||||||
it("handles empty string", () => {
|
it("handles empty string", () => {
|
||||||
@@ -71,7 +71,7 @@ describe("truncateDescription", () => {
|
|||||||
const result = truncateDescription(description)
|
const result = truncateDescription(description)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result.length).toBe(123) // 120 + "..."
|
expect(result.length).toBe(120)
|
||||||
expect(result).toContain("First sentence. Second sentence.")
|
expect(result).toContain("First sentence. Second sentence.")
|
||||||
expect(result).toEndWith("...")
|
expect(result).toEndWith("...")
|
||||||
})
|
})
|
||||||
@@ -84,7 +84,7 @@ describe("truncateDescription", () => {
|
|||||||
const result = truncateDescription(description)
|
const result = truncateDescription(description)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result.length).toBe(123) // 120 + "..."
|
expect(result.length).toBe(120)
|
||||||
expect(result).toStartWith("Check out https://example.com")
|
expect(result).toStartWith("Check out https://example.com")
|
||||||
expect(result).toEndWith("...")
|
expect(result).toEndWith("...")
|
||||||
})
|
})
|
||||||
@@ -97,7 +97,7 @@ describe("truncateDescription", () => {
|
|||||||
const result = truncateDescription(description)
|
const result = truncateDescription(description)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result.length).toBe(123) // 120 + "..."
|
expect(result.length).toBe(120)
|
||||||
expect(result).toStartWith("Version 1.2.3")
|
expect(result).toStartWith("Version 1.2.3")
|
||||||
expect(result).toEndWith("...")
|
expect(result).toEndWith("...")
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
/**
|
|
||||||
* Truncates a description string to a maximum character length.
|
|
||||||
* If truncated, appends "..." to indicate continuation.
|
|
||||||
*
|
|
||||||
* @param description - The description string to truncate
|
|
||||||
* @param maxLength - Maximum character length (default: 120)
|
|
||||||
* @returns Truncated description with "..." appended if it was truncated
|
|
||||||
*/
|
|
||||||
export function truncateDescription(description: string, maxLength: number = 120): string {
|
export function truncateDescription(description: string, maxLength: number = 120): string {
|
||||||
if (!description) {
|
if (!description) {
|
||||||
return description
|
return description
|
||||||
@@ -15,5 +7,5 @@ export function truncateDescription(description: string, maxLength: number = 120
|
|||||||
return description
|
return description
|
||||||
}
|
}
|
||||||
|
|
||||||
return description.slice(0, maxLength) + "..."
|
return description.slice(0, maxLength - 3) + "..."
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user