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

Commit 2217b56

Browse files
committed
chore(article-comments): wip && clean up
1 parent d736803 commit 2217b56

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+58
-224
lines changed

lib/groupher_server/cms/repo.ex

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ defmodule GroupherServer.CMS.Repo do
77

88
import Ecto.Changeset
99

10-
alias GroupherServer.CMS
10+
alias GroupherServer.{CMS, Accounts}
1111

1212
alias CMS.{
1313
Author,
1414
Embeds,
15+
ArticleComment,
1516
Community,
1617
RepoContributor,
1718
RepoLang,
@@ -24,7 +25,7 @@ defmodule GroupherServer.CMS.Repo do
2425

2526
@timestamps_opts [type: :utc_datetime_usec]
2627
@required_fields ~w(title owner_name owner_url repo_url desc readme star_count issues_count prs_count fork_count watch_count)a
27-
@optional_fields ~w(original_community_id last_sync homepage_url release_tag license upvotes_count collects_count mark_delete)a
28+
@optional_fields ~w(original_community_id last_sync homepage_url release_tag license upvotes_count collects_count mark_delete article_comments_count article_comments_participators_count)a
2829

2930
@type t :: %Repo{}
3031
schema "cms_repos" do
@@ -73,6 +74,12 @@ defmodule GroupherServer.CMS.Repo do
7374

7475
field(:last_sync, :utc_datetime)
7576

77+
has_many(:article_comments, {"articles_comments", ArticleComment})
78+
field(:article_comments_count, :integer, default: 0)
79+
field(:article_comments_participators_count, :integer, default: 0)
80+
# 评论参与者,只保留最近 5 个
81+
embeds_many(:article_comments_participators, Accounts.User, on_replace: :delete)
82+
7683
many_to_many(
7784
:tags,
7885
Tag,

lib/groupher_server_web/schema/cms/cms_types.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ defmodule GroupherServerWeb.Schema.CMS.Types do
178178
field(:original_community, :community, resolve: dataloader(CMS, :original_community))
179179
field(:communities, list_of(:community), resolve: dataloader(CMS, :communities))
180180

181+
article_comments_fields()
181182
viewer_has_state_fields()
182183
# comments_count
183184
# comments_participators
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
defmodule GroupherServer.Repo.Migrations.AddCommentSupportForRepo do
2+
use Ecto.Migration
3+
4+
def change do
5+
alter table(:cms_repos) do
6+
add(:article_comments_participators_count, :integer, default: 0)
7+
add(:article_comments_count, :integer, default: 0)
8+
add(:article_comments_participators, :map)
9+
end
10+
end
11+
end

test/groupher_server/accounts/achievement_test.exs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ defmodule GroupherServer.Test.Accounts.Achievement do
5252
describe "[Accounts Achievement funtion]" do
5353
alias Accounts.Achievement
5454

55-
@tag :wip
5655
test "Accounts.achieve should inc / dec achievement by parts", ~m(user)a do
5756
user |> Accounts.achieve(:inc, :follow)
5857
user |> Accounts.achieve(:inc, :upvote)
@@ -77,7 +76,6 @@ defmodule GroupherServer.Test.Accounts.Achievement do
7776
assert achievement.reputation == 0
7877
end
7978

80-
@tag :wip
8179
test "Accounts.achieve can not minus count < 0", ~m(user)a do
8280
user |> Accounts.achieve(:dec, :follow)
8381
user |> Accounts.achieve(:dec, :upvote)

test/groupher_server/accounts/collect_folder_test.exs

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
2222
end
2323

2424
describe "[collect folder curd]" do
25-
@tag :wip
2625
test "user can create collect folder", ~m(user)a do
2726
folder_title = "test folder"
2827

@@ -35,23 +34,20 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
3534
assert folder.meta |> Map.from_struct() |> Map.delete(:id) == @default_meta
3635
end
3736

38-
@tag :wip
3937
test "user create dup collect folder fails", ~m(user)a do
4038
{:ok, _folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
4139
{:error, reason} = Accounts.create_collect_folder(%{title: "test folder"}, user)
4240

4341
assert reason |> is_error?(:already_exsit)
4442
end
4543

46-
@tag :wip
4744
test "user can delete a empty collect folder", ~m(user)a do
4845
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
4946
{:ok, _} = Accounts.delete_collect_folder(folder.id)
5047

5148
assert {:error, _} = ORM.find(CMS.ArticleCollect, folder.id)
5249
end
5350

54-
@tag :wip
5551
test "user can not delete a non-empty collect folder", ~m(post user)a do
5652
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
5753
{:ok, _folder} = Accounts.add_to_collect(:post, post.id, folder.id, user)
@@ -61,7 +57,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
6157
assert reason |> is_error?(:delete_no_empty_collect_folder)
6258
end
6359

64-
@tag :wip
6560
test "user can get public collect-folder list", ~m(user)a do
6661
{:ok, _folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
6762
{:ok, _folder} = Accounts.create_collect_folder(%{title: "test folder2"}, user)
@@ -72,7 +67,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
7267
assert result.total_count == 2
7368
end
7469

75-
@tag :wip
7670
test "user can get public collect-folder list by thread", ~m(user post)a do
7771
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
7872
{:ok, _folder} = Accounts.create_collect_folder(%{title: "test folder2"}, user)
@@ -87,7 +81,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
8781
assert result.entries |> List.first() |> Map.get(:id) == folder.id
8882
end
8983

90-
@tag :wip
9184
test "user can not get private folder list of other user", ~m(user user2)a do
9285
{:ok, _folder} =
9386
Accounts.create_collect_folder(%{title: "test folder", private: true}, user2)
@@ -100,7 +93,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
10093
assert result.total_count == 1
10194
end
10295

103-
@tag :wip
10496
test "collect creator can get both public and private folder list", ~m(user)a do
10597
{:ok, _folder} =
10698
Accounts.create_collect_folder(%{title: "test folder", private: true}, user)
@@ -112,7 +104,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
112104
assert result.total_count == 2
113105
end
114106

115-
@tag :wip
116107
test "user can update a collect folder", ~m(user)a do
117108
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder", private: true}, user)
118109

@@ -128,7 +119,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
128119
end
129120

130121
describe "[add/remove from collect]" do
131-
@tag :wip
132122
test "can add post to exsit colect-folder", ~m(user post)a do
133123
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
134124

@@ -139,7 +129,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
139129
assert folder.collects |> List.first() |> Map.get(:post_id) == post.id
140130
end
141131

142-
@tag :wip
143132
test "can not collect some article in one collect-folder", ~m(user post)a do
144133
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
145134
{:ok, folder} = Accounts.add_to_collect(:post, post.id, folder.id, user)
@@ -148,7 +137,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
148137
assert reason |> is_error?(:already_collected_in_folder)
149138
end
150139

151-
@tag :wip
152140
test "colect-folder should in article_collect's meta info too", ~m(user post)a do
153141
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
154142
{:ok, folder} = Accounts.add_to_collect(:post, post.id, folder.id, user)
@@ -159,7 +147,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
159147
assert article_collect_folder.id == folder.id
160148
end
161149

162-
@tag :wip
163150
test "one article collected in different collect-folder should only have one article-collect record",
164151
~m(user post)a do
165152
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
@@ -175,7 +162,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
175162
assert result.total_count == 1
176163
end
177164

178-
@tag :wip
179165
test "can remove post to exsit colect-folder", ~m(user post post2)a do
180166
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
181167
{:ok, _folder} = Accounts.add_to_collect(:post, post.id, folder.id, user)
@@ -191,7 +177,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
191177
assert result.entries |> List.first() |> Map.get(:id) == post2.id
192178
end
193179

194-
@tag :wip
195180
test "can remove post to exsit colect-folder should update article collect meta",
196181
~m(user post)a do
197182
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
@@ -210,7 +195,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
210195
assert article_collect.id == folder2.id
211196
end
212197

213-
@tag :wip
214198
test "post belongs to other folder should keep article collect record",
215199
~m(user post)a do
216200
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
@@ -231,7 +215,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
231215
assert result.total_count == 0
232216
end
233217

234-
@tag :wip
235218
test "add post to exsit colect-folder should update meta", ~m(user post post2 job)a do
236219
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
237220

@@ -248,7 +231,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
248231
assert folder.meta.job_count == 1
249232
end
250233

251-
@tag :wip
252234
test "remove post to exsit colect-folder should update meta", ~m(user post post2 job)a do
253235
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
254236
{:ok, _folder} = Accounts.add_to_collect(:post, post.id, folder.id, user)
@@ -270,7 +252,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
270252
assert not folder.meta.has_job
271253
end
272254

273-
@tag :wip
274255
test "can get articles of a collect folder", ~m(user post job)a do
275256
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder"}, user)
276257
{:ok, _folder} = Accounts.add_to_collect(:post, post.id, folder.id, user)
@@ -291,7 +272,6 @@ defmodule GroupherServer.Test.Accounts.CollectFolder do
291272
assert collect_post.title == post.title
292273
end
293274

294-
@tag :wip
295275
test "can not get articles of a private collect folder if not owner",
296276
~m(user user2 post job)a do
297277
{:ok, folder} = Accounts.create_collect_folder(%{title: "test folder", private: true}, user)

test/groupher_server/accounts/published_contents_test.exs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ defmodule GroupherServer.Test.Accounts.PublishedContents do
6767
assert results.total_count == 0
6868
end
6969

70-
@tag :wip
7170
test "user can get paged published jobs", ~m(user user2 community community2)a do
7271
pub_jobs =
7372
Enum.reduce(1..@publish_count, [], fn _, acc ->

test/groupher_server/accounts/reacted_articles_test.exs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ defmodule GroupherServer.Test.Accounts.ReactedContents do
1414
end
1515

1616
describe "[user upvoted articles]" do
17-
@tag :wip
1817
test "user can get paged upvoted common articles", ~m(user post job)a do
1918
{:ok, _} = CMS.upvote_article(:post, post.id, user)
2019
{:ok, _} = CMS.upvote_article(:job, job.id, user)
@@ -33,7 +32,6 @@ defmodule GroupherServer.Test.Accounts.ReactedContents do
3332
assert [:id, :thread, :title, :upvotes_count] == article_job |> Map.keys()
3433
end
3534

36-
@tag :wip
3735
test "user can get paged upvoted posts by thread filter", ~m(user post job)a do
3836
{:ok, _} = CMS.upvote_article(:post, post.id, user)
3937
{:ok, _} = CMS.upvote_article(:job, job.id, user)
@@ -46,7 +44,6 @@ defmodule GroupherServer.Test.Accounts.ReactedContents do
4644
assert 1 == articles |> Map.get(:total_count)
4745
end
4846

49-
@tag :wip
5047
test "user can get paged upvoted jobs by thread filter", ~m(user post job)a do
5148
{:ok, _} = CMS.upvote_article(:post, post.id, user)
5249
{:ok, _} = CMS.upvote_article(:job, job.id, user)

test/groupher_server/accounts/utils_test.exs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ defmodule GroupherServer.Test.Accounts.Utils do
88
@cache_pool :user_login
99

1010
describe "[get userid]" do
11-
@tag :wip
1211
test "get_userid_and_cache should work" do
1312
{:ok, user} = db_insert(:user)
1413

test/groupher_server/cms/abuse_reports/comment_report_test.exs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ defmodule GroupherServer.Test.CMS.AbuseReports.CommentReport do
5151
assert List.last(report_cases).user.login == user2.login
5252
end
5353

54-
@tag :wip
5554
test "same user can not report a comment twice", ~m(user post)a do
5655
{:ok, comment} = CMS.create_article_comment(:post, post.id, "commment", user)
5756
{:ok, comment} = CMS.report_article_comment(comment.id, "reason", "attr", user)

test/groupher_server/cms/article_collect_test.exs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ defmodule GroupherServer.Test.ArticleCollect do
1818
end
1919

2020
describe "[cms post collect]" do
21-
@tag :wip
2221
test "post can be collect && collects_count should inc by 1",
2322
~m(user user2 community post_attrs)a do
2423
{:ok, post} = CMS.create_article(community, :post, post_attrs, user)
@@ -35,7 +34,6 @@ defmodule GroupherServer.Test.ArticleCollect do
3534
assert article.collects_count == 2
3635
end
3736

38-
@tag :wip
3937
test "post can be undo collect && collects_count should dec by 1",
4038
~m(user community post_attrs)a do
4139
{:ok, post} = CMS.create_article(community, :post, post_attrs, user)
@@ -50,7 +48,6 @@ defmodule GroupherServer.Test.ArticleCollect do
5048
assert article.collects_count == 0
5149
end
5250

53-
@tag :wip
5451
test "can get collect_users", ~m(user user2 community post_attrs)a do
5552
{:ok, post} = CMS.create_article(community, :post, post_attrs, user)
5653

@@ -100,7 +97,6 @@ defmodule GroupherServer.Test.ArticleCollect do
10097
end
10198

10299
describe "[cms job collect]" do
103-
@tag :wip
104100
test "job can be collect && collects_count should inc by 1",
105101
~m(user user2 community job_attrs)a do
106102
{:ok, job} = CMS.create_article(community, :job, job_attrs, user)
@@ -116,7 +112,6 @@ defmodule GroupherServer.Test.ArticleCollect do
116112
assert article.collects_count == 2
117113
end
118114

119-
@tag :wip
120115
test "job can be undo collect && collects_count should dec by 1",
121116
~m(user community job_attrs)a do
122117
{:ok, job} = CMS.create_article(community, :job, job_attrs, user)
@@ -132,7 +127,6 @@ defmodule GroupherServer.Test.ArticleCollect do
132127
assert article.collects_count == 0
133128
end
134129

135-
@tag :wip
136130
test "can get collect_users", ~m(user user2 community job_attrs)a do
137131
{:ok, job} = CMS.create_article(community, :job, job_attrs, user)
138132

0 commit comments

Comments
 (0)