From 4a0ccc0b8618fd402313220e28a059fbf9a860af Mon Sep 17 00:00:00 2001 From: mydearxym Date: Sat, 29 May 2021 22:56:26 +0800 Subject: [PATCH] refactor(user): remove editable_communities in user model --- .../resolvers/accounts_resolver.ex | 18 +++----- .../schema/account/account_queries.ex | 2 +- .../schema/account/account_types.ex | 10 ---- .../query/accounts/achievement_test.exs | 46 +++---------------- 4 files changed, 13 insertions(+), 63 deletions(-) diff --git a/lib/groupher_server_web/resolvers/accounts_resolver.ex b/lib/groupher_server_web/resolvers/accounts_resolver.ex index a92b920f8..b8e973799 100644 --- a/lib/groupher_server_web/resolvers/accounts_resolver.ex +++ b/lib/groupher_server_web/resolvers/accounts_resolver.ex @@ -197,24 +197,18 @@ defmodule GroupherServerWeb.Resolvers.Accounts do end # paged communities which the user it's the editor - def editable_communities(_root, ~m(user_id filter)a, _info) do - Accounts.paged_editable_communities(%User{id: user_id}, filter) + def editable_communities(_root, ~m(login filter)a, _info) do + with {:ok, user_id} <- Accounts.get_userid_and_cache(login) do + Accounts.paged_editable_communities(%User{id: user_id}, filter) + else + _ -> raise_error(:not_exsit, "#{login} not found") + end end def editable_communities(_root, ~m(filter)a, %{context: %{cur_user: cur_user}}) do Accounts.paged_editable_communities(cur_user, filter) end - # def editable_communities(_root, ~m(filter)a, %{ - # context: %{cur_user: %{cur_passport: %{"cms" => %{"root" => true}}} = _cur_user} - # }) do - # CMS.Community |> ORM.find_all(filter) - # end - - def editable_communities(root, ~m(filter)a, _info) do - Accounts.paged_editable_communities(%User{id: root.id}, filter) - end - # TODO: refactor def get_mail_box_status(_root, _args, %{context: %{cur_user: cur_user}}) do Accounts.mailbox_status(cur_user) diff --git a/lib/groupher_server_web/schema/account/account_queries.ex b/lib/groupher_server_web/schema/account/account_queries.ex index c1dea0bdd..98c599cd8 100644 --- a/lib/groupher_server_web/schema/account/account_queries.ex +++ b/lib/groupher_server_web/schema/account/account_queries.ex @@ -129,7 +129,7 @@ defmodule GroupherServerWeb.Schema.Account.Queries do @desc "paged communities which the user it's the editor" field :editable_communities, :paged_communities do - arg(:user_id, :id) + arg(:login, :string) arg(:filter, non_null(:paged_filter)) middleware(M.PageSizeProof) diff --git a/lib/groupher_server_web/schema/account/account_types.ex b/lib/groupher_server_web/schema/account/account_types.ex index e7b5df214..1e15ad874 100644 --- a/lib/groupher_server_web/schema/account/account_types.ex +++ b/lib/groupher_server_web/schema/account/account_types.ex @@ -63,16 +63,6 @@ defmodule GroupherServerWeb.Schema.Account.Types do field(:subscribed_communities_count, :integer) - @desc "paged communities which the user it's the editor" - field :editable_communities, :paged_communities do - # arg(:filter, non_null(:paged_filter)) - arg(:filter, :paged_filter) - - # middleware(M.SeeMe) - middleware(M.PageSizeProof) - resolve(&R.Accounts.editable_communities/3) - end - @desc "get follower users count" field(:followers_count, :integer) diff --git a/test/groupher_server_web/query/accounts/achievement_test.exs b/test/groupher_server_web/query/accounts/achievement_test.exs index c15c2f23d..135c568b0 100644 --- a/test/groupher_server_web/query/accounts/achievement_test.exs +++ b/test/groupher_server_web/query/accounts/achievement_test.exs @@ -45,8 +45,8 @@ defmodule GroupherServer.Test.Query.Account.Achievement do describe "[account editable-communities]" do @query """ - query($userId: ID, $filter: PagedFilter!) { - editableCommunities(userId: $userId, filter: $filter) { + query($login: String, $filter: PagedFilter!) { + editableCommunities(login: $login, filter: $filter) { entries { id logo @@ -60,13 +60,15 @@ defmodule GroupherServer.Test.Query.Account.Achievement do } } """ + @tag :wip2 test "can get user's empty editable communities list", ~m(guest_conn user)a do - variables = %{userId: user.id, filter: %{page: 1, size: 20}} + variables = %{login: user.login, filter: %{page: 1, size: 20}} results = guest_conn |> query_result(@query, variables, "editableCommunities") assert results |> is_valid_pagination?(:empty) end + @tag :wip2 test "can get user's editable communities list when user is editor", ~m(guest_conn user)a do {:ok, community} = db_insert(:community) {:ok, community2} = db_insert(:community) @@ -75,49 +77,13 @@ defmodule GroupherServer.Test.Query.Account.Achievement do {:ok, _} = CMS.set_editor(community, title, user) {:ok, _} = CMS.set_editor(community2, title, user) - variables = %{userId: user.id, filter: %{page: 1, size: 20}} + variables = %{login: user.login, filter: %{page: 1, size: 20}} results = guest_conn |> query_result(@query, variables, "editableCommunities") assert results["totalCount"] == 2 assert results["entries"] |> Enum.any?(&(&1["id"] == to_string(community.id))) assert results["entries"] |> Enum.any?(&(&1["id"] == to_string(community2.id))) end - - @query """ - query($login: String!) { - user(login: $login) { - id - editableCommunities { - entries { - id - logo - title - raw - } - totalCount - } - } - } - """ - - test "user can get own editable communities list", ~m(user)a do - user_conn = simu_conn(:user, user) - - {:ok, community} = db_insert(:community) - {:ok, community2} = db_insert(:community) - - title = "chief editor" - {:ok, _} = CMS.set_editor(community, title, user) - {:ok, _} = CMS.set_editor(community2, title, user) - - variables = %{login: user.login, filter: %{page: 1, size: 20}} - results = user_conn |> query_result(@query, variables, "user") - editable_communities = results["editableCommunities"] - - assert editable_communities["totalCount"] == 2 - assert editable_communities["entries"] |> Enum.any?(&(&1["id"] == to_string(community.id))) - assert editable_communities["entries"] |> Enum.any?(&(&1["id"] == to_string(community2.id))) - end end describe "[account follow achieveMent]" do