Create asciinema user with proper changeset fn

ex-snapshot
Marcin Kulik 7 years ago
parent 5bca2b4724
commit 74c32eb81d

@ -4,11 +4,18 @@ defmodule Asciinema.Users do
alias Asciinema.{Repo, User, ApiToken, Asciicasts, Asciicast}
def create_asciinema_user!() do
user =
Repo.get_by(User, username: "asciinema") ||
Repo.insert!(%User{username: "asciinema",
name: "asciinema",
email: "support@asciinema.org"})
attrs = %{username: "asciinema",
name: "asciinema",
email: "support@asciinema.org"}
user = case Repo.get_by(User, username: "asciinema") do
nil ->
%User{}
|> User.create_changeset(attrs)
|> Repo.insert!
user ->
user
end
if Repo.count(assoc(user, :asciicasts)) == 0 do
upload = %Plug.Upload{path: "resources/welcome.json",

@ -3,16 +3,16 @@ defmodule Asciinema.UserTest do
alias Asciinema.User
@valid_attrs %{asciicasts_private_by_default: true, auth_token: "some content", email: "some content", name: "some content", temporary_username: "some content", theme_name: "some content", username: "some content"}
@valid_attrs %{email: "test@example.com", username: "test"}
@invalid_attrs %{}
test "changeset with valid attributes" do
changeset = User.changeset(%User{}, @valid_attrs)
changeset = User.create_changeset(%User{}, @valid_attrs)
assert changeset.valid?
end
test "changeset with invalid attributes" do
changeset = User.changeset(%User{}, @invalid_attrs)
changeset = User.create_changeset(%User{}, @invalid_attrs)
refute changeset.valid?
end
end

@ -13,9 +13,10 @@ defmodule Asciinema.Fixtures do
def fixture(:user, attrs) do
attrs = Map.merge(%{username: "test",
email: "test@example.com",
auth_token: "authy-auth-auth"}, attrs)
Repo.insert!(User.changeset(%User{}, attrs))
email: "test@example.com"}, attrs)
%User{}
|> User.create_changeset(attrs)
|> Repo.insert!
end
def fixture(:asciicast, _attrs) do

@ -18,13 +18,16 @@ defmodule Asciinema.User do
has_many :expiring_tokens, Asciinema.ExpiringToken
end
@doc """
Builds a changeset based on the `struct` and `params`.
"""
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:email, :name, :username, :auth_token, :theme_name, :asciicasts_private_by_default])
|> validate_required([:auth_token])
|> cast(params, [:email, :name, :username, :theme_name, :asciicasts_private_by_default])
end
def create_changeset(struct, attrs) do
struct
|> changeset(attrs)
|> validate_required(~w(username email)a)
|> generate_auth_token
end
def temporary_changeset(temporary_username) do

Loading…
Cancel
Save