# double_down v0.66.0 - Table of Contents 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. ## Pages - Guides - [DoubleDown](readme.md) - [Boundaries](boundaries.md) - [Dispatch](dispatch.md) - [Stateful Doubles](stateful-doubles.md) - [Double API](double-api.md) - [Repo](repo.md) - About - [Changelog](changelog.md) ## Modules - [DoubleDown.Dispatch.Defer](DoubleDown.Dispatch.Defer.md): A deferred execution marker. - [DoubleDown.Dispatch.HandlerMeta](DoubleDown.Dispatch.HandlerMeta.md): Structs describing the three handler types that can be installed for a contract via `DoubleDown.Testing`. - [DoubleDown.Dispatch.HandlerMeta.Module](DoubleDown.Dispatch.HandlerMeta.Module.md): Handler meta for a module-based implementation. - [DoubleDown.Dispatch.HandlerMeta.Stateful](DoubleDown.Dispatch.HandlerMeta.Stateful.md): Handler meta for a stateful (4/5-arity) function handler. - [DoubleDown.Dispatch.HandlerMeta.Stateless](DoubleDown.Dispatch.HandlerMeta.Stateless.md): Handler meta for a stateless 3-arity function handler `(contract, operation, args)`. - [DoubleDown.Dispatch.Keys](DoubleDown.Dispatch.Keys.md): Centralised NimbleOwnership key helpers for DoubleDown dispatch. - [DoubleDown.Dispatch.Passthrough](DoubleDown.Dispatch.Passthrough.md): Sentinel value returned from expect responders to delegate to the fallback/fake instead of returning a result directly. - [DoubleDown.Dispatch.StatefulHandler](DoubleDown.Dispatch.StatefulHandler.md): Behaviour for stateful fake handler modules. - [DoubleDown.Dispatch.StatelessHandler](DoubleDown.Dispatch.StatelessHandler.md): Behaviour for stateless stub handler modules. - [DoubleDown.Dispatch.Types](DoubleDown.Dispatch.Types.md): Shared type definitions for DoubleDown dispatch. - [DoubleDown.Double.CanonicalHandlerState](DoubleDown.Double.CanonicalHandlerState.md): State for `DoubleDown.Double.canonical_handler/5`. - [DoubleDown.Double.Dispatch](DoubleDown.Double.Dispatch.md): Dispatch-time logic for `DoubleDown.Double`'s canonical handler. - [DoubleDown.Double.Types](DoubleDown.Double.Types.md): Shared type definitions for per-operation functions in `DoubleDown.Double`. - [DoubleDown.DynamicFacade.Cover](DoubleDown.DynamicFacade.Cover.md): Ensures DynamicFacade-shimmed modules retain `:cover` instrumentation. - Core - [DoubleDown.BehaviourFacade](DoubleDown.BehaviourFacade.md): Generates a dispatch facade for a vanilla Elixir `@behaviour` module. - [DoubleDown.Contract](DoubleDown.Contract.md): Macro for defining contract behaviours with `defcallback` declarations. - [DoubleDown.ContractFacade](DoubleDown.ContractFacade.md): Generates a dispatch facade for a `DoubleDown.Contract`. - [DoubleDown.DynamicFacade](DoubleDown.DynamicFacade.md): Dynamic dispatch facades for existing modules. - Testing - [DoubleDown.Double](DoubleDown.Double.md): Mox-style expect/stub handler declarations with immediate effect. - [DoubleDown.Log](DoubleDown.Log.md): Log-based expectation matcher for DoubleDown dispatch logs. - [DoubleDown.Testing](DoubleDown.Testing.md): Test helpers for DoubleDown contracts. - Repo - [DoubleDown.Repo](DoubleDown.Repo.md): Repo contract for common Ecto Repo operations. - [DoubleDown.Repo.InMemory](DoubleDown.Repo.InMemory.md): Stateful in-memory Repo fake (closed-world). **Recommended default.** - [DoubleDown.Repo.OpenInMemory](DoubleDown.Repo.OpenInMemory.md): Stateful in-memory Repo fake (open-world). - [DoubleDown.Repo.Stateless](DoubleDown.Repo.Stateless.md): Stateless stub for `DoubleDown.Repo`. - Internals - [DoubleDown.Dispatch](DoubleDown.Dispatch.md): Dispatch resolution for DoubleDown contracts. - [DoubleDown.Repo.Impl.MultiStepper](DoubleDown.Repo.Impl.MultiStepper.md): Steps through an `Ecto.Multi` without a real database transaction. ## Mix Tasks - [mix docs.nav](Mix.Tasks.Docs.Nav.md): Injects navigation headers and footers into documentation files.