Files
ZYZ/game-server/test/rank.test.ts
2021-04-12 09:47:16 +08:00

252 lines
7.3 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 } from './CheckPatten';
import { BLOCK_OPEATE, RANK_TYPE } from '../app/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('获取排行榜总览页面', function(done) {
pinusClient.request('role.rankHandler.getGeneralRank', { } , (res) => {
checkSuccessResponse(res);
expect(res.data.role).to.be.an('array');
res.data.role.forEach(data=> {
expect(data.type).to.be.a('number');
expect(data.roleId).to.be.a('string');
expect(data.roleName).to.be.a('string');
expect(data.head).to.be.a('number');
expect(data.frame).to.be.a('number');
expect(data.spine).to.be.a('number');
expect(data.lv).to.be.a('number');
expect(data.guildName).to.be.a('string');
expect(data.ce).to.be.a('number');
expect(data.num).to.be.a('number');
expect(data.received).to.be.a('array');
data.received.forEach(id=> {
expect(id).to.be.a('number');
})
})
expect(res.data.battle).to.be.an('array');
res.data.battle.forEach(data=> {
expect(data.type).to.be.a('number');
expect(data.roleId).to.be.a('string');
expect(data.roleName).to.be.a('string');
expect(data.guildName).to.be.a('string');
expect(data.hid).to.be.a('number');
expect(data.skinId).to.be.a('number');
expect(data.num).to.be.a('number');
expect(data.received).to.be.a('array');
data.received.forEach(id=> {
expect(id).to.be.a('number');
})
})
});
done();
});
it('获取玩家最强阵容排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.TOP_LINTUP } , (res) => {
checkParamWithLineup(res);
done();
});
});
it('获取玩家最强武将排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.TOP_HERO } , (res) => {
checkParamWithLineup(res);
done();
});
});
it('获取玩家武将数量排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.HERO_NUM } , (res) => {
checkParam(res);
done();
});
});
it('获取玩家主公等级排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.USER_LV } , (res) => {
checkParam(res);
done();
});
});
it('获取玩家总战力排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.SUM_CE } , (res) => {
checkParam(res);
done();
});
});
it('获取镇念塔排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.TOWER } , (res) => {
checkParam(res);
done();
});
});
it('获取秘境排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.DUNGEON } , (res) => {
checkParamWithLineup(res);
done();
});
});
it('获取主线排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.MAIN } , (res) => {
checkParam(res);
done();
});
});
it('获取精英排行榜', function(done) {
pinusClient.request('role.rankHandler.getRank', { type: RANK_TYPE.MAIN_ELITE } , (res) => {
checkParam(res);
done();
});
});
it('获取军团排行榜', function(done) {
pinusClient.request('role.rankHandler.getGuildRank', { type: RANK_TYPE.GUILD_LV } , (res) => {
checkGuildParam(res);
done();
});
});
it('获取军团活跃排行榜', function(done) {
pinusClient.request('role.rankHandler.getGuildRank', { type: RANK_TYPE.GUILD_ACTIVE } , (res) => {
checkGuildParam(res);
done();
});
});
it('获取武将排行榜', function(done) {
pinusClient.request('role.rankHandler.getHeroRank', { type: RANK_TYPE.HERO, hid: 19 } , (res) => {
checkParamWithLineupAndHero(res);
done();
});
});
});
function checkParamWithLineupAndHero(res) {
checkSuccessResponse(res);
expect(res.data.type).to.be.a('number');
expect(res.data.ranks).to.be.a('array');
res.data.ranks.forEach(cur => {
checkRankParamWithLineupAndHero(cur);
})
}
function checkGuildParam(res) {
checkSuccessResponse(res);
expect(res.data.type).to.be.a('number');
expect(res.data.ranks).to.be.a('array');
expect(res.data.myRank).to.be.an('object');
checkGuildRankParam(res.data.myRank);
res.data.ranks.forEach(cur => {
checkGuildRankParam(cur);
})
}
function checkParam(res) {
checkSuccessResponse(res);
expect(res.data.type).to.be.a('number');
expect(res.data.ranks).to.be.a('array');
expect(res.data.myRank).to.be.an('object');
checkBasicParam(res.data.myRank);
res.data.ranks.forEach(cur => {
checkBasicParam(cur);
})
}
function checkParamWithLineup(res) {
checkSuccessResponse(res);
expect(res.data.type).to.be.a('number');
expect(res.data.ranks).to.be.a('array');
expect(res.data.myRank).to.be.an('object');
checkRankParamWithLineup(res.data.myRank);
res.data.ranks.forEach(cur => {
checkRankParamWithLineup(cur);
})
}
function checkRankParamWithLineup(data) {
checkBasicParam(data);
expect(data.lineup).to.be.a('array');
data.lineup.forEach(cur => {
checkLineup(cur);
})
}
function checkRankParamWithLineupAndHero(data) {
checkBasicParam(data);
expect(data.lineup).to.be.a('array');
data.lineup.forEach(cur => {
checkLineup(cur);
});
data.hero.forEach(cur => {
checkLineup(cur);
});
}
function checkBasicParam(data) {
expect(data.rank).to.be.a('number');
expect(data.num).to.be.a('number');
expect(data.roleId).to.be.a('string');
expect(data.roleName).to.be.a('string');
expect(data.head).to.be.a('number');
expect(data.frame).to.be.a('number');
expect(data.spine).to.be.a('number');
expect(data.lv).to.be.a('number');
expect(data.guildName).to.be.a('string');
expect(data.ce).to.be.a('number');
}
function checkLineup(hero) {
expect(hero.hid).to.be.a('number');
expect(hero.star).to.be.a('number');
expect(hero.colorStar).to.be.a('number');
expect(hero.lv).to.be.a('number');
expect(hero.quality).to.be.a('number');
expect(hero.job).to.be.a('number');
}
function checkGuildRankParam(data) {
expect(data.rank).to.be.a('number');
expect(data.num).to.be.a('number');
expect(data.code).to.be.a('string');
expect(data.name).to.be.a('string');
expect(data.icon).to.be.a('number');
expect(data.lv).to.be.a('number');
expect(data.memberCnt).to.be.a('number');
expect(data.leader).to.be.a('object');
expect(data.leader.roleId).to.be.a('string');
expect(data.leader.roleName).to.be.a('string');
}