diff --git a/test/models/user_test.exs b/test/models/user_test.exs new file mode 100644 index 0000000..f204380 --- /dev/null +++ b/test/models/user_test.exs @@ -0,0 +1,18 @@ +defmodule Asciinema.UserTest do + use Asciinema.ModelCase + + 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"} + @invalid_attrs %{} + + test "changeset with valid attributes" do + changeset = User.changeset(%User{}, @valid_attrs) + assert changeset.valid? + end + + test "changeset with invalid attributes" do + changeset = User.changeset(%User{}, @invalid_attrs) + refute changeset.valid? + end +end diff --git a/web/models/user.ex b/web/models/user.ex new file mode 100644 index 0000000..7e8b44a --- /dev/null +++ b/web/models/user.ex @@ -0,0 +1,24 @@ +defmodule Asciinema.User do + use Asciinema.Web, :model + + schema "users" do + field :username, :string + field :temporary_username, :string + field :email, :string + field :name, :string + field :auth_token, :string + field :theme_name, :string + field :asciicasts_private_by_default, :boolean, default: true + + # timestamps() + end + + @doc """ + Builds a changeset based on the `struct` and `params`. + """ + def changeset(struct, params \\ %{}) do + struct + |> cast(params, [:email, :name, :username, :temporary_username, :auth_token, :theme_name, :asciicasts_private_by_default]) + |> validate_required([:email, :name, :username, :temporary_username, :auth_token, :theme_name, :asciicasts_private_by_default]) + end +end