refactor validation
This commit is contained in:
parent
b8ab1f41e5
commit
e4d8289eba
|
|
@ -17,6 +17,7 @@ use Blessing\Filter;
|
||||||
use Blessing\Rejection;
|
use Blessing\Rejection;
|
||||||
use Illuminate\Contracts\Events\Dispatcher;
|
use Illuminate\Contracts\Events\Dispatcher;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
class PlayerController extends Controller
|
class PlayerController extends Controller
|
||||||
{
|
{
|
||||||
|
|
@ -78,6 +79,7 @@ class PlayerController extends Controller
|
||||||
new Rules\PlayerName(),
|
new Rules\PlayerName(),
|
||||||
'min:'.option('player_name_length_min'),
|
'min:'.option('player_name_length_min'),
|
||||||
'max:'.option('player_name_length_max'),
|
'max:'.option('player_name_length_max'),
|
||||||
|
'unique:players',
|
||||||
],
|
],
|
||||||
])['name'];
|
])['name'];
|
||||||
$name = $filter->apply('new_player_name', $name);
|
$name = $filter->apply('new_player_name', $name);
|
||||||
|
|
@ -89,10 +91,6 @@ class PlayerController extends Controller
|
||||||
return json($can->getReason(), 1);
|
return json($can->getReason(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Player::where('name', $name)->count() > 0) {
|
|
||||||
return json(trans('user.player.add.repeated'), 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($user->score < (int) option('score_per_player')) {
|
if ($user->score < (int) option('score_per_player')) {
|
||||||
return json(trans('user.player.add.lack-score'), 7);
|
return json(trans('user.player.add.lack-score'), 7);
|
||||||
}
|
}
|
||||||
|
|
@ -162,6 +160,7 @@ class PlayerController extends Controller
|
||||||
new Rules\PlayerName(),
|
new Rules\PlayerName(),
|
||||||
'min:'.option('player_name_length_min'),
|
'min:'.option('player_name_length_min'),
|
||||||
'max:'.option('player_name_length_max'),
|
'max:'.option('player_name_length_max'),
|
||||||
|
Rule::unique('players')->ignore($pid),
|
||||||
],
|
],
|
||||||
])['name'];
|
])['name'];
|
||||||
$name = $filter->apply('new_player_name', $name);
|
$name = $filter->apply('new_player_name', $name);
|
||||||
|
|
@ -174,10 +173,6 @@ class PlayerController extends Controller
|
||||||
return json($can->getReason(), 1);
|
return json($can->getReason(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Player::where('name', $name)->count() > 0) {
|
|
||||||
return json(trans('user.player.rename.repeated'), 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
$old = $player->replicate();
|
$old = $player->replicate();
|
||||||
$player->name = $name;
|
$player->name = $name;
|
||||||
$player->save();
|
$player->save();
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,13 @@ class PlayerControllerTest extends TestCase
|
||||||
['name' => 'yjsnpi']
|
['name' => 'yjsnpi']
|
||||||
)->assertJsonValidationErrors('name');
|
)->assertJsonValidationErrors('name');
|
||||||
|
|
||||||
// Lack of score
|
// with an existed player name
|
||||||
option(['player_name_rule' => 'official']);
|
option(['player_name_rule' => 'official']);
|
||||||
|
$existed = factory(Player::class)->create();
|
||||||
|
$this->postJson('/user/player/add', ['name' => $existed->name])
|
||||||
|
->assertJsonValidationErrors('name');
|
||||||
|
|
||||||
|
// Lack of score
|
||||||
$user = factory(User::class)->create(['score' => 0]);
|
$user = factory(User::class)->create(['score' => 0]);
|
||||||
$this->actingAs($user)->postJson(
|
$this->actingAs($user)->postJson(
|
||||||
'/user/player/add',
|
'/user/player/add',
|
||||||
|
|
@ -140,16 +145,6 @@ class PlayerControllerTest extends TestCase
|
||||||
User::find($user->uid)->score
|
User::find($user->uid)->score
|
||||||
);
|
);
|
||||||
|
|
||||||
// Add a existed player
|
|
||||||
Event::fake();
|
|
||||||
$this->postJson('/user/player/add', ['name' => '角色名'])
|
|
||||||
->assertJson([
|
|
||||||
'code' => 6,
|
|
||||||
'message' => trans('user.player.add.repeated'),
|
|
||||||
]);
|
|
||||||
Event::assertNotDispatched('player.adding');
|
|
||||||
Event::assertNotDispatched('player.added');
|
|
||||||
|
|
||||||
// Single player
|
// Single player
|
||||||
option(['single_player' => true]);
|
option(['single_player' => true]);
|
||||||
$this->postJson('/user/player/add', ['name' => 'abc'])
|
$this->postJson('/user/player/add', ['name' => 'abc'])
|
||||||
|
|
@ -260,19 +255,10 @@ class PlayerControllerTest extends TestCase
|
||||||
$this->postJson('/user/player/rename/'.$player->pid, ['name' => '\\'])
|
$this->postJson('/user/player/rename/'.$player->pid, ['name' => '\\'])
|
||||||
->assertJsonValidationErrors('name');
|
->assertJsonValidationErrors('name');
|
||||||
|
|
||||||
// Use a duplicated player name
|
// with an existed player name
|
||||||
$name = factory(Player::class)->create()->name;
|
$existed = factory(Player::class)->create();
|
||||||
$this->postJson('/user/player/rename/'.$player->pid, ['name' => $name])
|
$this->postJson('/user/player/rename/'.$player->pid, ['name' => $existed->name])
|
||||||
->assertJson([
|
->assertJsonValidationErrors('name');
|
||||||
'code' => 6,
|
|
||||||
'message' => trans('user.player.rename.repeated'),
|
|
||||||
]);
|
|
||||||
Event::assertDispatched('player.renaming');
|
|
||||||
$filter->assertApplied('new_player_name', function ($newName) use ($name) {
|
|
||||||
$this->assertEquals($name, $newName);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Rejected by filter
|
// Rejected by filter
|
||||||
$filter = Fakes\Filter::fake();
|
$filter = Fakes\Filter::fake();
|
||||||
|
|
@ -315,6 +301,11 @@ class PlayerControllerTest extends TestCase
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
$filter->assertApplied('new_player_name', function ($name) {
|
||||||
|
$this->assertEquals('new_name', $name);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
// Single player
|
// Single player
|
||||||
option(['single_player' => true]);
|
option(['single_player' => true]);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user