@ -194,11 +194,11 @@ mod tests {
structs ::LocalUserView ,
} ;
use lemmy_db_schema ::{
aggregates ::structs ::PostAggregates ,
source ::{
community ::{ Community , CommunityInsertForm , CommunityModerator , CommunityModeratorForm } ,
instance ::Instance ,
local_user ::{ LocalUser , LocalUserInsertForm } ,
moderator ::{ ModRemovePost , ModRemovePostForm } ,
person ::{ Person , PersonInsertForm } ,
post ::{ Post , PostInsertForm } ,
post_report ::{ PostReport , PostReportForm } ,
@ -291,12 +291,20 @@ mod tests {
reason : "from sara" . into ( ) ,
} ;
let inserted_sara_report = PostReport ::report ( pool , & sara_report_form ) . await . unwrap ( ) ;
PostReport ::report ( pool , & sara_report_form ) . await . unwrap ( ) ;
let new_post_2 = PostInsertForm ::builder ( )
. name ( "A test post crv 2" . into ( ) )
. creator_id ( inserted_timmy . id )
. community_id ( inserted_community . id )
. build ( ) ;
let inserted_post_2 = Post ::create ( pool , & new_post_2 ) . await . unwrap ( ) ;
// jessica reports
let jessica_report_form = PostReportForm {
creator_id : inserted_jessica . id ,
post_id : inserted_post . id ,
post_id : inserted_post _2 . id ,
original_post_name : "Orig post" . into ( ) ,
original_post_url : None ,
original_post_body : None ,
@ -307,138 +315,21 @@ mod tests {
. await
. unwrap ( ) ;
let agg = PostAggregates ::read ( pool , inserted_post . id ) . await . unwrap ( ) ;
let read_jessica_report_view =
PostReportView ::read ( pool , inserted_jessica_report . id , inserted_timmy . id )
. await
. unwrap ( ) ;
let expected_jessica_report_view = PostReportView {
post_report : inserted_jessica_report . clone ( ) ,
post : inserted_post . clone ( ) ,
community : Community {
id : inserted_community . id ,
name : inserted_community . name ,
icon : None ,
removed : false ,
deleted : false ,
nsfw : false ,
actor_id : inserted_community . actor_id . clone ( ) ,
local : true ,
title : inserted_community . title ,
description : None ,
updated : None ,
banner : None ,
hidden : false ,
posting_restricted_to_mods : false ,
published : inserted_community . published ,
instance_id : inserted_instance . id ,
private_key : inserted_community . private_key . clone ( ) ,
public_key : inserted_community . public_key . clone ( ) ,
last_refreshed_at : inserted_community . last_refreshed_at ,
followers_url : inserted_community . followers_url . clone ( ) ,
inbox_url : inserted_community . inbox_url . clone ( ) ,
shared_inbox_url : inserted_community . shared_inbox_url . clone ( ) ,
moderators_url : inserted_community . moderators_url . clone ( ) ,
featured_url : inserted_community . featured_url . clone ( ) ,
} ,
creator : Person {
id : inserted_jessica . id ,
name : inserted_jessica . name ,
display_name : None ,
published : inserted_jessica . published ,
avatar : None ,
actor_id : inserted_jessica . actor_id . clone ( ) ,
local : true ,
banned : false ,
deleted : false ,
bot_account : false ,
bio : None ,
banner : None ,
updated : None ,
inbox_url : inserted_jessica . inbox_url . clone ( ) ,
shared_inbox_url : None ,
matrix_user_id : None ,
ban_expires : None ,
instance_id : inserted_instance . id ,
private_key : inserted_jessica . private_key ,
public_key : inserted_jessica . public_key ,
last_refreshed_at : inserted_jessica . last_refreshed_at ,
} ,
post_creator : Person {
id : inserted_timmy . id ,
name : inserted_timmy . name . clone ( ) ,
display_name : None ,
published : inserted_timmy . published ,
avatar : None ,
actor_id : inserted_timmy . actor_id . clone ( ) ,
local : true ,
banned : false ,
deleted : false ,
bot_account : false ,
bio : None ,
banner : None ,
updated : None ,
inbox_url : inserted_timmy . inbox_url . clone ( ) ,
shared_inbox_url : None ,
matrix_user_id : None ,
ban_expires : None ,
instance_id : inserted_instance . id ,
private_key : inserted_timmy . private_key . clone ( ) ,
public_key : inserted_timmy . public_key . clone ( ) ,
last_refreshed_at : inserted_timmy . last_refreshed_at ,
} ,
creator_banned_from_community : false ,
my_vote : None ,
counts : PostAggregates {
id : agg . id ,
post_id : inserted_post . id ,
comments : 0 ,
score : 0 ,
upvotes : 0 ,
downvotes : 0 ,
published : agg . published ,
newest_comment_time_necro : inserted_post . published ,
newest_comment_time : inserted_post . published ,
featured_community : false ,
featured_local : false ,
hot_rank : 1728 ,
hot_rank_active : 1728 ,
controversy_rank : 0.0 ,
community_id : inserted_post . community_id ,
creator_id : inserted_post . creator_id ,
} ,
resolver : None ,
} ;
assert_eq! ( read_jessica_report_view , expected_jessica_report_view ) ;
let mut expected_sara_report_view = expected_jessica_report_view . clone ( ) ;
expected_sara_report_view . post_report = inserted_sara_report ;
expected_sara_report_view . my_vote = None ;
expected_sara_report_view . creator = Person {
id : inserted_sara . id ,
name : inserted_sara . name ,
display_name : None ,
published : inserted_sara . published ,
avatar : None ,
actor_id : inserted_sara . actor_id . clone ( ) ,
local : true ,
banned : false ,
deleted : false ,
bot_account : false ,
bio : None ,
banner : None ,
updated : None ,
inbox_url : inserted_sara . inbox_url . clone ( ) ,
shared_inbox_url : None ,
matrix_user_id : None ,
ban_expires : None ,
instance_id : inserted_instance . id ,
private_key : inserted_sara . private_key ,
public_key : inserted_sara . public_key ,
last_refreshed_at : inserted_sara . last_refreshed_at ,
} ;
assert_eq! (
read_jessica_report_view . post_report ,
inserted_jessica_report
) ;
assert_eq! ( read_jessica_report_view . post , inserted_post_2 ) ;
assert_eq! ( read_jessica_report_view . community . id , inserted_community . id ) ;
assert_eq! ( read_jessica_report_view . creator . id , inserted_jessica . id ) ;
assert_eq! ( read_jessica_report_view . post_creator . id , inserted_timmy . id ) ;
assert_eq! ( read_jessica_report_view . my_vote , None ) ;
assert_eq! ( read_jessica_report_view . resolver , None ) ;
// Do a batch read of timmys reports
let reports = PostReportQuery ::default ( )
@ -446,13 +337,8 @@ mod tests {
. await
. unwrap ( ) ;
assert_eq! (
reports ,
[
expected_jessica_report_view . clone ( ) ,
expected_sara_report_view . clone ( )
]
) ;
assert_eq! ( reports [ 0 ] . creator . id , inserted_jessica . id ) ;
assert_eq! ( reports [ 1 ] . creator . id , inserted_sara . id ) ;
// Make sure the counts are correct
let report_count = PostReportView ::get_report_count ( pool , inserted_timmy . id , false , None )
@ -460,64 +346,42 @@ mod tests {
. unwrap ( ) ;
assert_eq! ( 2 , report_count ) ;
// Try to resolve the report
PostReport ::resolve ( pool , inserted_jessica_report . id , inserted_timmy . id )
. await
. unwrap ( ) ;
// Writing post removal to mod log should automatically resolve reports
let remove_form = ModRemovePostForm {
mod_person_id : inserted_timmy . id ,
post_id : inserted_jessica_report . post_id ,
reason : None ,
removed : Some ( true ) ,
} ;
ModRemovePost ::create ( pool , & remove_form ) . await . unwrap ( ) ;
let read_jessica_report_view_after_resolve =
PostReportView ::read ( pool , inserted_jessica_report . id , inserted_timmy . id )
. await
. unwrap ( ) ;
let mut expected_jessica_report_view_after_resolve = expected_jessica_report_view ;
expected_jessica_report_view_after_resolve
. post_report
. resolved = true ;
expected_jessica_report_view_after_resolve
. post_report
. resolver_id = Some ( inserted_timmy . id ) ;
expected_jessica_report_view_after_resolve
. post_report
. updated = read_jessica_report_view_after_resolve . post_report . updated ;
expected_jessica_report_view_after_resolve . resolver = Some ( Person {
id : inserted_timmy . id ,
name : inserted_timmy . name . clone ( ) ,
display_name : None ,
published : inserted_timmy . published ,
avatar : None ,
actor_id : inserted_timmy . actor_id . clone ( ) ,
local : true ,
banned : false ,
deleted : false ,
bot_account : false ,
bio : None ,
banner : None ,
updated : None ,
inbox_url : inserted_timmy . inbox_url . clone ( ) ,
shared_inbox_url : None ,
matrix_user_id : None ,
ban_expires : None ,
instance_id : inserted_instance . id ,
private_key : inserted_timmy . private_key . clone ( ) ,
public_key : inserted_timmy . public_key . clone ( ) ,
last_refreshed_at : inserted_timmy . last_refreshed_at ,
} ) ;
assert! ( read_jessica_report_view_after_resolve . post_report . resolved ) ;
assert_eq! (
read_jessica_report_view_after_resolve
. post_report
. resolver_id ,
Some ( inserted_timmy . id )
) ;
assert_eq! (
read_jessica_report_view_after_resolve ,
expected_jessica_report_view_after_resolve
read_jessica_report_view_after_resolve . resolver . unwrap ( ) . id ,
inserted_timmy . id
) ;
// Do a batch read of timmys reports
// It should only show saras, which is unresolved
let reports_after_resolve = PostReportQuery {
unresolved_only : ( true ) ,
unresolved_only : true ,
.. Default ::default ( )
}
. list ( pool , & timmy_view )
. await
. unwrap ( ) ;
assert_eq! ( reports_after_resolve [ 0 ] , expected_sara_report_view ) ;
assert_eq! ( reports_after_resolve . len ( ) , 1 ) ;
assert_eq! ( reports_after_resolve [ 0 ] . creator . id , inserted_sara . id ) ;
// Make sure the counts are correct
let report_count_after_resolved =