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

Commit af7ec63

Browse files
committed
refactor(abuse-report): wip
1 parent d7831aa commit af7ec63

File tree

11 files changed

+347
-18
lines changed

11 files changed

+347
-18
lines changed

lib/groupher_server/accounts/user.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ defmodule GroupherServer.Accounts.User do
33
alias __MODULE__
44

55
use Ecto.Schema
6+
use Accessible
67

78
# import GroupherServerWeb.Schema.Helper.Fields
89
import Ecto.Changeset

lib/groupher_server/cms/abuse_report.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ defmodule GroupherServer.CMS.AbuseReport do
33
alias __MODULE__
44

55
use Ecto.Schema
6+
use Accessible
67
import Ecto.Changeset
78

89
alias GroupherServer.{Accounts, CMS}

lib/groupher_server/cms/delegates/abuse_report.ex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,6 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
8181

8282
# def list_reports(%{content_type: thread} = filter) when thread in @article_threads do
8383
def list_reports(%{content_type: thread} = filter) do
84-
IO.inspect(filter, label: "list filter 1-")
85-
8684
with {:ok, info} <- match(thread) do
8785
query =
8886
from(r in AbuseReport,
@@ -354,7 +352,7 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
354352
report
355353
|> Map.get(thread)
356354
|> Map.take(@export_article_keys)
357-
|> Map.merge(%{thread: thread})
355+
|> Map.merge(%{thread: thread |> to_string |> String.upcase()})
358356
end
359357

360358
def extract_article_comment_info(%AbuseReport{} = report) do

lib/groupher_server_web/schema/cms/cms_types.ex

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,14 +396,23 @@ defmodule GroupherServerWeb.Schema.CMS.Types do
396396
timestamp_fields()
397397
end
398398

399+
####### reports
400+
object :abuse_report_case do
401+
field(:reason, :string)
402+
field(:attr, :string)
403+
field(:user, :common_user)
404+
end
405+
399406
object :abuse_report do
400407
field(:id, :id)
408+
field(:article, :common_article)
401409
# field(:article_comment, :article_comment, resolve: dataloader(CMS, :article_comment))
402410
field(:article_comment, :common_article_comment)
403-
# field(:account, :user)
411+
field(:account, :common_user)
404412
field(:report_cases_count, :integer)
405413
field(:deal_with, :string)
406414
field(:operate_user, :user)
415+
field(:report_cases, list_of(:abuse_report_case))
407416

408417
timestamp_fields()
409418
end
@@ -494,6 +503,4 @@ defmodule GroupherServerWeb.Schema.CMS.Types do
494503
field(:is_comment_locked, :boolean)
495504
# field(:linked_posts_count, :integer)
496505
end
497-
498-
####### reports
499506
end

test/groupher_server_web/mutation/cms/articles/job_report_test.exs renamed to test/groupher_server_web/mutation/cms/abuse_reports/job_report_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule GroupherServer.Test.Mutation.Articles.JobReport do
1+
defmodule GroupherServer.Test.Mutation.AbuseReports.JobReport do
22
use GroupherServer.TestTools
33

44
alias GroupherServer.CMS

test/groupher_server_web/mutation/cms/articles/post_report_test.exs renamed to test/groupher_server_web/mutation/cms/abuse_reports/post_report_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule GroupherServer.Test.Mutation.Articles.PostReport do
1+
defmodule GroupherServer.Test.Mutation.AbuseReports.PostReport do
22
use GroupherServer.TestTools
33

44
alias GroupherServer.CMS

test/groupher_server_web/mutation/cms/articles/repo_report_test.exs renamed to test/groupher_server_web/mutation/cms/abuse_reports/repo_report_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule GroupherServer.Test.Mutation.Articles.RepoReport do
1+
defmodule GroupherServer.Test.Mutation.AbuseReports.RepoReport do
22
use GroupherServer.TestTools
33

44
alias GroupherServer.CMS
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
defmodule GroupherServer.Test.Query.AbuseReports.AccountReport do
2+
@moduledoc false
3+
4+
use GroupherServer.TestTools
5+
6+
alias GroupherServer.CMS
7+
8+
setup do
9+
{:ok, user} = db_insert(:user)
10+
{:ok, user2} = db_insert(:user)
11+
12+
{:ok, community} = db_insert(:community)
13+
guest_conn = simu_conn(:guest)
14+
15+
{:ok, ~m(guest_conn community user user2)a}
16+
end
17+
18+
describe "[query paged_posts filter pagination]" do
19+
# id
20+
@query """
21+
query($filter: ReportFilter!) {
22+
pagedAbuseReports(filter: $filter) {
23+
entries {
24+
id
25+
dealWith
26+
operateUser {
27+
id
28+
login
29+
}
30+
articleComment {
31+
id
32+
bodyHtml
33+
author {
34+
login
35+
}
36+
}
37+
account {
38+
login
39+
}
40+
reportCases {
41+
reason
42+
attr
43+
user {
44+
login
45+
}
46+
}
47+
}
48+
totalPages
49+
totalCount
50+
pageSize
51+
pageNumber
52+
}
53+
}
54+
"""
55+
@tag :wip2
56+
test "should get pagination info", ~m(guest_conn user user2)a do
57+
{:ok, _report} = CMS.report_article(:account, user.id, "reason", "attr_info", user2)
58+
59+
variables = %{filter: %{content_type: "ACCOUNT", page: 1, size: 10}}
60+
results = guest_conn |> query_result(@query, variables, "pagedAbuseReports")
61+
62+
report = results["entries"] |> List.first()
63+
assert results |> is_valid_pagination?
64+
assert get_in(report, ["account", "login"]) == user.login
65+
end
66+
end
67+
end
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
defmodule GroupherServer.Test.Query.AbuseReports.JobReport do
2+
@moduledoc false
3+
4+
use GroupherServer.TestTools
5+
6+
alias GroupherServer.CMS
7+
8+
setup do
9+
{:ok, job} = db_insert(:job)
10+
{:ok, user} = db_insert(:user)
11+
{:ok, user2} = db_insert(:user)
12+
13+
{:ok, community} = db_insert(:community)
14+
job_attrs = mock_attrs(:job, %{community_id: community.id})
15+
16+
guest_conn = simu_conn(:guest)
17+
18+
{:ok, ~m(guest_conn community job job_attrs user user2)a}
19+
end
20+
21+
describe "[query paged_jobs filter pagination]" do
22+
# id
23+
@query """
24+
query($filter: ReportFilter!) {
25+
pagedAbuseReports(filter: $filter) {
26+
entries {
27+
id
28+
dealWith
29+
article {
30+
id
31+
thread
32+
title
33+
}
34+
operateUser {
35+
id
36+
login
37+
}
38+
articleComment {
39+
id
40+
bodyHtml
41+
author {
42+
login
43+
}
44+
}
45+
reportCases {
46+
reason
47+
attr
48+
user {
49+
login
50+
}
51+
}
52+
}
53+
totalPages
54+
totalCount
55+
pageSize
56+
pageNumber
57+
}
58+
}
59+
"""
60+
@tag :wip2
61+
test "should get pagination info", ~m(guest_conn community job_attrs user user2)a do
62+
{:ok, job} = CMS.create_content(community, :job, job_attrs, user)
63+
{:ok, job2} = CMS.create_content(community, :job, job_attrs, user)
64+
65+
{:ok, _report} = CMS.report_article(:job, job.id, "reason", "attr_info", user)
66+
{:ok, _report} = CMS.report_article(:job, job2.id, "reason", "attr_info", user2)
67+
68+
variables = %{filter: %{content_type: "JOB", page: 1, size: 10}}
69+
results = guest_conn |> query_result(@query, variables, "pagedAbuseReports")
70+
71+
assert results |> is_valid_pagination?
72+
assert results["totalCount"] == 2
73+
end
74+
75+
@tag :wip2
76+
test "support search with id", ~m(guest_conn user user2)a do
77+
{:ok, job} = db_insert(:job)
78+
{:ok, job2} = db_insert(:job)
79+
80+
{:ok, _report} = CMS.report_article(:job, job.id, "reason", "attr_info", user)
81+
{:ok, _report} = CMS.report_article(:job, job2.id, "reason", "attr_info", user2)
82+
83+
variables = %{filter: %{content_type: "JOB", content_id: job.id, page: 1, size: 10}}
84+
results = guest_conn |> query_result(@query, variables, "pagedAbuseReports")
85+
86+
report = results["entries"] |> List.first()
87+
88+
assert get_in(report, ["article", "thread"]) == "JOB"
89+
assert get_in(report, ["article", "id"]) == to_string(job.id)
90+
91+
assert results |> is_valid_pagination?
92+
assert results["totalCount"] == 1
93+
end
94+
95+
@tag :wip3
96+
test "support article_comment", ~m(guest_conn job user)a do
97+
{:ok, comment} = CMS.create_article_comment(:job, job.id, "comment", user)
98+
{:ok, _} = CMS.report_article_comment(comment.id, "reason", "attr", user)
99+
100+
variables = %{filter: %{content_type: "ARTICLE_COMMENT", page: 1, size: 10}}
101+
results = guest_conn |> query_result(@query, variables, "pagedAbuseReports")
102+
103+
report = results["entries"] |> List.first()
104+
report_case = get_in(report, ["reportCases"])
105+
assert is_list(report_case)
106+
107+
assert get_in(report, ["articleComment", "bodyHtml"]) == "comment"
108+
assert get_in(report, ["articleComment", "id"]) == to_string(comment.id)
109+
assert not is_nil(get_in(report, ["articleComment", "author", "login"]))
110+
end
111+
end
112+
end

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

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@ defmodule GroupherServer.Test.Query.AbuseReports.PostReport do
33

44
use GroupherServer.TestTools
55

6-
import Helper.Utils, only: [get_config: 2]
7-
86
alias GroupherServer.CMS
9-
alias GroupherServer.Repo
10-
11-
alias CMS.Post
127

138
setup do
149
{:ok, post} = db_insert(:post)
@@ -31,6 +26,11 @@ defmodule GroupherServer.Test.Query.AbuseReports.PostReport do
3126
entries {
3227
id
3328
dealWith
29+
article {
30+
id
31+
thread
32+
title
33+
}
3434
operateUser {
3535
id
3636
login
@@ -42,6 +42,13 @@ defmodule GroupherServer.Test.Query.AbuseReports.PostReport do
4242
login
4343
}
4444
}
45+
reportCases {
46+
reason
47+
attr
48+
user {
49+
login
50+
}
51+
}
4552
}
4653
totalPages
4754
totalCount
@@ -50,29 +57,53 @@ defmodule GroupherServer.Test.Query.AbuseReports.PostReport do
5057
}
5158
}
5259
"""
53-
@tag :wip
60+
@tag :wip2
5461
test "should get pagination info", ~m(guest_conn community post_attrs user user2)a do
5562
{:ok, post} = CMS.create_content(community, :post, post_attrs, user)
63+
{:ok, post2} = CMS.create_content(community, :post, post_attrs, user)
64+
5665
{:ok, _report} = CMS.report_article(:post, post.id, "reason", "attr_info", user)
57-
{:ok, _report} = CMS.report_article(:post, post.id, "reason", "attr_info", user2)
66+
{:ok, _report} = CMS.report_article(:post, post2.id, "reason", "attr_info", user2)
5867

5968
variables = %{filter: %{content_type: "POST", page: 1, size: 10}}
6069
results = guest_conn |> query_result(@query, variables, "pagedAbuseReports")
6170

6271
assert results |> is_valid_pagination?
72+
assert results["totalCount"] == 2
6373
end
6474

6575
@tag :wip2
76+
test "support search with id", ~m(guest_conn user user2)a do
77+
{:ok, post} = db_insert(:post)
78+
{:ok, post2} = db_insert(:post)
79+
80+
{:ok, _report} = CMS.report_article(:post, post.id, "reason", "attr_info", user)
81+
{:ok, _report} = CMS.report_article(:post, post2.id, "reason", "attr_info", user2)
82+
83+
variables = %{filter: %{content_type: "POST", content_id: post.id, page: 1, size: 10}}
84+
results = guest_conn |> query_result(@query, variables, "pagedAbuseReports")
85+
86+
report = results["entries"] |> List.first()
87+
88+
assert get_in(report, ["article", "thread"]) == "POST"
89+
assert get_in(report, ["article", "id"]) == to_string(post.id)
90+
91+
assert results |> is_valid_pagination?
92+
assert results["totalCount"] == 1
93+
end
94+
95+
@tag :wip3
6696
test "support article_comment", ~m(guest_conn post user)a do
6797
{:ok, comment} = CMS.create_article_comment(:post, post.id, "comment", user)
6898
{:ok, _} = CMS.report_article_comment(comment.id, "reason", "attr", user)
6999

70100
variables = %{filter: %{content_type: "ARTICLE_COMMENT", page: 1, size: 10}}
71101
results = guest_conn |> query_result(@query, variables, "pagedAbuseReports")
72102

73-
IO.inspect(results, label: "results- -")
74-
75103
report = results["entries"] |> List.first()
104+
report_case = get_in(report, ["reportCases"])
105+
assert is_list(report_case)
106+
76107
assert get_in(report, ["articleComment", "bodyHtml"]) == "comment"
77108
assert get_in(report, ["articleComment", "id"]) == to_string(comment.id)
78109
assert not is_nil(get_in(report, ["articleComment", "author", "login"]))

0 commit comments

Comments
 (0)