Yes, thank you!
For the record:
test "email has been taken" do
user = User.registration_changeset(%User{}, @valid_attrs)
assert {:ok, user } = Repo.insert(user)
imposter = User.registration_changeset(%User{}, @valid_attrs)
assert {:error, changeset} = Repo.insert(imposter)
assert changeset.errors[:email] == {"Email is already taken", []}
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:name, :email])
|> validate_required([:name, :email], message: "Are required")
|> unique_constraint(:email, message: "Email is already taken")
|> validate_format(:email, ~r/@/, message: "The email is invalid")
|> validate_length(:email, min: 4, max: 40)
|> validate_length(:name, min: 6, max: 40)
|> validate_format(:name, ~r/^[a-zA-Z]+$/, message: "Name must only contain letters")
end
def registration_changeset(struct, params \\ %{}) do
struct
|> changeset(params)
|> cast(params, [:password, :password_confirmation])
|> validate_required([:password, :password_confirmation], message: "Are required")
|> validate_length(:password, min: 6, max: 100)
|> validate_confirmation(:password, message: "Passwords must match")
|> hash_password
end