First
[anni] / test / support / builders / user_builder.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Builders.UserBuilder do
6   alias Pleroma.Repo
7   alias Pleroma.User
8
9   def build(data \\ %{}) do
10     user = %User{
11       email: "test@example.org",
12       name: "Test Name",
13       nickname: "testname",
14       password_hash: Pleroma.Password.Pbkdf2.hash_pwd_salt("test"),
15       bio: "A tester.",
16       ap_id: "some id",
17       last_digest_emailed_at: NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second),
18       multi_factor_authentication_settings: %Pleroma.MFA.Settings{},
19       notification_settings: %Pleroma.User.NotificationSetting{}
20     }
21
22     Map.merge(user, data)
23   end
24
25   def insert(data \\ %{}) do
26     {:ok, user} = Repo.insert(build(data))
27     User.invalidate_cache(user)
28     {:ok, user}
29   end
30 end