Popularity
2.1
Declining
Activity
0.0
Stable
9
1
2

Monthly Downloads: 203
Programming language: Elixir
License: MIT License
Tags: Testing    
Latest version: v0.6.0

test_that_json alternatives and similar packages

Based on the "Testing" category

Do you think we are missing an alternative of test_that_json or a related project?

Add another 'Testing' Package

README

Test That JSON!

Helpers for a better JSON testing experience in Elixir.

Build Status Inline docs

Using ESpec? Check out test_that_json_espec.

Docs

All 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

  • [X] has_json_keys
  • [X] has_only_json_keys
  • [X] has_json_values
  • [X] has_only_json_values
  • [X] has_json_properties
  • [X] has_only_json_properties
  • [X] has_json_path
  • [X] has_json_size
  • [X] has_json_type
  • [X] is_json_equal
  • [X] load_json
  • [X] load_json!
  • [X] parse_json
  • [X] parse_json!
  • [X] prettify_json
  • [X] prettify_json!
  • [X] to_json
  • [X] to_json!
  • [X] to_prettified_json
  • [X] 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

  1. Add test_that_json as a test-only dependency in mix.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

  • [X] Tests
  • [ ] Docs for entire helper API

Thanks

Thanks to the creators and maintainers of the Ruby json_spec project for heavy inspiration.

Contributing

  1. Before opening a pull request, please open an issue first.
  2. Do the usual fork/add/fix/run tests dance, or whatever tickles your fancy. Tests are highly encouraged.
  3. Open a PR.
  4. Treat yourself. You deserve it.

License

See the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).


*Note that all licence references and agreements mentioned in the test_that_json README section above are relevant to that project's source code only.