diff --git a/home-mixer/filters/previously_seen_posts_backup_filter.rs b/home-mixer/filters/previously_seen_posts_backup_filter.rs index 17a3e58f..bf8ea80a 100644 --- a/home-mixer/filters/previously_seen_posts_backup_filter.rs +++ b/home-mixer/filters/previously_seen_posts_backup_filter.rs @@ -88,4 +88,25 @@ mod tests { assert!(result.kept.is_empty()); assert!(result.removed.is_empty()); } + + #[test] + fn test_filters_quote_of_impressed_original() { + let query = ScoredPostsQuery { + impressed_post_ids: vec![99], + ..Default::default() + }; + + let quote = PostCandidate { + tweet_id: 7, + quoted_tweet_id: Some(99), + ..Default::default() + }; + let unrelated = make_candidate(8); + + let result = PreviouslySeenPostsBackupFilter.filter(&query, vec![quote, unrelated]); + assert_eq!(result.kept.len(), 1); + assert_eq!(result.kept[0].tweet_id, 8); + assert_eq!(result.removed.len(), 1); + assert_eq!(result.removed[0].tweet_id, 7); + } } diff --git a/home-mixer/util/candidates_util.rs b/home-mixer/util/candidates_util.rs index c9d8711d..a553aa8a 100644 --- a/home-mixer/util/candidates_util.rs +++ b/home-mixer/util/candidates_util.rs @@ -7,6 +7,7 @@ pub fn get_related_post_ids(candidate: &PostCandidate) -> Vec { let mut ids = vec![candidate.tweet_id]; ids.extend(candidate.retweeted_tweet_id); ids.extend(candidate.in_reply_to_tweet_id); + ids.extend(candidate.quoted_tweet_id); ids } @@ -14,6 +15,7 @@ pub fn related_post_ids_iter(candidate: &PostCandidate) -> impl Iterator>(), + vec![10, 20, 30, 40] + ); + assert_eq!(get_related_post_ids(&candidate), vec![10, 20, 30, 40]); + } + + #[test] + fn related_ids_skip_absent_quote() { + let candidate = PostCandidate { + tweet_id: 10, + ..Default::default() + }; + assert_eq!( + related_post_ids_iter(&candidate).collect::>(), + vec![10] + ); + } }