From cdbb40c364229d2784a652167000f898894add01 Mon Sep 17 00:00:00 2001 From: mydearxym Date: Sat, 22 May 2021 17:56:06 +0800 Subject: [PATCH 1/4] refactor(search): extract search macros --- lib/groupher_server/cms/cms.ex | 2 +- lib/groupher_server/cms/delegates/search.ex | 38 ++++++------------ .../resolvers/cms_resolver.ex | 8 +++- .../schema/Helper/queries.ex | 19 +++++++++ .../schema/cms/cms_queries.ex | 39 ++++--------------- test/groupher_server/cms/search_test.exs | 32 +++++++-------- 6 files changed, 61 insertions(+), 77 deletions(-) diff --git a/lib/groupher_server/cms/cms.ex b/lib/groupher_server/cms/cms.ex index 629db816b..24beb663d 100644 --- a/lib/groupher_server/cms/cms.ex +++ b/lib/groupher_server/cms/cms.ex @@ -181,7 +181,7 @@ defmodule GroupherServer.CMS do defdelegate delete_passport(user), to: PassportCURD # search - defdelegate search_items(part, args), to: Search + defdelegate search_contents(part, args), to: Search # seeds defdelegate seed_communities(opt), to: Seeds diff --git a/lib/groupher_server/cms/delegates/search.ex b/lib/groupher_server/cms/delegates/search.ex index 6e1ed5c5f..98317e0ab 100644 --- a/lib/groupher_server/cms/delegates/search.ex +++ b/lib/groupher_server/cms/delegates/search.ex @@ -5,6 +5,7 @@ defmodule GroupherServer.CMS.Delegate.Search do import Helper.Utils, only: [done: 1] import Ecto.Query, warn: false + import GroupherServer.CMS.Helper.Matcher alias Helper.ORM alias GroupherServer.CMS.{Community, Post, Job, Repo} @@ -14,7 +15,7 @@ defmodule GroupherServer.CMS.Delegate.Search do @doc """ search community by title """ - def search_items(:community, %{title: title} = _args) do + def search_contents(:community, %{title: title} = _args) do Community |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.raw, ^"%#{title}%")) |> ORM.paginater(page: 1, size: @search_items_count) @@ -22,32 +23,15 @@ defmodule GroupherServer.CMS.Delegate.Search do end @doc """ - search post by title + search article by title """ - def search_items(:post, %{title: title} = _args) do - Post - |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.digest, ^"%#{title}%")) - |> ORM.paginater(page: 1, size: @search_items_count) - |> done() - end - - @doc """ - search job by title or company name - """ - def search_items(:job, %{title: title} = _args) do - Job - |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.company, ^"%#{title}%")) - |> ORM.paginater(page: 1, size: @search_items_count) - |> done() - end - - @doc """ - search repo by title - """ - def search_items(:repo, %{title: title} = _args) do - Repo - |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.owner_name, ^"%#{title}%")) - |> ORM.paginater(page: 1, size: @search_items_count) - |> done() + def search_contents(thread, %{title: title}) do + with {:ok, info} <- match(thread) do + info.model + # |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.digest, ^"%#{title}%")) + |> where([c], ilike(c.title, ^"%#{title}%")) + |> ORM.paginater(page: 1, size: @search_items_count) + |> done() + end end end diff --git a/lib/groupher_server_web/resolvers/cms_resolver.ex b/lib/groupher_server_web/resolvers/cms_resolver.ex index 2c1fbb513..d1d0adb6d 100644 --- a/lib/groupher_server_web/resolvers/cms_resolver.ex +++ b/lib/groupher_server_web/resolvers/cms_resolver.ex @@ -374,8 +374,12 @@ defmodule GroupherServerWeb.Resolvers.CMS do CMS.add_contributor(%CMS.CommunityCheatsheet{id: id}, contributor) end - def search_items(_root, %{part: part, title: title}, _info) do - CMS.search_items(part, %{title: title}) + def search_communities(_root, %{title: title}, _info) do + CMS.search_contents(:community, %{title: title}) + end + + def search_contents(_root, %{thread: thread, title: title}, _info) do + CMS.search_contents(thread, %{title: title}) end # ############################################## diff --git a/lib/groupher_server_web/schema/Helper/queries.ex b/lib/groupher_server_web/schema/Helper/queries.ex index fa2209ca3..eb63c7145 100644 --- a/lib/groupher_server_web/schema/Helper/queries.ex +++ b/lib/groupher_server_web/schema/Helper/queries.ex @@ -2,9 +2,28 @@ defmodule GroupherServerWeb.Schema.Helper.Queries do @moduledoc """ common fields """ + import Helper.Utils, only: [get_config: 2] + alias GroupherServerWeb.Middleware, as: M alias GroupherServerWeb.Resolvers, as: R + @article_threads get_config(:article, :article_threads) + + defmacro article_search_queries() do + @article_threads + |> Enum.map(fn thread -> + quote do + @desc unquote("get #{thread} by id") + field unquote(:"search_#{thread}s"), unquote(:"paged_#{thread}s") do + arg(:title, non_null(:string)) + arg(:thread, unquote(:"#{thread}_thread"), default_value: unquote(thread)) + + resolve(&R.CMS.search_contents/3) + end + end + end) + end + @doc """ query generator for threads, like: diff --git a/lib/groupher_server_web/schema/cms/cms_queries.ex b/lib/groupher_server_web/schema/cms/cms_queries.ex index ccdecce72..cc025972e 100644 --- a/lib/groupher_server_web/schema/cms/cms_queries.ex +++ b/lib/groupher_server_web/schema/cms/cms_queries.ex @@ -148,44 +148,21 @@ defmodule GroupherServerWeb.Schema.CMS.Queries do resolve(&R.CMS.paged_comments/3) end - @desc "search communities by title" - field :search_communities, :paged_communities do - arg(:title, non_null(:string)) - arg(:part, :community_type, default_value: :community) - - resolve(&R.CMS.search_items/3) - end - - @desc "search post by title" - field :search_posts, :paged_posts do - arg(:title, non_null(:string)) - arg(:part, :post_thread, default_value: :post) - - resolve(&R.CMS.search_items/3) - end - - @desc "search job by title" - field :search_jobs, :paged_jobs do - arg(:title, non_null(:string)) - arg(:part, :job_thread, default_value: :job) + @desc "paged reports list" + field :paged_abuse_reports, :paged_reports do + arg(:filter, non_null(:report_filter)) - resolve(&R.CMS.search_items/3) + resolve(&R.CMS.paged_reports/3) end - @desc "search repo by title" - field :search_repos, :paged_repos do + @desc "search communities by title" + field :search_communities, :paged_communities do arg(:title, non_null(:string)) - arg(:part, :repo_thread, default_value: :repo) - resolve(&R.CMS.search_items/3) + resolve(&R.CMS.search_communities/3) end - @desc "paged reports list" - field :paged_abuse_reports, :paged_reports do - arg(:filter, non_null(:report_filter)) - - resolve(&R.CMS.paged_reports/3) - end + article_search_queries() article_reacted_users_query(:upvot, &R.CMS.upvoted_users/3) article_reacted_users_query(:collect, &R.CMS.collected_users/3) diff --git a/test/groupher_server/cms/search_test.exs b/test/groupher_server/cms/search_test.exs index c9ae6558b..4acec7698 100644 --- a/test/groupher_server/cms/search_test.exs +++ b/test/groupher_server/cms/search_test.exs @@ -23,7 +23,7 @@ defmodule GroupherServer.Test.CMS.Search do describe "[cms search post]" do test "search post by full title should valid paged posts" do - {:ok, searched} = CMS.search_items(:post, %{title: "react"}) + {:ok, searched} = CMS.search_contents(:post, %{title: "react"}) assert searched |> is_valid_pagination?(:raw) assert searched.total_count == 1 @@ -31,37 +31,37 @@ defmodule GroupherServer.Test.CMS.Search do end test "search post blur title should return valid communities" do - {:ok, searched} = CMS.search_items(:post, %{title: "reac"}) + {:ok, searched} = CMS.search_contents(:post, %{title: "reac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_items(:post, %{title: "rea"}) + {:ok, searched} = CMS.search_contents(:post, %{title: "rea"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_items(:post, %{title: "eac"}) + {:ok, searched} = CMS.search_contents(:post, %{title: "eac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_items(:post, %{title: "每日"}) + {:ok, searched} = CMS.search_contents(:post, %{title: "每日"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "每日妹子" - {:ok, searched} = CMS.search_items(:post, %{title: "javasc"}) + {:ok, searched} = CMS.search_contents(:post, %{title: "javasc"}) assert searched.total_count == 1 assert searched.entries |> Enum.at(0) |> Map.get(:title) == "javascript" - {:ok, searched} = CMS.search_items(:post, %{title: "java"}) + {:ok, searched} = CMS.search_contents(:post, %{title: "java"}) assert searched.total_count == 2 assert searched.entries |> Enum.any?(&(&1.title == "java")) assert searched.entries |> Enum.any?(&(&1.title == "javascript")) end test "search non exsit community should get empty pagi data" do - {:ok, searched} = CMS.search_items(:community, %{title: "non-exsit"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "non-exsit"}) assert searched |> is_valid_pagination?(:raw, :empty) end end describe "[cms search community]" do test "search community by full title should valid paged communities" do - {:ok, searched} = CMS.search_items(:community, %{title: "react"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "react"}) assert searched |> is_valid_pagination?(:raw) assert searched.total_count == 1 @@ -69,30 +69,30 @@ defmodule GroupherServer.Test.CMS.Search do end test "search community blur title should return valid communities" do - {:ok, searched} = CMS.search_items(:community, %{title: "reac"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "reac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_items(:community, %{title: "rea"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "rea"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_items(:community, %{title: "eac"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "eac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_items(:community, %{title: "每日"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "每日"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "每日妹子" - {:ok, searched} = CMS.search_items(:community, %{title: "javasc"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "javasc"}) assert searched.total_count == 1 assert searched.entries |> Enum.at(0) |> Map.get(:title) == "javascript" - {:ok, searched} = CMS.search_items(:community, %{title: "java"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "java"}) assert searched.total_count == 2 assert searched.entries |> Enum.any?(&(&1.title == "java")) assert searched.entries |> Enum.any?(&(&1.title == "javascript")) end test "search non exsit community should get empty pagi data" do - {:ok, searched} = CMS.search_items(:community, %{title: "non-exsit"}) + {:ok, searched} = CMS.search_contents(:community, %{title: "non-exsit"}) assert searched |> is_valid_pagination?(:raw, :empty) end end From ecda6ca28d0c9b63ef247423570b8e5e4bf9302f Mon Sep 17 00:00:00 2001 From: mydearxym Date: Sat, 22 May 2021 18:12:24 +0800 Subject: [PATCH 2/4] refactor(search): differ community and article search --- lib/groupher_server/cms/cms.ex | 3 +- lib/groupher_server/cms/delegates/search.ex | 4 +-- .../resolvers/cms_resolver.ex | 6 ++-- .../schema/Helper/queries.ex | 2 +- test/groupher_server/cms/search_test.exs | 32 +++++++++---------- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/groupher_server/cms/cms.ex b/lib/groupher_server/cms/cms.ex index 24beb663d..2afcb903c 100644 --- a/lib/groupher_server/cms/cms.ex +++ b/lib/groupher_server/cms/cms.ex @@ -181,7 +181,8 @@ defmodule GroupherServer.CMS do defdelegate delete_passport(user), to: PassportCURD # search - defdelegate search_contents(part, args), to: Search + defdelegate search_articles(thread, args), to: Search + defdelegate search_communities(args), to: Search # seeds defdelegate seed_communities(opt), to: Seeds diff --git a/lib/groupher_server/cms/delegates/search.ex b/lib/groupher_server/cms/delegates/search.ex index 98317e0ab..41ea7499d 100644 --- a/lib/groupher_server/cms/delegates/search.ex +++ b/lib/groupher_server/cms/delegates/search.ex @@ -15,7 +15,7 @@ defmodule GroupherServer.CMS.Delegate.Search do @doc """ search community by title """ - def search_contents(:community, %{title: title} = _args) do + def search_communities(%{title: title} = _args) do Community |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.raw, ^"%#{title}%")) |> ORM.paginater(page: 1, size: @search_items_count) @@ -25,7 +25,7 @@ defmodule GroupherServer.CMS.Delegate.Search do @doc """ search article by title """ - def search_contents(thread, %{title: title}) do + def search_articles(thread, %{title: title}) do with {:ok, info} <- match(thread) do info.model # |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.digest, ^"%#{title}%")) diff --git a/lib/groupher_server_web/resolvers/cms_resolver.ex b/lib/groupher_server_web/resolvers/cms_resolver.ex index d1d0adb6d..235e53fc1 100644 --- a/lib/groupher_server_web/resolvers/cms_resolver.ex +++ b/lib/groupher_server_web/resolvers/cms_resolver.ex @@ -375,11 +375,11 @@ defmodule GroupherServerWeb.Resolvers.CMS do end def search_communities(_root, %{title: title}, _info) do - CMS.search_contents(:community, %{title: title}) + CMS.search_communities(community, %{title: title}) end - def search_contents(_root, %{thread: thread, title: title}, _info) do - CMS.search_contents(thread, %{title: title}) + def search_articles(_root, %{thread: thread, title: title}, _info) do + CMS.search_articles(thread, %{title: title}) end # ############################################## diff --git a/lib/groupher_server_web/schema/Helper/queries.ex b/lib/groupher_server_web/schema/Helper/queries.ex index eb63c7145..0f348abbc 100644 --- a/lib/groupher_server_web/schema/Helper/queries.ex +++ b/lib/groupher_server_web/schema/Helper/queries.ex @@ -18,7 +18,7 @@ defmodule GroupherServerWeb.Schema.Helper.Queries do arg(:title, non_null(:string)) arg(:thread, unquote(:"#{thread}_thread"), default_value: unquote(thread)) - resolve(&R.CMS.search_contents/3) + resolve(&R.CMS.search_articles/3) end end end) diff --git a/test/groupher_server/cms/search_test.exs b/test/groupher_server/cms/search_test.exs index 4acec7698..aea303db3 100644 --- a/test/groupher_server/cms/search_test.exs +++ b/test/groupher_server/cms/search_test.exs @@ -23,7 +23,7 @@ defmodule GroupherServer.Test.CMS.Search do describe "[cms search post]" do test "search post by full title should valid paged posts" do - {:ok, searched} = CMS.search_contents(:post, %{title: "react"}) + {:ok, searched} = CMS.search_articles(:post, %{title: "react"}) assert searched |> is_valid_pagination?(:raw) assert searched.total_count == 1 @@ -31,37 +31,37 @@ defmodule GroupherServer.Test.CMS.Search do end test "search post blur title should return valid communities" do - {:ok, searched} = CMS.search_contents(:post, %{title: "reac"}) + {:ok, searched} = CMS.search_articles(:post, %{title: "reac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_contents(:post, %{title: "rea"}) + {:ok, searched} = CMS.search_articles(:post, %{title: "rea"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_contents(:post, %{title: "eac"}) + {:ok, searched} = CMS.search_articles(:post, %{title: "eac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_contents(:post, %{title: "每日"}) + {:ok, searched} = CMS.search_articles(:post, %{title: "每日"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "每日妹子" - {:ok, searched} = CMS.search_contents(:post, %{title: "javasc"}) + {:ok, searched} = CMS.search_articles(:post, %{title: "javasc"}) assert searched.total_count == 1 assert searched.entries |> Enum.at(0) |> Map.get(:title) == "javascript" - {:ok, searched} = CMS.search_contents(:post, %{title: "java"}) + {:ok, searched} = CMS.search_articles(:post, %{title: "java"}) assert searched.total_count == 2 assert searched.entries |> Enum.any?(&(&1.title == "java")) assert searched.entries |> Enum.any?(&(&1.title == "javascript")) end test "search non exsit community should get empty pagi data" do - {:ok, searched} = CMS.search_contents(:community, %{title: "non-exsit"}) + {:ok, searched} = CMS.search_communities(%{title: "non-exsit"}) assert searched |> is_valid_pagination?(:raw, :empty) end end describe "[cms search community]" do test "search community by full title should valid paged communities" do - {:ok, searched} = CMS.search_contents(:community, %{title: "react"}) + {:ok, searched} = CMS.search_communities(%{title: "react"}) assert searched |> is_valid_pagination?(:raw) assert searched.total_count == 1 @@ -69,30 +69,30 @@ defmodule GroupherServer.Test.CMS.Search do end test "search community blur title should return valid communities" do - {:ok, searched} = CMS.search_contents(:community, %{title: "reac"}) + {:ok, searched} = CMS.search_communities(%{title: "reac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_contents(:community, %{title: "rea"}) + {:ok, searched} = CMS.search_communities(%{title: "rea"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_contents(:community, %{title: "eac"}) + {:ok, searched} = CMS.search_communities(%{title: "eac"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_contents(:community, %{title: "每日"}) + {:ok, searched} = CMS.search_communities(%{title: "每日"}) assert searched.entries |> Enum.at(0) |> Map.get(:title) == "每日妹子" - {:ok, searched} = CMS.search_contents(:community, %{title: "javasc"}) + {:ok, searched} = CMS.search_communities(%{title: "javasc"}) assert searched.total_count == 1 assert searched.entries |> Enum.at(0) |> Map.get(:title) == "javascript" - {:ok, searched} = CMS.search_contents(:community, %{title: "java"}) + {:ok, searched} = CMS.search_communities(%{title: "java"}) assert searched.total_count == 2 assert searched.entries |> Enum.any?(&(&1.title == "java")) assert searched.entries |> Enum.any?(&(&1.title == "javascript")) end test "search non exsit community should get empty pagi data" do - {:ok, searched} = CMS.search_contents(:community, %{title: "non-exsit"}) + {:ok, searched} = CMS.search_communities(%{title: "non-exsit"}) assert searched |> is_valid_pagination?(:raw, :empty) end end From 3f4d04994e9da8c1e67a2f4ad25e58b5f81965f4 Mon Sep 17 00:00:00 2001 From: mydearxym Date: Sat, 22 May 2021 23:36:30 +0800 Subject: [PATCH 3/4] refactor(search): fix communities search --- lib/groupher_server/cms/delegates/search.ex | 2 +- lib/groupher_server_web/resolvers/cms_resolver.ex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/groupher_server/cms/delegates/search.ex b/lib/groupher_server/cms/delegates/search.ex index 41ea7499d..49b3c5b2f 100644 --- a/lib/groupher_server/cms/delegates/search.ex +++ b/lib/groupher_server/cms/delegates/search.ex @@ -15,7 +15,7 @@ defmodule GroupherServer.CMS.Delegate.Search do @doc """ search community by title """ - def search_communities(%{title: title} = _args) do + def search_communities(title) do Community |> where([c], ilike(c.title, ^"%#{title}%") or ilike(c.raw, ^"%#{title}%")) |> ORM.paginater(page: 1, size: @search_items_count) diff --git a/lib/groupher_server_web/resolvers/cms_resolver.ex b/lib/groupher_server_web/resolvers/cms_resolver.ex index 235e53fc1..0d063c6a1 100644 --- a/lib/groupher_server_web/resolvers/cms_resolver.ex +++ b/lib/groupher_server_web/resolvers/cms_resolver.ex @@ -375,7 +375,7 @@ defmodule GroupherServerWeb.Resolvers.CMS do end def search_communities(_root, %{title: title}, _info) do - CMS.search_communities(community, %{title: title}) + CMS.search_communities(title) end def search_articles(_root, %{thread: thread, title: title}, _info) do From 00ee2b4c9ae57b2fefb1011d6849d30a9f389459 Mon Sep 17 00:00:00 2001 From: mydearxym Date: Sat, 22 May 2021 23:54:20 +0800 Subject: [PATCH 4/4] refactor(search): adjust communities api --- .../cms/community/community_test.exs | 1 - test/groupher_server/cms/search_test.exs | 19 ++++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/groupher_server/cms/community/community_test.exs b/test/groupher_server/cms/community/community_test.exs index f7c4db1e7..c921a5328 100644 --- a/test/groupher_server/cms/community/community_test.exs +++ b/test/groupher_server/cms/community/community_test.exs @@ -93,7 +93,6 @@ defmodule GroupherServer.Test.CMS.Community do assert user.id in community.meta.subscribed_user_ids end - @tag :wip2 test "user unsubscribe a community will update the community's subscribted info", ~m(user community)a do {:ok, _} = CMS.subscribe_community(community, user) diff --git a/test/groupher_server/cms/search_test.exs b/test/groupher_server/cms/search_test.exs index aea303db3..0afb47820 100644 --- a/test/groupher_server/cms/search_test.exs +++ b/test/groupher_server/cms/search_test.exs @@ -54,45 +54,46 @@ defmodule GroupherServer.Test.CMS.Search do end test "search non exsit community should get empty pagi data" do - {:ok, searched} = CMS.search_communities(%{title: "non-exsit"}) + {:ok, searched} = CMS.search_communities("non-exsit") assert searched |> is_valid_pagination?(:raw, :empty) end end describe "[cms search community]" do test "search community by full title should valid paged communities" do - {:ok, searched} = CMS.search_communities(%{title: "react"}) + {:ok, searched} = CMS.search_communities("react") assert searched |> is_valid_pagination?(:raw) assert searched.total_count == 1 assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" end + @tag :wip2 test "search community blur title should return valid communities" do - {:ok, searched} = CMS.search_communities(%{title: "reac"}) + {:ok, searched} = CMS.search_communities("reac") assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_communities(%{title: "rea"}) + {:ok, searched} = CMS.search_communities("rea") assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_communities(%{title: "eac"}) + {:ok, searched} = CMS.search_communities("eac") assert searched.entries |> Enum.at(0) |> Map.get(:title) == "react" - {:ok, searched} = CMS.search_communities(%{title: "每日"}) + {:ok, searched} = CMS.search_communities("每日") assert searched.entries |> Enum.at(0) |> Map.get(:title) == "每日妹子" - {:ok, searched} = CMS.search_communities(%{title: "javasc"}) + {:ok, searched} = CMS.search_communities("javasc") assert searched.total_count == 1 assert searched.entries |> Enum.at(0) |> Map.get(:title) == "javascript" - {:ok, searched} = CMS.search_communities(%{title: "java"}) + {:ok, searched} = CMS.search_communities("java") assert searched.total_count == 2 assert searched.entries |> Enum.any?(&(&1.title == "java")) assert searched.entries |> Enum.any?(&(&1.title == "javascript")) end test "search non exsit community should get empty pagi data" do - {:ok, searched} = CMS.search_communities(%{title: "non-exsit"}) + {:ok, searched} = CMS.search_communities("non-exsit") assert searched |> is_valid_pagination?(:raw, :empty) end end