@@ -73,4 +73,74 @@ public function testExtensionLoadsFilledConfigs(): void
7373 self ::assertInstanceOf (Reference::class, $ strat1 );
7474 self ::assertSame (LowercaseNamingStrategy::class, (string ) $ strat1 );
7575 }
76+
77+ public function testExtensionLoadsConfigsWithDefaultStrategy (): void
78+ {
79+ $ builder = new ContainerBuilder ();
80+ $ extension = new LamodaEnumExtension ();
81+
82+ $ extension ->load (
83+ [
84+ [
85+ 'enum_name_type_mapping ' => true ,
86+ 'default_strategy ' => 'lowercase ' ,
87+ 'dbal_types ' => [
88+ 'type_1 ' => TestEnum::class,
89+ 'type_2 ' => [
90+ 'class ' => TestEnum::class,
91+ 'strategy ' => 'identical ' ,
92+ ],
93+ ],
94+ ],
95+ ],
96+ $ builder
97+ );
98+
99+ $ initDef = $ builder ->getDefinition (EnumTypeInitializer::class);
100+ $ calls = $ initDef ->getMethodCalls ();
101+
102+ /** @var Reference $strat1 */
103+ $ strat1 = $ calls [0 ][1 ][2 ];
104+ self ::assertInstanceOf (Reference::class, $ strat1 );
105+ self ::assertSame (LowercaseNamingStrategy::class, (string ) $ strat1 );
106+
107+ /** @var Reference $strat1 */
108+ $ strat1 = $ calls [1 ][1 ][2 ];
109+ self ::assertInstanceOf (Reference::class, $ strat1 );
110+ self ::assertSame (IdenticalNamingStrategy::class, (string ) $ strat1 );
111+ }
112+
113+ public function testExtensionLoadsConfigsWithoutStrategies (): void
114+ {
115+ $ builder = new ContainerBuilder ();
116+ $ extension = new LamodaEnumExtension ();
117+
118+ $ extension ->load (
119+ [
120+ [
121+ 'enum_name_type_mapping ' => true ,
122+ 'dbal_types ' => [
123+ 'type_1 ' => TestEnum::class,
124+ 'type_2 ' => [
125+ 'class ' => TestEnum::class,
126+ ],
127+ ],
128+ ],
129+ ],
130+ $ builder
131+ );
132+
133+ $ initDef = $ builder ->getDefinition (EnumTypeInitializer::class);
134+ $ calls = $ initDef ->getMethodCalls ();
135+
136+ /** @var Reference $strat1 */
137+ $ strat1 = $ calls [0 ][1 ][2 ];
138+ self ::assertInstanceOf (Reference::class, $ strat1 );
139+ self ::assertSame (IdenticalNamingStrategy::class, (string )$ strat1 );
140+
141+ /** @var Reference $strat1 */
142+ $ strat1 = $ calls [1 ][1 ][2 ];
143+ self ::assertInstanceOf (Reference::class, $ strat1 );
144+ self ::assertSame (IdenticalNamingStrategy::class, (string )$ strat1 );
145+ }
76146}
0 commit comments