Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit 247579f

Browse files
committed
refactor(abuse-report): fix error
1 parent ab568c1 commit 247579f

File tree

9 files changed

+154
-12
lines changed

9 files changed

+154
-12
lines changed

lib/groupher_server/cms/delegates/article_comment.ex

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,19 @@ defmodule GroupherServer.CMS.Delegate.ArticleComment do
9696
# make sure the article exsit
9797
# author is passed by middleware, it's exsit for sure
9898
{:ok, article} <- ORM.find(info.model, article_id, preload: [author: :user]) do
99+
IO.inspect(info, label: "bb")
100+
99101
Multi.new()
100102
|> Multi.run(:create_article_comment, fn _, _ ->
103+
IO.inspect("11")
101104
do_create_comment(content, info.foreign_key, article, user)
102105
end)
103106
|> Multi.run(:update_article_comments_count, fn _, %{create_article_comment: comment} ->
104-
update_article_comments_count(comment, :inc)
107+
IO.inspect("22")
108+
update_article_comments_count(comment, :inc) |> IO.inspect(label: "22 after")
105109
end)
106110
|> Multi.run(:add_participator, fn _, _ ->
111+
IO.inspect("33")
107112
add_participator_to_article(article, user)
108113
end)
109114
|> Repo.transaction()

lib/groupher_server/cms/helper/matcher2.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ defmodule GroupherServer.CMS.Helper.Matcher2 do
2828
{:ok, %{model: Job, id: job_id, foreign_key: :job_id}}
2929
end
3030

31+
def match(:comment_article, %ArticleComment{repo_id: repo_id}) when not is_nil(repo_id) do
32+
{:ok, %{model: Repo, id: repo_id, foreign_key: :repo_id}}
33+
end
34+
3135
def match(:comment_article, %ArticleComment{}) do
32-
{:error, "not supported"}
36+
{:error, "match error, not supported"}
3337
end
3438

3539
def match(:account) do

test/groupher_server/cms/abuse_reports/job_report_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ defmodule GroupherServer.Test.CMS.AbuseReports.JobReport do
2727

2828
report = all_reports.entries |> List.first()
2929
assert report.article.id == job.id
30-
assert report.article.thread == :job
30+
assert report.article.thread == "JOB"
3131
end
3232

3333
test "report a job should have a abuse report record", ~m(community user job_attrs)a do

test/groupher_server/cms/abuse_reports/post_report_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ defmodule GroupherServer.Test.CMS.AbuseReports.PostReport do
2727

2828
report = all_reports.entries |> List.first()
2929
assert report.article.id == post.id
30-
assert report.article.thread == :post
30+
assert report.article.thread == "POST"
3131
end
3232

3333
test "report a post should have a abuse report record", ~m(community user post_attrs)a do
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
defmodule GroupherServer.Test.CMS.AbuseReports.RepoReport do
2+
@moduledoc false
3+
4+
use GroupherServer.TestTools
5+
6+
alias Helper.ORM
7+
alias GroupherServer.CMS
8+
9+
setup do
10+
{:ok, user} = db_insert(:user)
11+
{:ok, user2} = db_insert(:user)
12+
13+
{:ok, community} = db_insert(:community)
14+
repo_attrs = mock_attrs(:repo, %{community_id: community.id})
15+
16+
{:ok, ~m(user user2 community repo_attrs)a}
17+
end
18+
19+
describe "[article repo report/unreport]" do
20+
test "list article reports should work", ~m(community user user2 repo_attrs)a do
21+
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
22+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
23+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user2)
24+
25+
filter = %{content_type: :repo, content_id: repo.id, page: 1, size: 20}
26+
{:ok, all_reports} = CMS.list_reports(filter)
27+
28+
report = all_reports.entries |> List.first()
29+
assert report.article.id == repo.id
30+
assert report.article.thread == "REPO"
31+
end
32+
33+
test "report a repo should have a abuse report record", ~m(community user repo_attrs)a do
34+
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
35+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
36+
37+
filter = %{content_type: :repo, content_id: repo.id, page: 1, size: 20}
38+
{:ok, all_reports} = CMS.list_reports(filter)
39+
40+
report = List.first(all_reports.entries)
41+
report_cases = report.report_cases
42+
43+
assert report.article.id == repo.id
44+
assert all_reports.total_count == 1
45+
assert report.report_cases_count == 1
46+
assert List.first(report_cases).user.login == user.login
47+
48+
{:ok, repo} = ORM.find(CMS.Repo, repo.id)
49+
assert repo.meta.reported_count == 1
50+
assert user.id in repo.meta.reported_user_ids
51+
end
52+
53+
test "can undo a report", ~m(community user repo_attrs)a do
54+
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
55+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
56+
{:ok, _report} = CMS.undo_report_article(:repo, repo.id, user)
57+
58+
filter = %{content_type: :repo, content_id: repo.id, page: 1, size: 20}
59+
{:ok, all_reports} = CMS.list_reports(filter)
60+
assert all_reports.total_count == 0
61+
62+
{:ok, repo} = ORM.find(CMS.Repo, repo.id)
63+
assert user.id not in repo.meta.reported_user_ids
64+
end
65+
66+
test "can undo a existed report", ~m(community user user2 repo_attrs)a do
67+
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
68+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
69+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user2)
70+
{:ok, _report} = CMS.undo_report_article(:repo, repo.id, user)
71+
72+
filter = %{content_type: :repo, content_id: repo.id, page: 1, size: 20}
73+
{:ok, all_reports} = CMS.list_reports(filter)
74+
assert all_reports.total_count == 1
75+
76+
{:ok, repo} = ORM.find(CMS.Repo, repo.id)
77+
78+
assert user2.id in repo.meta.reported_user_ids
79+
assert user.id not in repo.meta.reported_user_ids
80+
end
81+
82+
test "can undo a report with other user report it too",
83+
~m(community user user2 repo_attrs)a do
84+
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
85+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
86+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user2)
87+
88+
filter = %{content_type: :repo, content_id: repo.id, page: 1, size: 20}
89+
{:ok, all_reports} = CMS.list_reports(filter)
90+
assert all_reports.total_count == 1
91+
92+
report = all_reports.entries |> List.first()
93+
assert report.report_cases |> length == 2
94+
assert Enum.any?(report.report_cases, &(&1.user.login == user.login))
95+
assert Enum.any?(report.report_cases, &(&1.user.login == user2.login))
96+
97+
{:ok, _report} = CMS.undo_report_article(:repo, repo.id, user)
98+
99+
filter = %{content_type: :repo, content_id: repo.id, page: 1, size: 20}
100+
{:ok, all_reports} = CMS.list_reports(filter)
101+
assert all_reports.total_count == 1
102+
103+
report = all_reports.entries |> List.first()
104+
assert report.report_cases |> length == 1
105+
assert Enum.any?(report.report_cases, &(&1.user.login == user2.login))
106+
end
107+
108+
test "different user report a comment should have same report with different report cases",
109+
~m(community user user2 repo_attrs)a do
110+
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
111+
112+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
113+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason2", "attr_info 2", user2)
114+
115+
filter = %{content_type: :repo, content_id: repo.id, page: 1, size: 20}
116+
{:ok, all_reports} = CMS.list_reports(filter)
117+
118+
report = List.first(all_reports.entries)
119+
report_cases = report.report_cases
120+
121+
assert all_reports.total_count == 1
122+
assert length(report_cases) == 2
123+
assert report.report_cases_count == 2
124+
125+
assert List.first(report_cases).user.login == user.login
126+
assert List.last(report_cases).user.login == user2.login
127+
end
128+
129+
test "same user can not report a comment twice", ~m(community repo_attrs user)a do
130+
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
131+
132+
{:ok, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
133+
assert {:error, _report} = CMS.report_article(:repo, repo.id, "reason", "attr_info", user)
134+
end
135+
end
136+
end

test/groupher_server_web/query/cms/abuse_reports/account_report_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ defmodule GroupherServer.Test.Query.AbuseReports.AccountReport do
5252
}
5353
}
5454
"""
55-
@tag :wip2
55+
5656
test "should get pagination info", ~m(guest_conn user user2)a do
5757
{:ok, _report} = CMS.report_article(:account, user.id, "reason", "attr_info", user2)
5858

test/groupher_server_web/query/cms/abuse_reports/job_report_test.exs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ defmodule GroupherServer.Test.Query.AbuseReports.JobReport do
5757
}
5858
}
5959
"""
60-
@tag :wip2
60+
6161
test "should get pagination info", ~m(guest_conn community job_attrs user user2)a do
6262
{:ok, job} = CMS.create_content(community, :job, job_attrs, user)
6363
{:ok, job2} = CMS.create_content(community, :job, job_attrs, user)
@@ -72,7 +72,6 @@ defmodule GroupherServer.Test.Query.AbuseReports.JobReport do
7272
assert results["totalCount"] == 2
7373
end
7474

75-
@tag :wip2
7675
test "support search with id", ~m(guest_conn user user2)a do
7776
{:ok, job} = db_insert(:job)
7877
{:ok, job2} = db_insert(:job)

test/groupher_server_web/query/cms/abuse_reports/post_report_test.exs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ defmodule GroupherServer.Test.Query.AbuseReports.PostReport do
5757
}
5858
}
5959
"""
60-
@tag :wip2
60+
6161
test "should get pagination info", ~m(guest_conn community post_attrs user user2)a do
6262
{:ok, post} = CMS.create_content(community, :post, post_attrs, user)
6363
{:ok, post2} = CMS.create_content(community, :post, post_attrs, user)
@@ -72,7 +72,6 @@ defmodule GroupherServer.Test.Query.AbuseReports.PostReport do
7272
assert results["totalCount"] == 2
7373
end
7474

75-
@tag :wip2
7675
test "support search with id", ~m(guest_conn user user2)a do
7776
{:ok, post} = db_insert(:post)
7877
{:ok, post2} = db_insert(:post)

test/groupher_server_web/query/cms/abuse_reports/repo_report_test.exs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ defmodule GroupherServer.Test.Query.AbuseReports.RepoReport do
5757
}
5858
}
5959
"""
60-
@tag :wip2
60+
6161
test "should get pagination info", ~m(guest_conn community repo_attrs user user2)a do
6262
{:ok, repo} = CMS.create_content(community, :repo, repo_attrs, user)
6363
{:ok, repo2} = CMS.create_content(community, :repo, repo_attrs, user)
@@ -72,7 +72,6 @@ defmodule GroupherServer.Test.Query.AbuseReports.RepoReport do
7272
assert results["totalCount"] == 2
7373
end
7474

75-
@tag :wip2
7675
test "support search with id", ~m(guest_conn user user2)a do
7776
{:ok, repo} = db_insert(:repo)
7877
{:ok, repo2} = db_insert(:repo)
@@ -92,7 +91,7 @@ defmodule GroupherServer.Test.Query.AbuseReports.RepoReport do
9291
assert results["totalCount"] == 1
9392
end
9493

95-
@tag :wip3
94+
@tag :wip2
9695
test "support article_comment", ~m(guest_conn repo user)a do
9796
{:ok, comment} = CMS.create_article_comment(:repo, repo.id, "comment", user)
9897
{:ok, _} = CMS.report_article_comment(comment.id, "reason", "attr", user)

0 commit comments

Comments
 (0)