diff --git a/game-server/runtest.sh b/game-server/runtest.sh index 3a65509af..26fe263ee 100755 --- a/game-server/runtest.sh +++ b/game-server/runtest.sh @@ -1,3 +1,10 @@ cp ./test/PinusWSClient.ts ./node_modules/pinus-robot-plugin/src/PinusWSClient.ts cp ./test/PinusWSClient.js ./node_modules/pinus-robot-plugin/dist/PinusWSClient.js -./node_modules/mocha/bin/mocha -t 5000 -r ts-node/register ./test/**test.ts + +if [ -n "$1" ] ; then + echo ${1} + ./node_modules/mocha/bin/mocha -t 5000 -r ts-node/register ./test/${1}.test.ts +else + echo 'all' + ./node_modules/mocha/bin/mocha -t 5000 -r ts-node/register ./test/**test.ts +fi diff --git a/game-server/test/task.test.ts b/game-server/test/task.test.ts index e7ae9501e..461645569 100644 --- a/game-server/test/task.test.ts +++ b/game-server/test/task.test.ts @@ -39,7 +39,28 @@ describe('任务测试', function () { }); it('检查领取主线任务', function (done) { - checkReceiveTask(pinusClient, done, TASK_FUN_TYPE.MAIN); + const type = TASK_FUN_TYPE.MAIN; + // 完成所有主线任务 + pinusClient.request('role.taskHandler.debugRefTask', { magicWord: DEBUG_MAGIC_WORD, type }, (res) => { + checkSuccessResponse(res); + pinusClient.request('role.taskHandler.debugCompleteMainStage', { magicWord: DEBUG_MAGIC_WORD, type }, (res) => { + checkSuccessResponse(res); + expect(res.data.mainTask.taskList).to.be.an('array'); + expect(res.data.mainTask.stage).to.be.a('number'); + let promiseFuns = res.data.mainTask.taskList.map(task => { + return receiveTaskPromise(pinusClient, { type, id: task.id }); + }); + Promise.all(promiseFuns).then(() => { + pinusClient.request('role.taskHandler.receiveMainStage', {stage: res.data.mainTask.stage}, (res) => { + checkSuccessResponse(res); + checkMainTask(res.data); + checkDisplayItems(res.data.goods); + done(); + }) + }) + }); + + }); }); it('检查领取每日任务', function (done) { checkReceiveTask(pinusClient, done, TASK_FUN_TYPE.DAILY); @@ -47,9 +68,53 @@ describe('任务测试', function () { it('检查领取成就', function (done) { checkReceiveTask(pinusClient, done, TASK_FUN_TYPE.ACHIEVEMENT); }); + it('领取每日活跃奖励', function (done) { + const type = TASK_FUN_TYPE.DAILY; + // 完成所有主线任务 + pinusClient.request('role.taskHandler.debugRefTask', { magicWord: DEBUG_MAGIC_WORD, type }, (res) => { + checkSuccessResponse(res); + pinusClient.request('role.taskHandler.debugIncPoint', { magicWord: DEBUG_MAGIC_WORD, type, point: 500 }, (res) => { + checkSuccessResponse(res); + pinusClient.request('role.taskHandler.receiveActiveReward', {}, (res) => { + checkSuccessResponse(res); + expect(res.data.point).to.be.a('number'); + checkDisplayItems(res.data.goods); + done(); + }) + }); + + }); + }); + it('领取每周活跃奖励', function (done) { + checkReceiveBox(pinusClient, done, TASK_FUN_TYPE.DAILY) + }); + + it('领取成就积分宝箱', function (done) { + checkReceiveBox(pinusClient, done, TASK_FUN_TYPE.ACHIEVEMENT) + }); }); +function receiveTaskPromise(pinusClient, param) { + return new Promise(resolve => { + receiveTask(pinusClient, param, resolve) + }) +} + +function receiveTask(pinusClient, param, resolve) { + pinusClient.request('role.taskHandler.receiveTask', param, (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); + resolve(); + }); +} + // 检查领取 function checkReceiveTask(pinusClient, done, type: number) { // 清空任务 @@ -60,18 +125,7 @@ function checkReceiveTask(pinusClient, done, type: number) { 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(); - }); + receiveTask(pinusClient, { type, id: res.data.task.id }, done); }); }); @@ -110,7 +164,30 @@ function checkAchievement(achievement) { // 检查在taskList中的某一个任务数据 function checkSingleTask(task) { expect(task).to.be.an('object'); + expect(task.type).to.be.a('number'); expect(task.id).to.be.a('number'); expect(task.count).to.be.a('number'); expect(task.received).to.be.a('boolean'); +} + +function checkReceiveBox(pinusClient, done, type: number) { + // 完成所有主线任务 + pinusClient.request('role.taskHandler.debugRefTask', { magicWord: DEBUG_MAGIC_WORD, type }, (res) => { + checkSuccessResponse(res); + pinusClient.request('role.taskHandler.debugIncPoint', { magicWord: DEBUG_MAGIC_WORD, type, point: 500 }, (res) => { + checkSuccessResponse(res); + pinusClient.request('role.taskHandler.receiveBox', { type, id: 1 }, (res) => { + checkSuccessResponse(res); + expect(res.data.type).to.be.a('number'); + expect(res.data.point).to.be.a('number'); + expect(res.data.weeklyPoint).to.be.a('number'); + res.data.box.forEach(id => { + expect(id).to.be.a('number'); + }) + checkDisplayItems(res.data.goods); + done(); + }) + }); + + }); } \ No newline at end of file