@@ -194,6 +194,102 @@ public function createConfigDataProvider(): array
194194 ];
195195 }
196196
197+ /**
198+ * @param array $options
199+ * @param array $expectedResult
200+ * @dataProvider updateConfigDataProvider
201+ */
202+ public function testUpdateConfig (array $ options , array $ expectedResult )
203+ {
204+ $ valueMap = [
205+ [ 'lock/config/prefix ' , null , 'saved_prefix ' ],
206+ [ 'lock/provider ' , 'db ' , 'db ' ]
207+ ];
208+ $ this ->deploymentConfigMock
209+ ->expects ($ this ->any ())
210+ ->method ('get ' )
211+ ->willReturnMap ($ valueMap );
212+ $ data = $ this ->lockConfigOptionsList ->createConfig ($ options , $ this ->deploymentConfigMock );
213+ $ this ->assertInstanceOf (ConfigData::class, $ data );
214+ $ this ->assertTrue ($ data ->isOverrideWhenSave ());
215+ $ this ->assertSame ($ expectedResult , $ data ->getData ());
216+ }
217+
218+ /**
219+ * @return array
220+ * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
221+ */
222+ public function updateConfigDataProvider (): array
223+ {
224+ return [
225+ 'Check existent value for lock-db-prefix is not erased with no parameter specified ' => [
226+ 'options ' => [],
227+ 'expectedResult ' => [
228+ 'lock ' => [
229+ 'provider ' => LockBackendFactory::LOCK_DB ,
230+ 'config ' => [
231+ 'prefix ' => 'saved_prefix ' ,
232+ ],
233+ ],
234+ ],
235+ ],
236+ 'Check lock-db-prefix options overrides existing value when parameter is specified ' => [
237+ 'options ' => [
238+ LockConfigOptionsList::INPUT_KEY_LOCK_PROVIDER => LockBackendFactory::LOCK_DB ,
239+ LockConfigOptionsList::INPUT_KEY_LOCK_DB_PREFIX => 'new_prefix '
240+ ],
241+ 'expectedResult ' => [
242+ 'lock ' => [
243+ 'provider ' => LockBackendFactory::LOCK_DB ,
244+ 'config ' => [
245+ 'prefix ' => 'new_prefix ' ,
246+ ],
247+ ],
248+ ],
249+ ],
250+ 'Check lock-db-prefix options overrides existing value when only this parameter is specified ' => [
251+ 'options ' => [
252+ LockConfigOptionsList::INPUT_KEY_LOCK_DB_PREFIX => 'new_prefix '
253+ ],
254+ 'expectedResult ' => [
255+ 'lock ' => [
256+ 'provider ' => LockBackendFactory::LOCK_DB ,
257+ 'config ' => [
258+ 'prefix ' => 'new_prefix ' ,
259+ ],
260+ ],
261+ ],
262+ ],
263+ 'Check that lock-db-prefix value is not erased when when only lock-provider is specified as db ' => [
264+ 'options ' => [
265+ LockConfigOptionsList::INPUT_KEY_LOCK_PROVIDER => LockBackendFactory::LOCK_DB ,
266+ ],
267+ 'expectedResult ' => [
268+ 'lock ' => [
269+ 'provider ' => LockBackendFactory::LOCK_DB ,
270+ 'config ' => [
271+ 'prefix ' => 'saved_prefix ' ,
272+ ],
273+ ],
274+ ],
275+ ],
276+ 'Check specific db lock prefix empty options overrides existing value ' => [
277+ 'options ' => [
278+ LockConfigOptionsList::INPUT_KEY_LOCK_PROVIDER => LockBackendFactory::LOCK_DB ,
279+ LockConfigOptionsList::INPUT_KEY_LOCK_DB_PREFIX => ''
280+ ],
281+ 'expectedResult ' => [
282+ 'lock ' => [
283+ 'provider ' => LockBackendFactory::LOCK_DB ,
284+ 'config ' => [
285+ 'prefix ' => '' ,
286+ ],
287+ ],
288+ ],
289+ ],
290+ ];
291+ }
292+
197293 /**
198294 * @param array $options
199295 * @param array $expectedResult
0 commit comments