New API: add new player

This commit is contained in:
Pig Fang 2019-04-23 23:03:12 +08:00
parent 3a4bd6b24b
commit 1c205f6842
5 changed files with 21 additions and 19 deletions

View File

@ -83,13 +83,13 @@ class PlayerController extends Controller
return json(trans('user.player.add.single'), 1);
}
$this->validate($request, [
'player_name' => 'required|player_name|min:'.option('player_name_length_min').'|max:'.option('player_name_length_max'),
]);
$name = $this->validate($request, [
'name' => 'required|player_name|min:'.option('player_name_length_min').'|max:'.option('player_name_length_max'),
])['name'];
event(new CheckPlayerExists($request->input('player_name')));
event(new CheckPlayerExists($name));
if (! Player::where('name', $request->input('player_name'))->get()->isEmpty()) {
if (! Player::where('name', $name)->get()->isEmpty()) {
return json(trans('user.player.add.repeated'), 6);
}
@ -97,12 +97,12 @@ class PlayerController extends Controller
return json(trans('user.player.add.lack-score'), 7);
}
event(new PlayerWillBeAdded($request->input('player_name')));
event(new PlayerWillBeAdded($name));
$player = new Player;
$player->uid = $user->uid;
$player->name = $request->input('player_name');
$player->name = $name;
$player->tid_skin = 0;
$player->save();
@ -110,7 +110,7 @@ class PlayerController extends Controller
$user->setScore(option('score_per_player'), 'minus');
return json(trans('user.player.add.success', ['name' => $request->input('player_name')]), 0);
return json(trans('user.player.add.success', ['name' => $name]), 0);
}
public function delete()

View File

@ -62,7 +62,7 @@ export default {
async addPlayer() {
const { code, message } = await this.$http.post(
'/user/player/add',
{ player_name: this.name }
{ name: this.name }
)
if (code === 0) {
$('#modal-add-player').modal('hide')

View File

@ -21,7 +21,7 @@ test('add player', async () => {
button.trigger('click')
expect(Vue.prototype.$http.post).toBeCalledWith(
'/user/player/add',
{ player_name: 'the-new' }
{ name: 'the-new' }
)
await flushPromises()
await wrapper.vm.$nextTick()

View File

@ -8,5 +8,7 @@ Route::prefix('auth')->group(function ($route) {
Route::prefix('user')->middleware('auth.jwt')->group(function ($route) {
$route->put('sign', 'UserController@sign');
$route->post('player', 'PlayerController@add');
});

View File

@ -41,29 +41,29 @@ class PlayerControllerTest extends TestCase
public function testAdd()
{
// Without player name
$this->postJson('/user/player/add')->assertJsonValidationErrors('player_name');
$this->postJson('/user/player/add')->assertJsonValidationErrors('name');
// Only A-Za-z0-9_ are allowed
option(['player_name_rule' => 'official']);
$this->postJson(
'/user/player/add',
['player_name' => '角色名']
)->assertJsonValidationErrors('player_name');
['name' => '角色名']
)->assertJsonValidationErrors('name');
// Custom player name rule (regexp)
option(['player_name_rule' => 'custom']);
option(['custom_player_name_regexp' => '/^([0-9]+)$/']);
$this->postJson(
'/user/player/add',
['player_name' => 'yjsnpi']
)->assertJsonValidationErrors('player_name');
['name' => 'yjsnpi']
)->assertJsonValidationErrors('name');
// Lack of score
option(['player_name_rule' => 'official']);
$user = factory(User::class)->create(['score' => 0]);
$this->actingAs($user)->postJson(
'/user/player/add',
['player_name' => 'no_score']
['name' => 'no_score']
)->assertJson([
'code' => 7,
'message' => trans('user.player.add.lack-score'),
@ -75,7 +75,7 @@ class PlayerControllerTest extends TestCase
$user = factory(User::class)->create();
$score = $user->score;
$this->actingAs($user)->postJson('/user/player/add', [
'player_name' => '角色名',
'name' => '角色名',
])->assertJson([
'code' => 0,
'message' => trans('user.player.add.success', ['name' => '角色名']),
@ -92,7 +92,7 @@ class PlayerControllerTest extends TestCase
);
// Add a existed player
$this->postJson('/user/player/add', ['player_name' => '角色名'])
$this->postJson('/user/player/add', ['name' => '角色名'])
->assertJson([
'code' => 6,
'message' => trans('user.player.add.repeated'),
@ -100,7 +100,7 @@ class PlayerControllerTest extends TestCase
// Single player
option(['single_player' => true]);
$this->postJson('/user/player/add', ['player_name' => 'abc'])
$this->postJson('/user/player/add', ['name' => 'abc'])
->assertJson([
'code' => 1,
'message' => trans('user.player.add.single'),