112 lines
3.1 KiB
Elixir
112 lines
3.1 KiB
Elixir
defmodule Pleroma.Akkoma.FrontendSettingProfileTest do
|
|
use Pleroma.DataCase, async: true
|
|
use Oban.Testing, repo: Pleroma.Repo
|
|
alias Pleroma.Akkoma.FrontendSettingProfile
|
|
|
|
import Pleroma.Factory
|
|
|
|
describe "changeset/2" do
|
|
test "valid" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = "test"
|
|
settings = %{"test" => "test"}
|
|
struct = %FrontendSettingProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings
|
|
}
|
|
|
|
assert %{valid?: true} = FrontendSettingProfile.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 = %FrontendSettingProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings
|
|
}
|
|
|
|
assert %{valid?: false, errors: [settings: {"is too long", _}]} =
|
|
FrontendSettingProfile.changeset(struct, attrs)
|
|
end
|
|
|
|
test "when frontend name is too short" do
|
|
user = insert(:user)
|
|
frontend_name = ""
|
|
profile_name = "test"
|
|
settings = %{"test" => "test"}
|
|
struct = %FrontendSettingProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings
|
|
}
|
|
|
|
assert %{valid?: false, errors: [frontend_name: {"can't be blank", _}]} =
|
|
FrontendSettingProfile.changeset(struct, attrs)
|
|
end
|
|
|
|
test "when profile name is too short" do
|
|
user = insert(:user)
|
|
frontend_name = "test"
|
|
profile_name = ""
|
|
settings = %{"test" => "test"}
|
|
struct = %FrontendSettingProfile{}
|
|
|
|
attrs = %{
|
|
user_id: user.id,
|
|
frontend_name: frontend_name,
|
|
profile_name: profile_name,
|
|
settings: settings
|
|
}
|
|
|
|
assert %{valid?: false, errors: [profile_name: {"can't be blank", _}]} =
|
|
FrontendSettingProfile.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, %FrontendSettingProfile{}} =
|
|
FrontendSettingProfile.create_or_update(user, frontend_name, profile_name, settings)
|
|
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"}
|
|
)
|
|
|
|
settings = %{"test" => "test2"}
|
|
|
|
assert {:ok, %FrontendSettingProfile{settings: ^settings}} =
|
|
FrontendSettingProfile.create_or_update(user, frontend_name, profile_name, settings)
|
|
end
|
|
end
|
|
end
|