Files
ZYZ/game-server/test/gacha.test.ts
2022-07-08 14:09:18 +08:00

161 lines
5.2 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, checkHero, addItem } from './CheckPatten';
import { GACHA_TYPE } from '../../shared/consts';
describe('抽卡测试', function () {
let pinusClient: PinusWSClient;
let roleInfo;
before(function (done) {
const c = new Client();
const timer = setInterval(() => {
if (c.client) {
pinusClient = c.client;
roleInfo = c.roleInfo;
clearInterval(timer);
done();
}
}, 500);
});
after(function (done) {
pinusClient.disconnect();
// disconnect 后等待 500ms供服务器清理环境、退出频道等
setTimeout(() => {
done();
}, 500);
});
it('检查获取抽卡列表', function (done) {
pinusClient.request('activity.gachaHandler.getGachaList', { }, (res) => {
checkSuccessResponse(res);
expect(res.data.list).to.be.an('array');
res.data.list.forEach(gacha => {
expect(gacha.gachaId).to.be.a('number');
expect(gacha.freeCount).to.be.a('number');
expect(gacha.refFreeTime).to.be.a('number');
expect(gacha.count).to.be.a('number');
checkFloor(gacha.floor);
if(gacha.gachaId == GACHA_TYPE.NORMAL) {
checkHope(gacha.hope);
expect(gacha.point).to.be.a('number');
checkTurntable(gacha.turntable);
}
if(gacha.gachaId == GACHA_TYPE.ASSIGN) {
expect(gacha.pickHero).to.be.a('number');
}
});
done();
});
});
it('检查元宝招募', function (done) {
let gachaId = GACHA_TYPE.ASSIGN;
let hid1 = 1, hid2 = 2;
checkSetHope(pinusClient, gachaId, hid1, hid2, function(res) {
addItem(pinusClient, 22001, 10, function(res) {
checkPull(pinusClient, done, GACHA_TYPE.NORMAL, 0, 10);
});
})
});
it('检查友情点招募', function (done) {
addItem(pinusClient, 40003, 1000, function(res) {
checkPull(pinusClient, done, GACHA_TYPE.FRDPOINT, 0, 10);
});
});
it('检查求贤若渴招募', function (done) {
let gachaId = GACHA_TYPE.ASSIGN;
let pickHero = 1;
addItem(pinusClient, 22002, 10, function(res) {
checkSetPickHero(pinusClient, gachaId, 0, pickHero, (res) => {
checkPull(pinusClient, done, GACHA_TYPE.ASSIGN, 0, 5);
})
});
});
});
function checkFloor(floor) {
expect(floor).to.be.an('array');
floor.forEach(f => {
expect(f.id).to.be.a('number');
expect(f.count).to.be.a('number');
})
}
function checkHope(hope) {
expect(hope).to.be.an('array');
hope.forEach(f => {
expect(f.id).to.be.a('number');
expect(f.hid).to.be.a('number');
expect(f.hasGet).to.be.a('boolean');
})
}
function checkTurntable(turntable) {
expect(turntable).to.be.an('array');
turntable.forEach(f => {
expect(f.quality).to.be.a('number');
expect(f.hasGet).to.be.a('boolean');
})
}
function checkPull(pinusClient, done, gachaId, activityId, count) {
pinusClient.request('activity.gachaHandler.pull', { gachaId, activityId, count }, (res) => {
checkSuccessResponse(res);
expect(res.data.gachaId).to.be.a('number');
checkResult(res.data.result, count);
expect(res.data.freeCount).to.be.a('number');
expect(res.data.refFreeTime).to.be.a('string');
expect(Date.parse(res.data.refFreeTime)).to.be.a('number');
expect(res.data.count).to.be.a('number');
checkFloor(res.data.floor);
expect(res.data.point).to.be.a('number');
checkHope(res.data.hope);
// checkHero(res.data.heroes);
done()
});
}
function checkResult(result, count) {
expect(result).to.be.an('array');
expect(result.length).equal(count);
result.forEach(r => {
expect(r.contentId).to.be.a('number');
expect(r.hid).to.be.a('number');
expect(r.isTransfer).to.be.a('boolean');
expect(r.id).to.be.a('number');
expect(r.count).to.be.a('number');
})
}
function checkSetPickHero(pinusClient, gachaId, activityId, pickHero, cb) {
pinusClient.request('activity.gachaHandler.setPickHero', { gachaId, activityId, pickHero }, (res) => {
checkSuccessResponse(res);
expect(res.data.gachaId).equal(gachaId);
expect(res.data.activityId).equal(activityId);
expect(res.data.heroes).to.be.an('array');
res.data.heroes.forEach(hid => {
expect(hid).to.be.a('number');
});
expect(res.data.pickHero).equal(pickHero);
cb(res);
});
}
function checkSetHope(pinusClient, gachaId, hid1, hid2, cb) {
pinusClient.request('activity.gachaHandler.setHope', { gachaId, hope: [{id: 1, hid: hid1}, {id:2, hid: hid2}] }, (res) => {
checkSuccessResponse(res);
expect(res.data.gachaId).equal(gachaId);
checkHope(res.data.hope)
cb(res);
});
}