@@ -133,6 +133,38 @@ defmodule Ecto.Repo.AutogenerateTest do
133133 end
134134 end
135135
136+ defmodule AutogenerateOptionsType do
137+ use Ecto.Type
138+
139+ def type , do: :string
140+ def cast ( value ) , do: { :ok , value }
141+ def load ( value ) , do: { :ok , value }
142+ def dump ( value ) , do: { :ok , value }
143+ def autogenerate ( opts ) , do: Keyword . fetch! ( opts , :value )
144+ end
145+
146+ defmodule ParameterizedAutogenerateOptionsType do
147+ use Ecto.ParameterizedType
148+
149+ def init ( opts ) , do: opts
150+ def type ( _params ) , do: :string
151+ def cast ( value , _params ) , do: { :ok , value }
152+ def load ( value , _loader , _params ) , do: { :ok , value }
153+ def dump ( value , _dumper , _params ) , do: { :ok , value }
154+ def autogenerate ( opts ) , do: Keyword . fetch! ( opts , :value )
155+ end
156+
157+ defmodule AutogenerateOptionsSchema do
158+ use Ecto.Schema
159+
160+ schema "autogenerate_options_schema" do
161+ field :parameterized , ParameterizedAutogenerateOptionsType ,
162+ autogenerate: [ value: "parameterized" ]
163+
164+ field :composite , { :array , AutogenerateOptionsType } , autogenerate: [ value: [ "composite" ] ]
165+ end
166+ end
167+
136168 ## Autogenerate
137169
138170 @ uuid "30313233-3435-4637-9839-616263646566"
@@ -179,6 +211,13 @@ defmodule Ecto.Repo.AutogenerateTest do
179211 assert byte_size ( schema . uuid_v7 ) == 36
180212 end
181213
214+ test "autogenerates parameterized and composite types with options" do
215+ schema = TestRepo . insert! ( % AutogenerateOptionsSchema { } )
216+
217+ assert schema . parameterized == "parameterized"
218+ assert schema . composite == [ "composite" ]
219+ end
220+
182221 ## Timestamps
183222
184223 test "sets inserted_at and updated_at values" do
0 commit comments