Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - danielberkompas/ecto_validation_case: Simplify your Ecto validation tests
Simplify your Ecto validation tests. Contribute to danielberkompas/ecto_validation_case development by creating an account on GitHub.
Visit SiteGitHub - danielberkompas/ecto_validation_case: Simplify your Ecto validation tests
Simplify your Ecto validation tests. Contribute to danielberkompas/ecto_validation_case development by creating an account on GitHub.
Powered by 0x5a.live ๐
Ecto.ValidationCase
Simplify your Ecto model validation tests. Loosely inspired by shoulda matchers, but simpler.
IMPORTANT
Jose Valim, creator of Elixir, has outlined a better approach to this problem here: https://groups.google.com/forum/#!topic/elixir-lang-talk/kwLLyCiarls
Go check it out.
Sample
defmodule MyApp.UserTest do
use ExUnit.Case
use Ecto.ValidationCase, model: MyApp.User
test "requires password to be 10 chars long" do
rejects "password", for: :password, message: "too short"
accepts "password123", for: :password
end
end
Rationale
Rather than create a matching test helper function for each of the valiations
that Ecto supports, this library intentionally keeps things simple,
providing only accepts/2
and rejects/2
. Why?
- The api very easy to remember, which makes validation tests more likely to be written.
- The tests are more explicit, with a minimum of magic. It is very clear exactly what values are being tested, for which fields, and which error messages should be returned.
Installation
You can install Ecto.ValidationCase
from hex. First, change your deps
in
mix.exs
specifying that this is applicable only for the test environment:
def deps do
[{:ecto_validation_case, ">= 0.1.0", env: :test}]
end
Then run mix deps.get
to install.
Documentation
Documentation is available on Ecto.ValidationCase
's hex page.
License
Elixir Resources
are all listed below.
Made with โค๏ธ
to provide different kinds of informations and resources.