FrappeUIPhx.Contract (frappe_ui_phx v0.3.1)

Copy Markdown View Source

Design by Contract para os componentes.

Uma violação de contrato é um bug de quem chama, não fluxo de negócio: por isso falha alto (ArgumentError), em vez de renderizar algo errado em silêncio. Entrada de usuário (valores de formulário) nunca passa por aqui; ela vira errors do Phoenix.HTML.FormField.

  • require!/3 — pré-condição: o valor pertence ao domínio permitido.
  • ensure!/2 — pós-condição / invariante: algo que o código garantiu.

Summary

Functions

Pós-condição ou invariante: levanta ArgumentError com message se condition for falsa.

Pré-condição: value deve estar em allowed. Devolve value.

Functions

ensure!(condition, message)

@spec ensure!(term(), String.t()) :: :ok

Pós-condição ou invariante: levanta ArgumentError com message se condition for falsa.

require!(value, allowed, name)

@spec require!(term(), Enumerable.t(), atom() | String.t()) :: term()

Pré-condição: value deve estar em allowed. Devolve value.