Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commitc6f3ac8

Browse files
committed
chore(radar): add tests
1 parent733170e commitc6f3ac8

File tree

30 files changed

+6503
-0
lines changed

30 files changed

+6503
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
defmoduleGroupherServer.Test.Accounts.Published.Radardo
2+
useGroupherServer.TestTools
3+
4+
aliasGroupherServer.{Accounts,CMS}
5+
aliasAccounts.Model.User
6+
aliasHelper.ORM
7+
8+
@publish_count10
9+
10+
setupdo
11+
{:ok,user}=db_insert(:user)
12+
{:ok,user2}=db_insert(:user)
13+
{:ok,radar}=db_insert(:radar)
14+
{:ok,community}=db_insert(:community)
15+
{:ok,community2}=db_insert(:community)
16+
17+
{:ok,~m(user user2 radar community community2)a}
18+
end
19+
20+
describe"[publised radars]"do
21+
test"create radar should update user published meta",~m(community user)ado
22+
radar_attrs=mock_attrs(:radar,%{community_id:community.id})
23+
{:ok,_radar}=CMS.create_article(community,:radar,radar_attrs,user)
24+
{:ok,_radar}=CMS.create_article(community,:radar,radar_attrs,user)
25+
26+
{:ok,user}=ORM.find(User,user.id)
27+
assertuser.meta.published_radars_count==2
28+
end
29+
30+
test"fresh user get empty paged published radars",~m(user)ado
31+
{:ok,results}=Accounts.paged_published_articles(user,:radar,%{page:1,size:20})
32+
33+
assertresults|>is_valid_pagination?(:raw)
34+
assertresults.total_count==0
35+
end
36+
37+
test"user can get paged published radars",~m(user user2 community community2)ado
38+
pub_radars=
39+
Enum.reduce(1..@publish_count,[],fn_,acc->
40+
radar_attrs=mock_attrs(:radar,%{community_id:community.id})
41+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
42+
43+
acc++[radar]
44+
end)
45+
46+
pub_radars2=
47+
Enum.reduce(1..@publish_count,[],fn_,acc->
48+
radar_attrs=mock_attrs(:radar,%{community_id:community2.id})
49+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
50+
51+
acc++[radar]
52+
end)
53+
54+
# unrelated other user
55+
Enum.reduce(1..5,[],fn_,acc->
56+
radar_attrs=mock_attrs(:radar,%{community_id:community.id})
57+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user2)
58+
59+
acc++[radar]
60+
end)
61+
62+
{:ok,results}=Accounts.paged_published_articles(user,:radar,%{page:1,size:20})
63+
64+
assertresults|>is_valid_pagination?(:raw)
65+
assertresults.total_count==@publish_count*2
66+
67+
random_radar_id=pub_radars|>Enum.random()|>Map.get(:id)
68+
random_radar_id2=pub_radars2|>Enum.random()|>Map.get(:id)
69+
assertresults.entries|>Enum.any?(&(&1.id==random_radar_id))
70+
assertresults.entries|>Enum.any?(&(&1.id==random_radar_id2))
71+
end
72+
end
73+
74+
describe"[publised radar comments]"do
75+
test"can get published article comments",~m(radar user)ado
76+
total_count=10
77+
78+
Enum.reduce(1..total_count,[],fn_,acc->
79+
{:ok,comment}=CMS.create_comment(:radar,radar.id,mock_comment(),user)
80+
acc++[comment]
81+
end)
82+
83+
filter=%{page:1,size:20}
84+
{:ok,articles}=Accounts.paged_published_comments(user,:radar,filter)
85+
86+
entries=articles.entries
87+
article=entries|>List.first()
88+
89+
assertarticle.article.id==radar.id
90+
assertarticle.article.title==radar.title
91+
end
92+
end
93+
end
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
defmoduleGroupherServer.Test.Accounts.Published.Worksdo
2+
useGroupherServer.TestTools
3+
4+
aliasGroupherServer.{Accounts,CMS}
5+
aliasAccounts.Model.User
6+
aliasHelper.ORM
7+
8+
@publish_count10
9+
10+
setupdo
11+
{:ok,user}=db_insert(:user)
12+
{:ok,user2}=db_insert(:user)
13+
{:ok,works}=db_insert(:works)
14+
{:ok,community}=db_insert(:community)
15+
{:ok,community2}=db_insert(:community)
16+
17+
{:ok,~m(user user2 works community community2)a}
18+
end
19+
20+
describe"[publised workss]"do
21+
test"create works should update user published meta",~m(community user)ado
22+
works_attrs=mock_attrs(:works,%{community_id:community.id})
23+
{:ok,_works}=CMS.create_article(community,:works,works_attrs,user)
24+
{:ok,_works}=CMS.create_article(community,:works,works_attrs,user)
25+
26+
{:ok,user}=ORM.find(User,user.id)
27+
assertuser.meta.published_workss_count==2
28+
end
29+
30+
test"fresh user get empty paged published workss",~m(user)ado
31+
{:ok,results}=Accounts.paged_published_articles(user,:works,%{page:1,size:20})
32+
33+
assertresults|>is_valid_pagination?(:raw)
34+
assertresults.total_count==0
35+
end
36+
37+
test"user can get paged published workss",~m(user user2 community community2)ado
38+
pub_workss=
39+
Enum.reduce(1..@publish_count,[],fn_,acc->
40+
works_attrs=mock_attrs(:works,%{community_id:community.id})
41+
{:ok,works}=CMS.create_article(community,:works,works_attrs,user)
42+
43+
acc++[works]
44+
end)
45+
46+
pub_workss2=
47+
Enum.reduce(1..@publish_count,[],fn_,acc->
48+
works_attrs=mock_attrs(:works,%{community_id:community2.id})
49+
{:ok,works}=CMS.create_article(community,:works,works_attrs,user)
50+
51+
acc++[works]
52+
end)
53+
54+
# unrelated other user
55+
Enum.reduce(1..5,[],fn_,acc->
56+
works_attrs=mock_attrs(:works,%{community_id:community.id})
57+
{:ok,works}=CMS.create_article(community,:works,works_attrs,user2)
58+
59+
acc++[works]
60+
end)
61+
62+
{:ok,results}=Accounts.paged_published_articles(user,:works,%{page:1,size:20})
63+
64+
assertresults|>is_valid_pagination?(:raw)
65+
assertresults.total_count==@publish_count*2
66+
67+
random_works_id=pub_workss|>Enum.random()|>Map.get(:id)
68+
random_works_id2=pub_workss2|>Enum.random()|>Map.get(:id)
69+
assertresults.entries|>Enum.any?(&(&1.id==random_works_id))
70+
assertresults.entries|>Enum.any?(&(&1.id==random_works_id2))
71+
end
72+
end
73+
74+
describe"[publised works comments]"do
75+
test"can get published article comments",~m(works user)ado
76+
total_count=10
77+
78+
Enum.reduce(1..total_count,[],fn_,acc->
79+
{:ok,comment}=CMS.create_comment(:works,works.id,mock_comment(),user)
80+
acc++[comment]
81+
end)
82+
83+
filter=%{page:1,size:20}
84+
{:ok,articles}=Accounts.paged_published_comments(user,:works,filter)
85+
86+
entries=articles.entries
87+
article=entries|>List.first()
88+
89+
assertarticle.article.id==works.id
90+
assertarticle.article.title==works.title
91+
end
92+
end
93+
end
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
defmoduleGroupherServer.Test.CMS.AbuseReports.RadarReportdo
2+
@moduledocfalse
3+
4+
useGroupherServer.TestTools
5+
6+
aliasHelper.ORM
7+
aliasGroupherServer.CMS
8+
aliasCMS.Model.Radar
9+
10+
setupdo
11+
{:ok,user}=db_insert(:user)
12+
{:ok,user2}=db_insert(:user)
13+
14+
{:ok,community}=db_insert(:community)
15+
radar_attrs=mock_attrs(:radar,%{community_id:community.id})
16+
17+
{:ok,~m(user user2 community radar_attrs)a}
18+
end
19+
20+
describe"[article radar report/unreport]"do
21+
test"list article reports should work",~m(community user user2 radar_attrs)ado
22+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
23+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
24+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user2)
25+
26+
filter=%{content_type::radar,content_id:radar.id,page:1,size:20}
27+
{:ok,all_reports}=CMS.paged_reports(filter)
28+
29+
report=all_reports.entries|>List.first()
30+
assertreport.article.id==radar.id
31+
assertreport.article.thread=="WORKS"
32+
end
33+
34+
test"report a radar should have a abuse report record",~m(community user radar_attrs)ado
35+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
36+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
37+
38+
filter=%{content_type::radar,content_id:radar.id,page:1,size:20}
39+
{:ok,all_reports}=CMS.paged_reports(filter)
40+
41+
report=List.first(all_reports.entries)
42+
report_cases=report.report_cases
43+
44+
assertreport.article.id==radar.id
45+
assertall_reports.total_count==1
46+
assertreport.report_cases_count==1
47+
assertList.first(report_cases).user.login==user.login
48+
49+
{:ok,radar}=ORM.find(Radar,radar.id)
50+
assertradar.meta.reported_count==1
51+
assertuser.idinradar.meta.reported_user_ids
52+
end
53+
54+
test"can undo a report",~m(community user radar_attrs)ado
55+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
56+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
57+
{:ok,_report}=CMS.undo_report_article(:radar,radar.id,user)
58+
59+
filter=%{content_type::radar,content_id:radar.id,page:1,size:20}
60+
{:ok,all_reports}=CMS.paged_reports(filter)
61+
assertall_reports.total_count==0
62+
63+
{:ok,radar}=ORM.find(Radar,radar.id)
64+
assertuser.idnot inradar.meta.reported_user_ids
65+
end
66+
67+
test"can undo a existed report",~m(community user user2 radar_attrs)ado
68+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
69+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
70+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user2)
71+
{:ok,_report}=CMS.undo_report_article(:radar,radar.id,user)
72+
73+
filter=%{content_type::radar,content_id:radar.id,page:1,size:20}
74+
{:ok,all_reports}=CMS.paged_reports(filter)
75+
assertall_reports.total_count==1
76+
77+
{:ok,radar}=ORM.find(Radar,radar.id)
78+
79+
assertuser2.idinradar.meta.reported_user_ids
80+
assertuser.idnot inradar.meta.reported_user_ids
81+
end
82+
83+
test"can undo a report with other user report it too",
84+
~m(community user user2 radar_attrs)ado
85+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
86+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
87+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user2)
88+
89+
filter=%{content_type::radar,content_id:radar.id,page:1,size:20}
90+
{:ok,all_reports}=CMS.paged_reports(filter)
91+
assertall_reports.total_count==1
92+
93+
report=all_reports.entries|>List.first()
94+
assertreport.report_cases|>length==2
95+
assertEnum.any?(report.report_cases,&(&1.user.login==user.login))
96+
assertEnum.any?(report.report_cases,&(&1.user.login==user2.login))
97+
98+
{:ok,_report}=CMS.undo_report_article(:radar,radar.id,user)
99+
100+
filter=%{content_type::radar,content_id:radar.id,page:1,size:20}
101+
{:ok,all_reports}=CMS.paged_reports(filter)
102+
assertall_reports.total_count==1
103+
104+
report=all_reports.entries|>List.first()
105+
assertreport.report_cases|>length==1
106+
assertEnum.any?(report.report_cases,&(&1.user.login==user2.login))
107+
end
108+
109+
test"different user report a comment should have same report with different report cases",
110+
~m(community user user2 radar_attrs)ado
111+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
112+
113+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
114+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason2","attr_info 2",user2)
115+
116+
filter=%{content_type::radar,content_id:radar.id,page:1,size:20}
117+
{:ok,all_reports}=CMS.paged_reports(filter)
118+
119+
report=List.first(all_reports.entries)
120+
report_cases=report.report_cases
121+
122+
assertall_reports.total_count==1
123+
assertlength(report_cases)==2
124+
assertreport.report_cases_count==2
125+
126+
assertList.first(report_cases).user.login==user.login
127+
assertList.last(report_cases).user.login==user2.login
128+
end
129+
130+
test"same user can not report a comment twice",~m(community radar_attrs user)ado
131+
{:ok,radar}=CMS.create_article(community,:radar,radar_attrs,user)
132+
133+
{:ok,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
134+
assert{:error,_report}=CMS.report_article(:radar,radar.id,"reason","attr_info",user)
135+
end
136+
end
137+
end

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp