From 50ce7961d1e905fc770385babe0ba0ae435038a0 Mon Sep 17 00:00:00 2001 From: Joseph Silva Date: Fri, 27 Sep 2024 05:51:10 -0700 Subject: [PATCH] Apply scheduled post limit to future posts instead of past posts, and verify this in test (#5054) * test scheduled_post_count * fix syntax error * fix formatting * fix argument order * fix user_scheduled_post_count function --- crates/db_schema/src/impls/post.rs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/crates/db_schema/src/impls/post.rs b/crates/db_schema/src/impls/post.rs index 075f72d23..aa5568b0e 100644 --- a/crates/db_schema/src/impls/post.rs +++ b/crates/db_schema/src/impls/post.rs @@ -258,9 +258,9 @@ impl Post { post::table .inner_join(person::table) .inner_join(community::table) - // find all posts which have scheduled_publish_time that is in the past + // find all posts which have scheduled_publish_time that is in the future .filter(post::scheduled_publish_time.is_not_null()) - .filter(coalesce(post::scheduled_publish_time, now()).lt(now())) + .filter(coalesce(post::scheduled_publish_time, now()).gt(now())) // make sure the post and community are still around .filter(not(post::deleted.or(post::removed))) .filter(not(community::removed.or(community::deleted))) @@ -414,6 +414,7 @@ mod tests { traits::{Crud, Likeable, Saveable}, utils::build_db_pool_for_tests, }; + use chrono::DateTime; use pretty_assertions::assert_eq; use serial_test::serial; use std::collections::HashSet; @@ -456,6 +457,12 @@ mod tests { ); let inserted_post2 = Post::create(pool, &new_post2).await.unwrap(); + let new_scheduled_post = PostInsertForm { + scheduled_publish_time: Some(DateTime::from_timestamp_nanos(i64::MAX)), + ..PostInsertForm::new("beans".into(), inserted_person.id, inserted_community.id) + }; + let inserted_scheduled_post = Post::create(pool, &new_scheduled_post).await.unwrap(); + let expected_post = Post { id: inserted_post.id, name: "A test post".into(), @@ -535,6 +542,12 @@ mod tests { .await .unwrap(); + // Scheduled post count + let scheduled_post_count = Post::user_scheduled_post_count(inserted_person.id, pool) + .await + .unwrap(); + assert_eq!(1, scheduled_post_count); + let like_removed = PostLike::remove(pool, inserted_person.id, inserted_post.id) .await .unwrap(); @@ -551,8 +564,11 @@ mod tests { assert_eq!(2, read_removed); let num_deleted = Post::delete(pool, inserted_post.id).await.unwrap() - + Post::delete(pool, inserted_post2.id).await.unwrap(); - assert_eq!(2, num_deleted); + + Post::delete(pool, inserted_post2.id).await.unwrap() + + Post::delete(pool, inserted_scheduled_post.id) + .await + .unwrap(); + assert_eq!(3, num_deleted); Community::delete(pool, inserted_community.id) .await .unwrap();