def test_get_count_if_moderator(self, moderator): post = PostFactory(community=moderator.community) FlagFactory(content_object=post, community=post.community) other = MembershipFactory(member=moderator.member, role=Membership.Role.MODERATOR) post = PostFactory(community=other.community) FlagFactory(content_object=post, community=post.community) assert get_external_flag_count(moderator.member, moderator.community) == 1
def test_post(self, client, moderator): post = PostFactory(community=moderator.community) flag = FlagFactory( content_object=post, community=moderator.community, ) response = client.post(reverse("flags:delete", args=[flag.id])) assert response.url == post.get_absolute_url() assert not Flag.objects.exists()
def test_post(self, client, member): post = PostFactory(community=member.community) comment = CommentFactory( owner=member.member, content_object=post, community=member.community, ) response = client.post(reverse("comments:delete", args=[comment.id])) assert response.url == post.get_absolute_url() assert Comment.objects.count() == 0
def test_exclude_blocked_users_if_user_blocked(self, user): my_post = PostFactory(owner=user) first_post = PostFactory() second_post = PostFactory() user.blockers.add(first_post.owner) posts = Post.objects.exclude_blocked_users(user).all() assert len(posts) == 2 assert my_post in posts assert second_post in posts
def test_get_if_member(self, client, member): EventFactory(community=member.community, owner=member.member) PostFactory(community=member.community, owner=member.member) PostFactory(community=member.community, owner=member.member) poll = PollFactory(community=member.community, owner=member.member) for _ in range(3): answer = AnswerFactory(poll=poll) answer.voters.add(UserFactory()) response = client.get(settings.HOME_PAGE_URL) assert response.status_code == 200 assert len(response.context["object_list"]) == 4
def test_post(self, client, member, send_webpush_mock): post = PostFactory(community=member.community) parent = CommentFactory( content_object=post, community=member.community, owner=MembershipFactory(community=member.community).member, ) response = client.post(reverse("comments:reply", args=[parent.id]), {"content": "test"}) comment = Comment.objects.get(parent=parent) assert response.url == post.get_absolute_url() assert comment.owner == member.member assert comment.content_object == parent.content_object assert comment.parent == parent
def test_exclude_blocked(self, user): first_post = PostFactory() second_post = PostFactory() third_post = PostFactory() fourth_post = PostFactory() first_post.tags.add("movies") second_post.tags.add("movies", "reviews") third_post.tags.add("reviews") user.blocked.add(fourth_post.owner) user.blocked_tags.add(Tag.objects.get(name="movies")) assert Post.objects.exclude_blocked(user).distinct().get() == third_post
def test_with_activity_stream_filters_if_none_set(self, user, anonymous_user): PostFactory(owner=user) first_post = PostFactory() user.following.add(first_post.owner) second_post = PostFactory() second_post.tags.add("reviews") PostFactory() assert Post.objects.with_activity_stream_filters(user).count() == 4 assert Post.objects.with_activity_stream_filters(anonymous_user).count() == 4
def test_unreshared(self, post, user, anonymous_user): first = PostFactory() PostFactory() other = UserFactory() first.reshare(user) assert Post.objects.unreshared(other).count() == 4 assert Post.objects.unreshared(anonymous_user).count() == 4 posts = Post.objects.unreshared(user) # incl. reshared post assert posts.count() == 3 assert first not in posts
def test_get_content_object_if_soft_deleted(self): assert ( CommentFactory( content_object=PostFactory(deleted=timezone.now()) ).get_content_object() is None )
def test_post(self, client, member): post = PostFactory(community=member.community, owner=member.member) post.tags.set("movies") tag = Tag.objects.get() response = client.post(reverse("hashtags:block", args=[tag.id])) assert response.status_code == http.HTTPStatus.OK assert tag in member.member.blocked_tags.all()
def test_notify_on_create_if_no_content_object(self, community): comment_owner = MembershipFactory(community=community).member post_owner = MembershipFactory( community=community, ).member mentioned = UserFactory(username="******") MembershipFactory(member=mentioned, community=community) post = PostFactory( owner=post_owner, community=community, deleted=timezone.now() ) CommentFactory( owner=MembershipFactory(community=community).member, content_object=post, ) comment = CommentFactory( owner=comment_owner, community=community, content_object=post, content="hello @danjac", ) follower = MembershipFactory(community=community).member follower.following.add(comment.owner) notifications = list(comment.notify_on_create()) assert len(notifications) == 0
def test_notify_on_update(self, community, mailoutbox, send_webpush_mock): comment_owner = MembershipFactory( community=community, ).member member = MembershipFactory( community=community, member=UserFactory(username="******") ).member post_owner = MembershipFactory(community=community).member post = PostFactory(owner=post_owner, community=community) comment = CommentFactory( owner=comment_owner, community=community, content_object=post, content="hello", ) comment.content = "hello @danjac" comment.save() notifications = list(comment.notify_on_update()) assert len(notifications) == 1 assert notifications[0].recipient == member assert notifications[0].actor == comment_owner assert notifications[0].verb == "mention"
def test_get_if_current_user(self, client, member): post = PostFactory(community=member.community, owner=member.member) EventFactory(community=member.community, owner=member.member) # unlikely, but just for testing notification = NotificationFactory( recipient=member.member, content_object=member.member, is_read=False, ) LikeFactory( content_object=post, community=post.community, recipient=post.owner, ) response = client.get( reverse("users:activities", args=[member.member.username]) ) assert response.status_code == http.HTTPStatus.OK assert len(dict(response.context or {})["object_list"]) == 2 assert dict(response.context or {})["num_likes"] == 1 # ignore: user is self notification.refresh_from_db() assert not notification.is_read
def test_authenticated(self, member): post = PostFactory( community=member.community, owner=MembershipFactory(community=member.community).member, ) Notification.objects.create( content_object=post, recipient=member.member, actor=post.owner, community=post.community, verb="updated", is_read=False, ) Notification.objects.create( content_object=post, recipient=member.member, actor=post.owner, community=post.community, verb="updated", is_read=True, ) assert get_unread_notification_count(member.member, member.community) == 1
def test_post_by_moderator(self, client, moderator, mailoutbox, send_webpush_mock): member = MembershipFactory(community=moderator.community) post = PostFactory(community=moderator.community, owner=member.member) comment = CommentFactory( owner=member.member, content_object=post, community=moderator.community, ) response = client.post(reverse("comments:delete", args=[comment.id])) assert response.url == post.get_absolute_url() assert Comment.objects.deleted().count() == 1 assert send_webpush_mock.delay.called assert len(mailoutbox) == 1 assert mailoutbox[0].to == [comment.owner.email]
def test_get(self, client, member): PostFactory( community=member.community, owner=MembershipFactory(community=member.community).member, ).tags.add("movies") response = client.get(reverse("hashtags:detail", args=["movies"])) assert response.context["tag"].name == "movies" assert len(response.context["object_list"]) == 1
def test_get_count_if_not_moderator(self, member): other = MembershipFactory(member=member.member) post = PostFactory(community=other.community) FlagFactory( content_object=post, community=post.community, ) assert get_external_flag_count(member.member, member.community) == 0
def test_get(self, client, member): PostFactory(community=member.community, owner=member.member) PostFactory( community=member.community, owner=MembershipFactory(community=member.community).member, published=None, ) PostFactory(community=member.community, owner=member.member, published=None) EventFactory(community=member.community, owner=member.member, published=None) response = client.get(reverse("activities:private")) assert response.status_code == 200 assert len(response.context["object_list"]) == 2
def test_exclude_blocked_tags(self, user): first_post = PostFactory() second_post = PostFactory() third_post = PostFactory() my_post = PostFactory(owner=user) first_post.tags.add("movies") second_post.tags.add("movies", "reviews") third_post.tags.add("reviews") user.blocked_tags.add(Tag.objects.get(name="movies")) posts = Post.objects.exclude_blocked_tags(user) assert posts.count() == 2 assert my_post in posts assert third_post in posts
def test_get(self, client, moderator): post = PostFactory(community=moderator.community) FlagFactory( content_object=post, community=moderator.community, ) response = client.get(reverse("flags:list")) assert response.status_code == 200
def test_get(self, client, member): PostFactory(community=member.community, owner=member.member) EventFactory(community=member.community, owner=member.member) response = client.get(reverse("activities:timeline")) assert response.status_code == 200 assert len(response.context["object_list"]) == 2 assert response.context["object_list"][0]["month"]
def test_search_mentions(self, member, transactional_db): PostFactory( community=member.community, title="test", owner=member.member, mentions="@danjac @tester", ) results = Post.objects.search("@danjac") assert results.count() == 1
def test_get(self, client, member): PostFactory( community=member.community, owner=MembershipFactory(community=member.community).member, ).tags.add("movies") member.member.following_tags.add(Tag.objects.get(name="movies")) response = client.get(reverse("hashtags:following_list")) assert len(response.context["object_list"]) == 1
def test_get(self, client, member): post = PostFactory(community=member.community) parent = CommentFactory( content_object=post, community=member.community, owner=MembershipFactory(community=member.community).member, ) response = client.get(reverse("comments:reply", args=[parent.id])) assert response.status_code == http.HTTPStatus.OK
def test_get(self, client, member): post = PostFactory(community=member.community) comment = CommentFactory( owner=member.member, content_object=post, community=member.community, ) response = client.get(reverse("comments:update", args=[comment.id])) assert response.status_code == http.HTTPStatus.OK
def test_get_hashtag(self, client, member, transactional_db): member = MembershipFactory(community=member.community) PostFactory( community=member.community, description="#testme", owner=member.member, ) response = client.get(reverse("activities:search"), {"q": "#testme"}) assert response.status_code == 200 assert len(response.context["object_list"]) == 1
def test_get_if_own_mention(self, client, member, transactional_db): PostFactory( community=member.community, owner=member.member, mentions=f"@{member.member.username}", ) response = client.get( reverse("users:activity_mentions", args=[member.member.username]) ) assert response.status_code == http.HTTPStatus.OK assert len(response.context["object_list"]) == 0
def test_get_pinned_activity_if_is_pinned_post(self, member): post = PostFactory( community=member.community, owner=member.member, is_pinned=True, published=timezone.now(), ) pinned = get_pinned_activity(member.member, member.community) assert pinned["pk"] == post.id assert pinned["object_type"] == "post" assert pinned["object"] == post
def test_post(self, client, member, send_webpush_mock): post = PostFactory(community=member.community) comment = CommentFactory( content_object=post, community=member.community, owner=MembershipFactory(community=member.community).member, ) response = client.post(reverse("comments:like", args=[comment.id])) assert response.url == comment.get_absolute_url() like = Like.objects.get() assert like.user == member.member