Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - joshrieken/test_that_json: JSON-related helpers for your Elixir testing needs
JSON-related helpers for your Elixir testing needs - joshrieken/test_that_json
Visit SiteGitHub - joshrieken/test_that_json: JSON-related helpers for your Elixir testing needs
JSON-related helpers for your Elixir testing needs - joshrieken/test_that_json
Powered by 0x5a.live ๐
Test That JSON!
Helpers for a better JSON testing experience in Elixir.
Using ESpec? Check out test_that_json_espec.
Docs
For now, see the Json
module for docs for much of the API.
This project has an extensive test suite, so see that for detailed usage.
Helpers
-
has_json_keys
-
has_only_json_keys
-
has_json_values
-
has_only_json_values
-
has_json_properties
-
has_only_json_properties
-
has_json_path
-
has_json_size
-
has_json_type
-
is_json_equal
-
load_json
-
load_json!
-
parse_json
-
parse_json!
-
prettify_json
-
prettify_json!
-
to_json
-
to_json!
-
to_prettified_json
-
to_prettified_json!
Additional Functionality
- Helpers that return a boolean can optionally take a path
- Helpers can be composed together w/ the pipe |> operator
Example
defmodule MyProject.ExampleTest
use ExUnit.Case
import TestThatJson.Helpers
test "verifying JSON key presence" do
json = load_json("test/support/json/valid.json") # example helper use
assert has_json_keys(["key1", "key2"])
end
end
Test That JSON! has extensive tests, but they're mostly written as ESpec specs because I like that style for complex testing. See the test
directory for some basic happy-path tests, and the spec
directory for detailed use cases.
Installation
- Add
test_that_json
as a test-only dependency inmix.exs
:
def deps do
[
{:test_that_json, "~> 0.6.0", only: :test},
]
end
Configuration
Key Exclusion
By default, to avoid needing to know the values of these ahead of time, the following keys are ignored for all JSON objects: id
, inserted_at
, and updated_at
.
This can be reconfigured as follows:
config :test_that_json,
excluded_keys: ~w(id inserted_at updated_at some other keys)
Paths
These are simple strings of "/"-separated object keys and array indexes passed to has_json_path
. For instance, with the following JSON:
{
"first_name": "Jon",
"last_name": "Snow",
"friends": [
{
"first_name": "Know",
"last_name": "Nothing"
}
]
}
We could access the first friend's first name with the path "friends/0/first_name".
Project Chores
- Tests
- Docs for entire helper API
Related Projects
Thanks
Thanks to the creators and maintainers of the Ruby json_spec project for heavy inspiration.
Contributing
- Before opening a pull request, please open an issue first.
- Do the usual fork/add/fix/run tests dance, or whatever tickles your fancy. Tests are highly encouraged.
- Open a PR.
- Treat yourself. You deserve it.
License
See the LICENSE file for license rights and limitations (MIT).
Elixir Resources
are all listed below.
Made with โค๏ธ
to provide different kinds of informations and resources.