Files
ZYZ/game-server/test/task.test.ts
2021-04-30 11:28:47 +08:00

116 lines
3.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Client } from './Client';
import 'mocha';
import { PinusWSClient } from 'pinus-robot-plugin';
import { expect } from 'chai';
import { checkSuccessResponse, checkDisplayItems } from './CheckPatten';
import { DEBUG_MAGIC_WORD } from '../app/consts';
import { TASK_FUN_TYPE } from '../../shared/consts';
describe('任务测试', function () {
let pinusClient: PinusWSClient;
let roleInfo;
beforeEach(function (done) {
const c = new Client();
const timer = setInterval(() => {
if (c.client) {
pinusClient = c.client;
roleInfo = c.roleInfo;
clearInterval(timer);
done();
}
}, 500);
});
afterEach(function (done) {
pinusClient.disconnect();
// disconnect 后等待 500ms供服务器清理环境、退出频道等
setTimeout(() => {
done();
}, 500);
});
it('检查entery中返回的任务状态', function (done) {
checkMainTask(roleInfo.mainTask);
checkDailyTask(roleInfo.dailyTask);
checkAchievement(roleInfo.achievement);
done();
});
it('检查领取主线任务', function (done) {
checkReceiveTask(pinusClient, done, TASK_FUN_TYPE.MAIN);
});
it('检查领取每日任务', function (done) {
checkReceiveTask(pinusClient, done, TASK_FUN_TYPE.DAILY);
});
it('检查领取成就', function (done) {
checkReceiveTask(pinusClient, done, TASK_FUN_TYPE.ACHIEVEMENT);
});
});
// 检查领取
function checkReceiveTask(pinusClient, done, type: number) {
// 清空任务
pinusClient.request('role.taskHandler.debugRefTask', { magicWord: DEBUG_MAGIC_WORD, type }, (res) => {
checkSuccessResponse(res);
// 完成一个任务
pinusClient.request('role.taskHandler.debugCompleteRandTask', { magicWord: DEBUG_MAGIC_WORD, type }, (res) => {
checkSuccessResponse(res);
expect(res.data.task).to.be.an('object');
expect(res.data.task.id).to.be.a('number');
pinusClient.request('role.taskHandler.receiveTask', { type, id: res.data.task.id }, (res) => {
checkSuccessResponse(res);
expect(res.data.type).to.be.a('number');
expect(res.data.id).to.be.a('number');
expect(res.data.count).to.be.a('number');
expect(res.data.received).equal(true);
expect(res.data.point).to.be.a('number');
expect(res.data.weeklyPoint).to.be.a('number');
checkDisplayItems(res.data.goods);
done();
});
});
});
}
// 检查主线任务数据
function checkMainTask(mainTask) {
expect(mainTask).to.be.an('object');
expect(mainTask.stage).to.be.a('number');
expect(mainTask.taskList).to.be.an('array');
mainTask.taskList.forEach(task => checkSingleTask(task));
}
// 检查日常任务数据
function checkDailyTask(dailyTask) {
expect(dailyTask).to.be.an('object');
expect(dailyTask.point).to.be.a('number');
expect(dailyTask.weeklyPoint).to.be.an('number');
dailyTask.taskList.forEach(task => checkSingleTask(task));
dailyTask.box.forEach(id => {
expect(id).to.be.a('number');
})
}
// 检查成就
function checkAchievement(achievement) {
expect(achievement).to.be.an('object');
expect(achievement.point).to.be.a('number');
achievement.taskList.forEach(task => checkSingleTask(task));
achievement.box.forEach(id => {
expect(id).to.be.a('number');
})
}
// 检查在taskList中的某一个任务数据
function checkSingleTask(task) {
expect(task).to.be.an('object');
expect(task.id).to.be.a('number');
expect(task.count).to.be.a('number');
expect(task.received).to.be.a('boolean');
}