Count chars, not bytes for max title length (fixes #4366) (#4367)

* Count chars, not bytes for max title length (fixes #4366)

* fix api test
post-view-secondary-sort
Nutomic 2024-01-15 15:33:39 +01:00 committed by GitHub
parent 9240a653c0
commit 1be7dbde33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 4 deletions

View File

@ -76,7 +76,12 @@ test("Create a post", async () => {
throw "Missing beta community";
}
let postRes = await createPost(alpha, betaCommunity.community.id);
let postRes = await createPost(
alpha,
betaCommunity.community.id,
"https://example.com/",
"แƒแƒจแƒจ แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ˜แƒ แƒแƒœแƒก แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒแƒœแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒแƒก แƒ“แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒแƒ•แƒ—แƒแƒ‘แƒ˜แƒก แƒขแƒแƒœแƒ™แƒ”แƒ แƒ˜",
);
expect(postRes.post_view.post).toBeDefined();
expect(postRes.post_view.community.local).toBe(false);
expect(postRes.post_view.creator.local).toBe(true);

View File

@ -202,10 +202,10 @@ export async function setupLogins() {
export async function createPost(
api: LemmyHttp,
community_id: number,
// use example.com for consistent title and embed description
url: string = "https://example.com/",
// use example.com for consistent title and embed description
name: string = randomString(5),
): Promise<PostResponse> {
let name = randomString(5);
let body = randomString(10);
let form: CreatePost = {
name,

View File

@ -147,7 +147,7 @@ pub fn is_valid_matrix_id(matrix_id: &str) -> LemmyResult<()> {
}
pub fn is_valid_post_title(title: &str) -> LemmyResult<()> {
let length = title.trim().len();
let length = title.trim().chars().count();
let check = (3..=200).contains(&length) && !has_newline(title);
if !check {
Err(LemmyErrorType::InvalidPostTitle.into())
@ -380,6 +380,10 @@ mod tests {
#[test]
fn test_valid_post_title() {
assert!(is_valid_post_title("Post Title").is_ok());
assert!(is_valid_post_title(
"แƒแƒจแƒจ แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ˜แƒ แƒแƒœแƒก แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒแƒœแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒแƒก แƒ“แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒแƒ•แƒ—แƒแƒ‘แƒ˜แƒก แƒขแƒแƒœแƒ™แƒ”แƒ แƒ˜"
)
.is_ok());
assert!(is_valid_post_title(" POST TITLE ๐Ÿ˜ƒ๐Ÿ˜ƒ๐Ÿ˜ƒ๐Ÿ˜ƒ๐Ÿ˜ƒ").is_ok());
assert!(is_valid_post_title("\n \n \n \n ").is_err()); // tabs/spaces/newlines
}