c6e63aaf6b
Co-authored-by: FloatingGhost <hannah@coffee-and-dreams.uk> Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/226
197 lines
5.3 KiB
Elixir
197 lines
5.3 KiB
Elixir
defmodule Pleroma.Akkoma.FrontendSettingsProfileTest do
|
|
use Pleroma.DataCase, async: true
|
|
use Oban.Testing, repo: Pleroma.Repo
|
|
alias Pleroma.Akkoma.FrontendSettingsProfile
|
|
|
|
import Pleroma.Factory
|
|
|
|
describe "changeset/2" do
|
|
test "valid" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = "test"
|
|
settings = %{"test" => "test"}
|
|
struct = %FrontendSettingsProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings,
|
|
version: 1
|
|
}
|
|
|
|
assert %{valid?: true} = FrontendSettingsProfile.changeset(struct, attrs)
|
|
end
|
|
|
|
test "when settings is too long" do
|
|
clear_config([:instance, :max_frontend_settings_json_chars], 10)
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = "test"
|
|
settings = %{"verylong" => "verylongoops"}
|
|
struct = %FrontendSettingsProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings,
|
|
version: 1
|
|
}
|
|
|
|
assert %{valid?: false, errors: [settings: {"is too long", _}]} =
|
|
FrontendSettingsProfile.changeset(struct, attrs)
|
|
end
|
|
|
|
test "when frontend name is too short" do
|
|
user = insert(:user)
|
|
frontend_name = ""
|
|
profile_name = "test"
|
|
settings = %{"test" => "test"}
|
|
struct = %FrontendSettingsProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings,
|
|
version: 1
|
|
}
|
|
|
|
assert %{valid?: false, errors: [frontend_name: {"can't be blank", _}]} =
|
|
FrontendSettingsProfile.changeset(struct, attrs)
|
|
end
|
|
|
|
test "when profile name is too short" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = ""
|
|
settings = %{"test" => "test"}
|
|
struct = %FrontendSettingsProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings,
|
|
version: 1
|
|
}
|
|
|
|
assert %{valid?: false, errors: [profile_name: {"can't be blank", _}]} =
|
|
FrontendSettingsProfile.changeset(struct, attrs)
|
|
end
|
|
|
|
test "when version is negative" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = "test"
|
|
settings = %{"test" => "test"}
|
|
struct = %FrontendSettingsProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings,
|
|
version: -1
|
|
}
|
|
|
|
assert %{valid?: false, errors: [version: {"must be greater than %{number}", _}]} =
|
|
FrontendSettingsProfile.changeset(struct, attrs)
|
|
end
|
|
end
|
|
|
|
describe "create_or_update/2" do
|
|
test "it should create a new record" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = "test"
|
|
settings = %{"test" => "test"}
|
|
|
|
assert {:ok, %FrontendSettingsProfile{}} =
|
|
FrontendSettingsProfile.create_or_update(
|
|
user,
|
|
frontend_name,
|
|
profile_name,
|
|
settings,
|
|
1
|
|
)
|
|
end
|
|
|
|
test "it should update a record" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = "test"
|
|
|
|
insert(:frontend_setting_profile,
|
|
user: user,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: %{"test" => "test"},
|
|
version: 1
|
|
)
|
|
|
|
settings = %{"test" => "test2"}
|
|
|
|
assert {:ok, %FrontendSettingsProfile{settings: ^settings}} =
|
|
FrontendSettingsProfile.create_or_update(
|
|
user,
|
|
frontend_name,
|
|
profile_name,
|
|
settings,
|
|
2
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "get_all_by_user_and_frontend_name/2" do
|
|
test "it should return all records" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
|
|
insert(:frontend_setting_profile,
|
|
user: user,
|
|
frontend_name: frontend_name,
|
|
profile_name: "profileA",
|
|
settings: %{"test" => "test"},
|
|
version: 1
|
|
)
|
|
|
|
insert(:frontend_setting_profile,
|
|
user: user,
|
|
frontend_name: frontend_name,
|
|
profile_name: "profileB",
|
|
settings: %{"test" => "test"},
|
|
version: 1
|
|
)
|
|
|
|
assert [%FrontendSettingsProfile{profile_name: "profileA"}, %{profile_name: "profileB"}] =
|
|
FrontendSettingsProfile.get_all_by_user_and_frontend_name(user, frontend_name)
|
|
end
|
|
end
|
|
|
|
describe "get_by_user_and_frontend_name_and_profile_name/3" do
|
|
test "it should return a record" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = "profileA"
|
|
|
|
insert(:frontend_setting_profile,
|
|
user: user,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: %{"test" => "test"},
|
|
version: 1
|
|
)
|
|
|
|
assert %FrontendSettingsProfile{profile_name: "profileA"} =
|
|
FrontendSettingsProfile.get_by_user_and_frontend_name_and_profile_name(
|
|
user,
|
|
frontend_name,
|
|
profile_name
|
|
)
|
|
end
|
|
end
|
|
end
|