$case->value, FormFieldBindingMode::cases()); $this->assertSame(['entity_owned', 'mirrored'], $values); } public function test_mode_from_string(): void { $this->assertSame(FormFieldBindingMode::EntityOwned, FormFieldBindingMode::from('entity_owned')); $this->assertSame(FormFieldBindingMode::Mirrored, FormFieldBindingMode::from('mirrored')); } public function test_mode_rejects_legacy_form_owned(): void { $this->expectException(\ValueError::class); FormFieldBindingMode::from('form_owned'); } public function test_merge_strategy_has_expected_cases(): void { $values = array_map(fn ($case) => $case->value, FormFieldBindingMergeStrategy::cases()); sort($values); $this->assertSame(['append', 'first_write_wins', 'overwrite', 'replace'], $values); } public function test_merge_strategy_from_string(): void { $this->assertSame( FormFieldBindingMergeStrategy::Overwrite, FormFieldBindingMergeStrategy::from('overwrite'), ); $this->assertSame( FormFieldBindingMergeStrategy::FirstWriteWins, FormFieldBindingMergeStrategy::from('first_write_wins'), ); } }