mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-11-26 22:31:20 +00:00
Adding unit tests for person and community block.
This commit is contained in:
parent
9e8a4807ec
commit
ef9ab36304
3 changed files with 71 additions and 12 deletions
|
@ -126,8 +126,8 @@ impl CommentView {
|
||||||
.left_join(
|
.left_join(
|
||||||
person_block::table.on(
|
person_block::table.on(
|
||||||
comment::creator_id
|
comment::creator_id
|
||||||
.eq(person_block::person_id)
|
.eq(person_block::recipient_id)
|
||||||
.and(person_block::recipient_id.eq(person_id_join)),
|
.and(person_block::person_id.eq(person_id_join)),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.left_join(
|
.left_join(
|
||||||
|
@ -443,9 +443,10 @@ impl<'a> CommentQueryBuilder<'a> {
|
||||||
.order_by(comment_aggregates::score.desc()),
|
.order_by(comment_aggregates::score.desc()),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Don't show blocked communities
|
// Don't show blocked communities or persons
|
||||||
if self.my_person_id.is_some() {
|
if self.my_person_id.is_some() {
|
||||||
query = query.filter(community_block::person_id.is_null());
|
query = query.filter(community_block::person_id.is_null());
|
||||||
|
query = query.filter(person_block::person_id.is_null());
|
||||||
}
|
}
|
||||||
|
|
||||||
let (limit, offset) = limit_and_offset(self.page, self.limit);
|
let (limit, offset) = limit_and_offset(self.page, self.limit);
|
||||||
|
|
|
@ -319,8 +319,8 @@ impl<'a> PostQueryBuilder<'a> {
|
||||||
.left_join(
|
.left_join(
|
||||||
person_block::table.on(
|
person_block::table.on(
|
||||||
post::creator_id
|
post::creator_id
|
||||||
.eq(person_block::person_id)
|
.eq(person_block::recipient_id)
|
||||||
.and(person_block::recipient_id.eq(person_id_join)),
|
.and(person_block::person_id.eq(person_id_join)),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.left_join(
|
.left_join(
|
||||||
|
@ -407,9 +407,10 @@ impl<'a> PostQueryBuilder<'a> {
|
||||||
query = query.filter(post_saved::id.is_not_null());
|
query = query.filter(post_saved::id.is_not_null());
|
||||||
};
|
};
|
||||||
|
|
||||||
// Don't show blocked communities
|
// Don't show blocked communities or persons
|
||||||
if self.my_person_id.is_some() {
|
if self.my_person_id.is_some() {
|
||||||
query = query.filter(community_block::person_id.is_null());
|
query = query.filter(community_block::person_id.is_null());
|
||||||
|
query = query.filter(person_block::person_id.is_null());
|
||||||
}
|
}
|
||||||
|
|
||||||
query = match self.sort.unwrap_or(SortType::Hot) {
|
query = match self.sort.unwrap_or(SortType::Hot) {
|
||||||
|
@ -488,12 +489,19 @@ mod tests {
|
||||||
use lemmy_db_queries::{
|
use lemmy_db_queries::{
|
||||||
aggregates::post_aggregates::PostAggregates,
|
aggregates::post_aggregates::PostAggregates,
|
||||||
establish_unpooled_connection,
|
establish_unpooled_connection,
|
||||||
|
Blockable,
|
||||||
Crud,
|
Crud,
|
||||||
Likeable,
|
Likeable,
|
||||||
ListingType,
|
ListingType,
|
||||||
SortType,
|
SortType,
|
||||||
};
|
};
|
||||||
use lemmy_db_schema::source::{community::*, person::*, post::*};
|
use lemmy_db_schema::source::{
|
||||||
|
community::*,
|
||||||
|
community_block::{CommunityBlock, CommunityBlockForm},
|
||||||
|
person::*,
|
||||||
|
person_block::{PersonBlock, PersonBlockForm},
|
||||||
|
post::*,
|
||||||
|
};
|
||||||
use serial_test::serial;
|
use serial_test::serial;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -529,6 +537,32 @@ mod tests {
|
||||||
|
|
||||||
let inserted_community = Community::create(&conn, &new_community).unwrap();
|
let inserted_community = Community::create(&conn, &new_community).unwrap();
|
||||||
|
|
||||||
|
// Test a person block, make sure the post query doesn't include their post
|
||||||
|
let blocked_person = PersonForm {
|
||||||
|
name: person_name.to_owned(),
|
||||||
|
..PersonForm::default()
|
||||||
|
};
|
||||||
|
|
||||||
|
let inserted_blocked_person = Person::create(&conn, &blocked_person).unwrap();
|
||||||
|
|
||||||
|
let post_from_blocked_person = PostForm {
|
||||||
|
name: "blocked_person_post".to_string(),
|
||||||
|
creator_id: inserted_blocked_person.id,
|
||||||
|
community_id: inserted_community.id,
|
||||||
|
..PostForm::default()
|
||||||
|
};
|
||||||
|
|
||||||
|
Post::create(&conn, &post_from_blocked_person).unwrap();
|
||||||
|
|
||||||
|
// block that person
|
||||||
|
let person_block = PersonBlockForm {
|
||||||
|
person_id: inserted_person.id,
|
||||||
|
recipient_id: inserted_blocked_person.id,
|
||||||
|
};
|
||||||
|
|
||||||
|
PersonBlock::block(&conn, &person_block).unwrap();
|
||||||
|
|
||||||
|
// A sample post
|
||||||
let new_post = PostForm {
|
let new_post = PostForm {
|
||||||
name: post_name.to_owned(),
|
name: post_name.to_owned(),
|
||||||
creator_id: inserted_person.id,
|
creator_id: inserted_person.id,
|
||||||
|
@ -662,15 +696,34 @@ mod tests {
|
||||||
creator_blocked: false,
|
creator_blocked: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Test a community block
|
||||||
|
let community_block = CommunityBlockForm {
|
||||||
|
person_id: inserted_person.id,
|
||||||
|
community_id: inserted_community.id,
|
||||||
|
};
|
||||||
|
CommunityBlock::block(&conn, &community_block).unwrap();
|
||||||
|
|
||||||
|
let read_post_listings_with_person_after_block = PostQueryBuilder::create(&conn)
|
||||||
|
.listing_type(ListingType::Community)
|
||||||
|
.sort(SortType::New)
|
||||||
|
.show_bot_accounts(false)
|
||||||
|
.community_id(inserted_community.id)
|
||||||
|
.my_person_id(inserted_person.id)
|
||||||
|
.list()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
// TODO More needs to be added here
|
// TODO More needs to be added here
|
||||||
let mut expected_post_listing_with_user = expected_post_listing_no_person.to_owned();
|
let mut expected_post_listing_with_user = expected_post_listing_no_person.to_owned();
|
||||||
expected_post_listing_with_user.my_vote = Some(1);
|
expected_post_listing_with_user.my_vote = Some(1);
|
||||||
|
|
||||||
let like_removed = PostLike::remove(&conn, inserted_person.id, inserted_post.id).unwrap();
|
let like_removed = PostLike::remove(&conn, inserted_person.id, inserted_post.id).unwrap();
|
||||||
let num_deleted = Post::delete(&conn, inserted_post.id).unwrap();
|
let num_deleted = Post::delete(&conn, inserted_post.id).unwrap();
|
||||||
|
PersonBlock::unblock(&conn, &person_block).unwrap();
|
||||||
|
CommunityBlock::unblock(&conn, &community_block).unwrap();
|
||||||
Community::delete(&conn, inserted_community.id).unwrap();
|
Community::delete(&conn, inserted_community.id).unwrap();
|
||||||
Person::delete(&conn, inserted_person.id).unwrap();
|
Person::delete(&conn, inserted_person.id).unwrap();
|
||||||
Person::delete(&conn, inserted_bot.id).unwrap();
|
Person::delete(&conn, inserted_bot.id).unwrap();
|
||||||
|
Person::delete(&conn, inserted_blocked_person.id).unwrap();
|
||||||
|
|
||||||
// The with user
|
// The with user
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
@ -682,7 +735,7 @@ mod tests {
|
||||||
read_post_listing_with_person
|
read_post_listing_with_person
|
||||||
);
|
);
|
||||||
|
|
||||||
// Should be only one person, IE the bot post should be missing
|
// Should be only one person, IE the bot post, and blocked should be missing
|
||||||
assert_eq!(1, read_post_listings_with_person.len());
|
assert_eq!(1, read_post_listings_with_person.len());
|
||||||
|
|
||||||
// Without the user
|
// Without the user
|
||||||
|
@ -692,8 +745,11 @@ mod tests {
|
||||||
);
|
);
|
||||||
assert_eq!(expected_post_listing_no_person, read_post_listing_no_person);
|
assert_eq!(expected_post_listing_no_person, read_post_listing_no_person);
|
||||||
|
|
||||||
// Should be 2 posts, with the bot post
|
// Should be 2 posts, with the bot post, and the blocked
|
||||||
assert_eq!(2, read_post_listings_no_person.len());
|
assert_eq!(3, read_post_listings_no_person.len());
|
||||||
|
|
||||||
|
// Should be 0 posts after the community block
|
||||||
|
assert_eq!(0, read_post_listings_with_person_after_block.len());
|
||||||
|
|
||||||
assert_eq!(expected_post_like, inserted_post_like);
|
assert_eq!(expected_post_like, inserted_post_like);
|
||||||
assert_eq!(1, like_removed);
|
assert_eq!(1, like_removed);
|
||||||
|
|
|
@ -2,12 +2,14 @@ create table person_block (
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
person_id int references person on update cascade on delete cascade not null,
|
person_id int references person on update cascade on delete cascade not null,
|
||||||
recipient_id int references person on update cascade on delete cascade not null,
|
recipient_id int references person on update cascade on delete cascade not null,
|
||||||
published timestamp not null default now()
|
published timestamp not null default now(),
|
||||||
|
unique(person_id, recipient_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table community_block (
|
create table community_block (
|
||||||
id serial primary key,
|
id serial primary key,
|
||||||
person_id int references person on update cascade on delete cascade not null,
|
person_id int references person on update cascade on delete cascade not null,
|
||||||
community_id int references community on update cascade on delete cascade not null,
|
community_id int references community on update cascade on delete cascade not null,
|
||||||
published timestamp not null default now()
|
published timestamp not null default now(),
|
||||||
|
unique(person_id, community_id)
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue