| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- namespace Test\Michel\Resolver;
- use Michel\Resolver\Option;
- use Michel\Resolver\OptionsResolver;
- use Michel\UniTester\TestCase;
- class DependentOptionsTest extends TestCase
- {
- protected function setUp(): void
- {
- // TODO: Implement setUp() method.
- }
- protected function tearDown(): void
- {
- // TODO: Implement tearDown() method.
- }
- protected function execute(): void
- {
- $this->testDependentOptionIsRequired();
- $this->testDependentOptionIsNotRequired();
- $this->testDependentOptionIsProvided();
- }
- public function testDependentOptionIsRequired(): void
- {
- $resolver = new OptionsResolver([
- Option::string('auth_method'),
- Option::string('password'),
- ]);
- $resolver->addRequiredIf('password', 'auth_method', 'credentials');
- $this->expectException(\InvalidArgumentException::class, function () use ($resolver) {
- $resolver->resolve(['auth_method' => 'credentials']);
- });
- }
- public function testDependentOptionIsNotRequired(): void
- {
- $resolver = new OptionsResolver([
- Option::string('auth_method'),
- Option::string('password')->setOptional(),
- ]);
- $resolver->addRequiredIf('password', 'auth_method', 'credentials');
- $options = $resolver->resolve(['auth_method' => 'token']);
- $this->assertNull($options['password']);
- }
- public function testDependentOptionIsProvided(): void
- {
- $resolver = new OptionsResolver([
- Option::string('auth_method'),
- Option::string('password'),
- ]);
- $resolver->addRequiredIf('password', 'auth_method', 'credentials');
- $options = $resolver->resolve(['auth_method' => 'credentials', 'password' => 'secret']);
- $this->assertArrayHasKey('password', $options);
- $this->assertStrictEquals('secret', $options['password']);
- }
- }
|