Packages
double_down
0.24.0
0.69.0
0.68.0
0.66.0
0.65.0
0.64.1
0.64.0
0.63.3
0.63.2
0.63.1
0.63.0
0.62.1
0.61.0
0.60.4
0.60.3
0.60.2
0.60.1
0.60.0
0.59.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.0
0.54.0
0.53.0
0.52.3
0.52.2
0.52.1
0.52.0
0.51.0
0.50.1
0.50.0
0.49.0
0.48.1
0.48.0
0.47.2
0.47.1
0.47.0
0.46.3
0.46.2
0.46.1
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.1
0.41.0
0.40.0
0.39.0
0.38.0
0.37.2
0.37.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.1
0.31.0
0.30.1
0.30.0
0.29.0
0.28.1
0.28.0
0.27.0
0.26.0
0.24.0
Builds on the Mox pattern — generates behaviours and dispatch facades from `defcallback` declarations — and adds stateful test doubles powerful enough to test Ecto.Repo operations without a database.
Current section
Files
Jump to
Current section
Files
double_down
mix.exs
mix.exs
defmodule DoubleDown.MixProject do
use Mix.Project
@version File.read!("VERSION") |> String.trim()
def project do
[
app: :double_down,
version: @version,
elixir: "~> 1.19",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
deps: deps(),
description: description(),
package: package(),
source_url: "https://github.com/mccraigmccraig/double_down",
homepage_url: "https://github.com/mccraigmccraig/double_down",
dialyzer: [plt_add_apps: [:mix, :ex_unit]],
docs: [
main: "readme",
extras: [
"README.md",
"docs/getting-started.md",
"docs/testing.md",
"docs/repo.md",
"docs/migration.md",
"CHANGELOG.md"
],
groups_for_extras: [
Introduction: [
"README.md",
"docs/getting-started.md"
],
Guides: [
"docs/testing.md",
"docs/repo.md",
"docs/migration.md"
],
About: [
"CHANGELOG.md"
]
],
groups_for_modules: [
Core: [
DoubleDown.Contract,
DoubleDown.Facade,
DoubleDown.Dispatch
],
Testing: [
DoubleDown.Testing,
DoubleDown.Handler,
DoubleDown.Log
],
Repo: [
DoubleDown.Repo.Contract,
DoubleDown.Repo.Test,
DoubleDown.Repo.InMemory,
DoubleDown.Repo.MultiStepper
]
]
]
]
end
def application do
[
extra_applications: [:logger]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:nimble_ownership, "~> 1.0"},
{:ecto, "~> 3.12", optional: true},
{:ex_doc, "~> 0.34", only: :dev, runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}
]
end
defp description do
"""
DoubleDown: Hexagonal architecture ports for Elixir.
Typed port contracts with async-safe test doubles, dispatch logging,
and stateful test handlers. Define boundaries with `defport`, swap
implementations for testing without a database.
"""
end
defp package do
[
name: "double_down",
files: ~w(lib docs .formatter.exs mix.exs README.md CHANGELOG.md LICENSE VERSION),
licenses: ["MIT"],
links: %{
"GitHub" => "https://github.com/mccraigmccraig/double_down"
}
]
end
end