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

Commit 618e058

Browse files
committed
Merge branch 'c11n' into dev
2 parents 61f4f3e + a4c7738 commit 618e058

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

lib/mastani_server_web/context.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ defmodule MastaniServerWeb.Context do
4242

4343
defp authorize(token) do
4444
with {:ok, claims, _info} <- Guardian.jwt_decode(token) do
45-
case ORM.find(Accounts.User, claims.id) do
45+
case ORM.find(Accounts.User, claims.id, preload: :customization) do
4646
{:ok, user} ->
4747
check_passport(user)
4848

lib/mastani_server_web/middleware/pagesize_proof.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ defmodule MastaniServerWeb.Middleware.PageSizeProof do
1616
# 3. large size should trigger error
1717
def call(%{errors: errors} = resolution, _) when length(errors) > 0, do: resolution
1818

19+
def call(%{context: %{cur_user: %{customization: customization}}} = resolution, _info)
20+
when not is_nil(customization) do
21+
size = String.to_integer(customization.display_density)
22+
23+
filter = resolution.arguments.filter |> Map.merge(%{size: size})
24+
arguments = resolution.arguments |> Map.merge(%{filter: filter})
25+
26+
%{resolution | arguments: sort_desc_by_default(arguments)}
27+
end
28+
1929
def call(resolution, _) do
2030
case valid_size(resolution.arguments) do
2131
{:error, msg} ->

test/mastani_server_web/mutation/accounts/customization_test.exs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ defmodule MastaniServer.Test.Mutation.Account.Customization do
33

44
# alias MastaniServer.{Accounts}
55
# alias Helper.ORM
6+
import Helper.Utils, only: [get_config: 2]
7+
8+
@max_page_size get_config(:general, :page_size)
69

710
setup do
811
{:ok, user} = db_insert(:user)
@@ -55,6 +58,48 @@ defmodule MastaniServer.Test.Mutation.Account.Customization do
5558
assert result["customization"]["displayDensity"] == "25"
5659
end
5760

61+
@paged_post_query """
62+
query($filter: PagedArticleFilter!) {
63+
pagedPosts(filter: $filter) {
64+
pageSize
65+
pageNumber
66+
}
67+
}
68+
"""
69+
test "PageSizeProof middleware should load items based on c11n settings", ~m(user)a do
70+
user_conn = simu_conn(:user, user)
71+
db_insert_multi(:post, 50)
72+
73+
variables = %{filter: %{page: 1}}
74+
results = user_conn |> query_result(@paged_post_query, variables, "pagedPosts")
75+
assert results["pageSize"] == @max_page_size
76+
77+
variables = %{
78+
customization: %{
79+
displayDensity: "25"
80+
}
81+
}
82+
83+
user_conn |> mutation_result(@query, variables, "setCustomization")
84+
85+
variables = %{filter: %{page: 1}}
86+
results = user_conn |> query_result(@paged_post_query, variables, "pagedPosts")
87+
assert results["pageSize"] == 25
88+
89+
variables = %{
90+
customization: %{
91+
displayDensity: "20"
92+
}
93+
}
94+
95+
user_conn |> mutation_result(@query, variables, "setCustomization")
96+
97+
variables = %{filter: %{page: 2}}
98+
results = user_conn |> query_result(@paged_post_query, variables, "pagedPosts")
99+
assert results["pageSize"] == 20
100+
assert results["pageNumber"] == 2
101+
end
102+
58103
test "set single customization should merge not overwright other settings", ~m(user_conn)a do
59104
variables = %{
60105
customization: %{

0 commit comments

Comments
 (0)