From ad2392be99f4c6e74a8177b5e46c9559a163494b Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Tue, 20 Dec 2022 20:33:41 -0500 Subject: [PATCH] improvement: filter min_length strings in generators --- lib/ash/type/string.ex | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/ash/type/string.ex b/lib/ash/type/string.ex index 62e47032..f655022e 100644 --- a/lib/ash/type/string.ex +++ b/lib/ash/type/string.ex @@ -46,10 +46,19 @@ defmodule Ash.Type.String do @impl true def generator(constraints) do - StreamData.string( - :printable, - Keyword.take(constraints, [:max_length, :min_length]) - ) + base_generator = + StreamData.string( + :printable, + Keyword.take(constraints, [:max_length, :min_length]) + ) + + if constraints[:trim?] && constraints[:min_length] do + StreamData.filter(base_generator, fn value -> + value |> String.trim() |> String.length() |> Kernel.>(constraints[:min_length]) + end) + else + base_generator + end end def apply_constraints(nil, _), do: :ok