diff --git a/resources/assets/src/components/admin/Players.vue b/resources/assets/src/components/admin/Players.vue
index cf1bd1e5..7e81c87d 100644
--- a/resources/assets/src/components/admin/Players.vue
+++ b/resources/assets/src/components/admin/Players.vue
@@ -239,7 +239,7 @@ export default {
toastr.warning(msg);
}
},
- async deletePlayer(player) {
+ async deletePlayer({ pid, originalIndex }) {
const { dismiss } = await swal({
text: this.$t('admin.deletePlayerNotice'),
type: 'warning',
@@ -251,10 +251,10 @@ export default {
const { errno, msg } = await this.$http.post(
'/admin/players?action=delete',
- { pid: player.pid }
+ { pid }
);
if (errno === 0) {
- this.players = this.players.filter(({ pid }) => pid !== player.pid);
+ this.$delete(this.players, originalIndex);
toastr.success(msg);
} else {
toastr.warning(msg);
diff --git a/resources/assets/src/components/admin/Plugins.vue b/resources/assets/src/components/admin/Plugins.vue
index 73cb7cae..3eb80148 100644
--- a/resources/assets/src/components/admin/Plugins.vue
+++ b/resources/assets/src/components/admin/Plugins.vue
@@ -182,7 +182,7 @@ export default {
swal({ type: 'warning', text: msg });
}
},
- async deletePlugin({ name }) {
+ async deletePlugin({ name, originalIndex }) {
const { dismiss } = await swal({
text: this.$t('admin.confirmDeletion'),
type: 'warning',
@@ -197,8 +197,8 @@ export default {
{ action: 'delete', name }
);
if (errno === 0) {
+ this.$delete(this.plugins, originalIndex);
toastr.success(msg);
- this.plugins = this.plugins.filter(plugin => plugin.name !== name);
} else {
swal({ type: 'warning', text: msg });
}
diff --git a/resources/assets/src/components/admin/Users.vue b/resources/assets/src/components/admin/Users.vue
index 5113c7e9..fbd46db4 100644
--- a/resources/assets/src/components/admin/Users.vue
+++ b/resources/assets/src/components/admin/Users.vue
@@ -288,7 +288,7 @@ export default {
toastr.warning(msg);
}
},
- async deleteUser(user) {
+ async deleteUser({ uid, originalIndex }) {
const { dismiss } = await swal({
text: this.$t('admin.deleteUserNotice'),
type: 'warning',
@@ -300,10 +300,10 @@ export default {
const { errno, msg } = await this.$http.post(
'/admin/users?action=delete',
- { uid: user.uid }
+ { uid }
);
if (errno === 0) {
- this.users = this.users.filter(({ uid }) => uid !== user.uid);
+ this.$delete(this.users, originalIndex);
toastr.success(msg);
} else {
toastr.warning(msg);
diff --git a/resources/assets/src/components/user/Closet.vue b/resources/assets/src/components/user/Closet.vue
index bbd70bdb..08ccb97d 100644
--- a/resources/assets/src/components/user/Closet.vue
+++ b/resources/assets/src/components/user/Closet.vue
@@ -55,14 +55,14 @@
@@ -78,14 +78,14 @@
@@ -251,11 +251,11 @@ export default {
this[`${category}TotalPages`] = total_pages;
this[`${category}Items`] = items;
},
- removeSkinItem(tid) {
- this.skinItems = this.skinItems.filter(item => item.tid !== tid);
+ removeSkinItem(index) {
+ this.$delete(this.skinItems, index);
},
- removeCapeItem(tid) {
- this.capeItems = this.capeItems.filter(item => item.tid !== tid);
+ removeCapeItem(index) {
+ this.$delete(this.capeItems, index);
},
switchCategory() {
this.category = this.category === 'skin' ? 'cape' : 'skin';
diff --git a/resources/assets/src/components/user/ClosetItem.vue b/resources/assets/src/components/user/ClosetItem.vue
index 80262bc4..51f23d0f 100644
--- a/resources/assets/src/components/user/ClosetItem.vue
+++ b/resources/assets/src/components/user/ClosetItem.vue
@@ -107,7 +107,7 @@ export default {
);
if (errno === 0) {
- this.$emit('item-removed', this.tid);
+ this.$emit('item-removed');
swal({ type: 'success', text: msg });
} else {
toastr.warning(msg);
diff --git a/resources/assets/src/components/user/Players.vue b/resources/assets/src/components/user/Players.vue
index 59d18074..4ca26244 100644
--- a/resources/assets/src/components/user/Players.vue
+++ b/resources/assets/src/components/user/Players.vue
@@ -25,7 +25,7 @@
@@ -389,7 +389,7 @@ export default {
swal({ type: 'warning', text: msg });
}
},
- async deletePlayer(player) {
+ async deletePlayer(player, index) {
const { dismiss } = await swal({
title: this.$t('user.deletePlayer'),
text: this.$t('user.deletePlayerNotice'),
@@ -407,8 +407,8 @@ export default {
{ pid: player.pid }
);
if (errno === 0) {
+ this.$delete(this.players, index);
swal({ type: 'success', text: msg });
- this.players = this.players.filter(({ pid }) => pid !== player.pid);
} else {
swal({ type: 'warning', text: msg });
}
diff --git a/resources/assets/tests/components/admin/Players.test.js b/resources/assets/tests/components/admin/Players.test.js
index b0e28444..a261667d 100644
--- a/resources/assets/tests/components/admin/Players.test.js
+++ b/resources/assets/tests/components/admin/Players.test.js
@@ -191,5 +191,5 @@ test('delete player', async () => {
button.trigger('click');
await flushPromises();
- expect(wrapper.vm.players).toHaveLength(0);
+ expect(wrapper.text()).toContain('No data');
});
diff --git a/resources/assets/tests/components/admin/Plugins.test.js b/resources/assets/tests/components/admin/Plugins.test.js
index 5100ecfe..0a72f754 100644
--- a/resources/assets/tests/components/admin/Plugins.test.js
+++ b/resources/assets/tests/components/admin/Plugins.test.js
@@ -99,6 +99,7 @@ test('disable plugin', async () => {
button.trigger('click');
await flushPromises();
expect(toastr.success).toBeCalledWith('0');
+ expect(wrapper.text()).toContain('admin.enablePlugin');
});
test('delete plugin', async () => {
@@ -134,5 +135,5 @@ test('delete plugin', async () => {
button.trigger('click');
await flushPromises();
- expect(toastr.success).toBeCalledWith('0');
+ expect(wrapper.text()).toContain('No data');
});
diff --git a/resources/assets/tests/components/admin/Users.test.js b/resources/assets/tests/components/admin/Users.test.js
index bbd95b6b..96892db7 100644
--- a/resources/assets/tests/components/admin/Users.test.js
+++ b/resources/assets/tests/components/admin/Users.test.js
@@ -529,5 +529,5 @@ test('delete user', async () => {
button.trigger('click');
await flushPromises();
- expect(wrapper.vm.users).toHaveLength(0);
+ expect(wrapper.text()).toContain('No data');
});
diff --git a/resources/assets/tests/components/user/Closet.test.js b/resources/assets/tests/components/user/Closet.test.js
index 34e7189d..761cf7f2 100644
--- a/resources/assets/tests/components/user/Closet.test.js
+++ b/resources/assets/tests/components/user/Closet.test.js
@@ -135,17 +135,17 @@ test('reload closet when page changed', () => {
test('remove skin item', () => {
Vue.prototype.$http.get.mockResolvedValue({});
const wrapper = mount(Closet);
- wrapper.setData({ skinItems: [{ tid: 1 }, { tid: 2 }] });
- wrapper.vm.removeSkinItem(1);
- expect(wrapper.findAll(ClosetItem)).toHaveLength(1);
+ wrapper.setData({ skinItems: [{ tid: 1 }] });
+ wrapper.vm.removeSkinItem(0);
+ expect(wrapper.find('#skin-category').text()).toContain('user.emptyClosetMsg');
});
test('remove cape item', () => {
Vue.prototype.$http.get.mockResolvedValue({});
const wrapper = mount(Closet);
- wrapper.setData({ capeItems: [{ tid: 1 }, { tid: 2 }], category: 'cape' });
- wrapper.vm.removeCapeItem(1);
- expect(wrapper.findAll(ClosetItem)).toHaveLength(1);
+ wrapper.setData({ capeItems: [{ tid: 1 }], category: 'cape' });
+ wrapper.vm.removeCapeItem(0);
+ expect(wrapper.find('#cape-category').text()).toContain('user.emptyClosetMsg');
});
test('compute avatar URL', () => {
diff --git a/resources/assets/tests/components/user/ClosetItem.test.js b/resources/assets/tests/components/user/ClosetItem.test.js
index 98300d43..d8aa7dc9 100644
--- a/resources/assets/tests/components/user/ClosetItem.test.js
+++ b/resources/assets/tests/components/user/ClosetItem.test.js
@@ -86,7 +86,7 @@ test('remove texture', async () => {
button.trigger('click');
await flushPromises();
- expect(wrapper.emitted()['item-removed'][0][0]).toBe(1);
+ expect(wrapper.emitted()['item-removed']).toBeTruthy();
expect(Vue.prototype.$http.post).toBeCalledWith('/user/closet/remove', { tid: 1 });
});
diff --git a/resources/assets/tests/components/user/Players.test.js b/resources/assets/tests/components/user/Players.test.js
index 45785f75..807e3c6c 100644
--- a/resources/assets/tests/components/user/Players.test.js
+++ b/resources/assets/tests/components/user/Players.test.js
@@ -159,8 +159,7 @@ test('delete player', async () => {
expect(wrapper.text()).toContain('to-be-deleted');
button.trigger('click');
- await flushPromises(); // Finish HTTP request
- await wrapper.vm.$nextTick(); // Update DOM
+ await flushPromises();
expect(wrapper.text()).not.toContain('to-be-deleted');
});