Skip to content

Commit

Permalink
Renamed when() to whenHas() + Added whenFilled() method
Browse files Browse the repository at this point in the history
  • Loading branch information
pascalbaljet committed Aug 12, 2020
1 parent e00a84b commit 3a518c7
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 12 deletions.
20 changes: 18 additions & 2 deletions src/Illuminate/Http/Concerns/InteractsWithInput.php
Expand Up @@ -432,18 +432,34 @@ protected function retrieveItem($source, $key, $default)
}

/**
* Apply the callback if the request contains a given input item key.
* Apply the callback if the request contains the given input item key.
*
* @param string $key
* @param callable $callback
* @return $this
*/
public function when($key, callable $callback)
public function whenHas($key, callable $callback)
{
if ($this->has($key)) {
$callback(data_get($this->all(), $key));
}

return $this;
}

/**
* Apply the callback if the request contains a non-empty value for the given input item key.
*
* @param string $key
* @param callable $callback
* @return $this
*/
public function whenFilled($key, callable $callback)
{
if ($this->filled($key)) {
$callback(data_get($this->all(), $key));
}

return $this;
}
}
45 changes: 35 additions & 10 deletions tests/Http/HttpRequestTest.php
Expand Up @@ -300,35 +300,60 @@ public function testHasMethod()
$this->assertTrue($request->has('foo.baz'));
}

public function testWhenMethod()
public function testWhenHasMethod()
{
$request = Request::create('/', 'GET', ['name' => 'Taylor', 'age' => '', 'city' => null]);

$name = null;
$age = null;
$city = '';
$foo = null;
$name = $age = $city = $foo = false;

$request->when('name', function ($value) use (&$name) {
$request->whenHas('name', function ($value) use (&$name) {
$name = $value;
});

$request->when('age', function ($value) use (&$age) {
$request->whenHas('age', function ($value) use (&$age) {
$age = $value;
});

$request->when('city', function ($value) use (&$city) {
$request->whenHas('city', function ($value) use (&$city) {
$city = $value;
});

$request->when('foo', function () use (&$foo) {
$request->whenHas('foo', function () use (&$foo) {
$foo = 'test';
});

$this->assertSame('Taylor', $name);
$this->assertSame('', $age);
$this->assertNull($city);
$this->assertNull($foo);
$this->assertFalse($foo);
}

public function testWhenFilledMethod()
{
$request = Request::create('/', 'GET', ['name' => 'Taylor', 'age' => '', 'city' => null]);

$name = $age = $city = $foo = false;

$request->whenFilled('name', function ($value) use (&$name) {
$name = $value;
});

$request->whenFilled('age', function ($value) use (&$age) {
$age = 'test';
});

$request->whenFilled('city', function ($value) use (&$city) {
$city = 'test';
});

$request->whenFilled('foo', function () use (&$foo) {
$foo = 'test';
});

$this->assertSame('Taylor', $name);
$this->assertFalse($age);
$this->assertFalse($city);
$this->assertFalse($foo);
}

public function testMissingMethod()
Expand Down

0 comments on commit 3a518c7

Please sign in to comment.