11defmodule Kaffe.Config.ProducerTest do
22 use ExUnit.Case , async: true
33
4- @ default_producer " producer_name"
4+ @ default_producer : producer_name
55
66 describe "configuration/0" do
77 test "correct settings are extracted" do
@@ -75,19 +75,19 @@ defmodule Kaffe.Config.ProducerTest do
7575 test "correct settings are extracted for different producer clients" do
7676 config = Application . get_env ( :kaffe , :producers )
7777
78- multiple_producers_config = % {
79- " producer_1" => [
78+ multiple_producers_config = [
79+ producer_1: [
8080 endpoints: [ kafka1: 9092 ] ,
8181 topics: [ "kaffe-test-1" ] ,
8282 sasl: % { mechanism: :plain , login: "Alice" , password: "ecilA" } ,
8383 ssl: true
8484 ] ,
85- " producer_2" => [
85+ producer_2: [
8686 endpoints: [ kafka2: 9092 ] ,
8787 topics: [ "kaffe-test-2" ] ,
8888 compression: :zstd
8989 ]
90- }
90+ ]
9191
9292 Application . put_env ( :kaffe , :producers , multiple_producers_config )
9393
@@ -141,8 +141,28 @@ defmodule Kaffe.Config.ProducerTest do
141141 Application . put_env ( :kaffe , :producers , config )
142142 end )
143143
144- assert Kaffe.Config.Producer . configuration ( "producer_1" ) == expected_producer_config_1
145- assert Kaffe.Config.Producer . configuration ( "producer_2" ) == expected_producer_config_2
144+ assert Kaffe.Config.Producer . configuration ( :producer_1 ) == expected_producer_config_1
145+ assert Kaffe.Config.Producer . configuration ( :producer_2 ) == expected_producer_config_2
146+ end
147+
148+ test "the same settings are extracted from map and keyword configuration" do
149+ keyword_config = Application . get_env ( :kaffe , :producers )
150+ assert is_list ( keyword_config )
151+ assert keyword_config != [ ]
152+
153+ producer_config_from_keyword = Kaffe.Config.Producer . configuration ( @ default_producer )
154+
155+ map_config = Map . new ( keyword_config )
156+
157+ Application . put_env ( :kaffe , :producers , map_config )
158+
159+ on_exit ( fn ->
160+ Application . put_env ( :kaffe , :producers , keyword_config )
161+ end )
162+
163+ producer_config_from_map = Kaffe.Config.Producer . configuration ( @ default_producer )
164+
165+ assert producer_config_from_keyword == producer_config_from_map
146166 end
147167 end
148168
@@ -163,7 +183,8 @@ defmodule Kaffe.Config.ProducerTest do
163183
164184 test "returns :ok if producers are configured with the :producers key" do
165185 producers_config = Application . get_env ( :kaffe , :producers )
166- assert is_map ( producers_config )
186+ assert is_list ( producers_config )
187+ assert producers_config != [ ]
167188
168189 Application . delete_env ( :kaffe , :producer )
169190
@@ -175,7 +196,7 @@ defmodule Kaffe.Config.ProducerTest do
175196
176197 test "returns :ok and sets :kaffe, :producers if producer is configured with the :producer key" do
177198 producers_config = Application . get_env ( :kaffe , :producers )
178- producer_config = producers_config |> Map . values ( ) |> List . first ( )
199+ producer_config = producers_config |> Keyword . values ( ) |> List . first ( )
179200
180201 Application . delete_env ( :kaffe , :producers )
181202 Application . put_env ( :kaffe , :producer , producer_config )
@@ -188,12 +209,12 @@ defmodule Kaffe.Config.ProducerTest do
188209 assert :ok == Kaffe.Config.Producer . maybe_set_producers_env! ( )
189210
190211 assert Application . get_env ( :kaffe , :producer ) == producer_config
191- assert Application . get_env ( :kaffe , :producers ) == % { " producer" => producer_config }
212+ assert Application . get_env ( :kaffe , :producers ) == [ producer: producer_config ]
192213 end
193214
194215 test "logs message if :kaffe, :producers was set with configuration from :kaffe, :producer" do
195216 producers_config = Application . get_env ( :kaffe , :producers )
196- producer_config = producers_config |> Map . values ( ) |> List . first ( )
217+ producer_config = producers_config |> Keyword . values ( ) |> List . first ( )
197218
198219 Application . delete_env ( :kaffe , :producers )
199220 Application . put_env ( :kaffe , :producer , producer_config )
@@ -214,13 +235,13 @@ defmodule Kaffe.Config.ProducerTest do
214235 To ensure backward compatibility :kaffe, :producers was set to a map \
215236 with default producer name as the key and single producer config as the value:
216237
217- config :kaffe, producers: %{ \" producer\" => #{ inspect ( producer_config ) } }
238+ config :kaffe, producers: [ producer: #{ inspect ( producer_config ) } ]
218239 """
219240 end
220241
221242 test "raises error is both :producer and :producers keys are present" do
222243 producers_config = Application . get_env ( :kaffe , :producers )
223- producer_config = producers_config |> Map . values ( ) |> List . first ( )
244+ producer_config = producers_config |> Keyword . values ( ) |> List . first ( )
224245
225246 Application . put_env ( :kaffe , :producer , producer_config )
226247
0 commit comments