Skip to content
Prev Previous commit
[Slim4] Fix enum option of string mocking
  • Loading branch information
ybelenko committed Jan 8, 2020
commit 8fa10fdf0d7c6c5d9fcd3e7a1e14b1eb01ab868a
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ final class OpenApiDataMocker implements IMocker
case IMocker::DATA_TYPE_STRING:
$minLength = $options['minLength'] ?? 0;
$maxLength = $options['maxLength'] ?? null;
return $this->mockString($dataFormat, $minLength, $maxLength);
$enum = $options['enum'] ?? null;
return $this->mockString($dataFormat, $minLength, $maxLength, $enum);
case IMocker::DATA_TYPE_BOOLEAN:
return $this->mockBoolean();
case IMocker::DATA_TYPE_ARRAY:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,18 @@ class OpenApiDataMockerTest extends TestCase
];
}

/**
* @covers ::mock
*/
public function testMockWithStringEnumOptions()
{
$mocker = new OpenApiDataMocker();
$string = $mocker->mock(IMocker::DATA_TYPE_STRING, null, [
'enum' => ['foobar', 'foobaz', 'helloworld'],
]);
$this->assertContains($string, ['foobar', 'foobaz', 'helloworld']);
}

/**
* @dataProvider provideMockIntegerCorrectArguments
* @covers ::mockInteger
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ public function mock($dataType, $dataFormat = null, $options = [])
case IMocker::DATA_TYPE_STRING:
$minLength = $options['minLength'] ?? 0;
$maxLength = $options['maxLength'] ?? null;
return $this->mockString($dataFormat, $minLength, $maxLength);
$enum = $options['enum'] ?? null;
return $this->mockString($dataFormat, $minLength, $maxLength, $enum);
case IMocker::DATA_TYPE_BOOLEAN:
return $this->mockBoolean();
case IMocker::DATA_TYPE_ARRAY:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,18 @@ public function provideMockInvalidArguments()
];
}

/**
* @covers ::mock
*/
public function testMockWithStringEnumOptions()
{
$mocker = new OpenApiDataMocker();
$string = $mocker->mock(IMocker::DATA_TYPE_STRING, null, [
'enum' => ['foobar', 'foobaz', 'helloworld'],
]);
$this->assertContains($string, ['foobar', 'foobaz', 'helloworld']);
}

/**
* @dataProvider provideMockIntegerCorrectArguments
* @covers ::mockInteger
Expand Down