350 lines
11 KiB
TypeScript
350 lines
11 KiB
TypeScript
import { DEBUG_MAGIC_WORD } from '../../shared/consts';
|
||
import { GVGTeamType } from './../../shared/db/GVGTeam';
|
||
import { GVGUserDataType } from './../../shared/db/GVGUserData';
|
||
import { LineupHero } from './../../shared/domain/roleField/hero';
|
||
import { Client } from './Client';
|
||
import 'mocha';
|
||
import { PinusWSClient } from 'pinus-robot-plugin';
|
||
import { expect } from 'chai';
|
||
import { checkSuccessResponse } from './CheckPatten';
|
||
import { GVGHeroInfo } from '../../shared/domain/dbGeneral';
|
||
|
||
describe('gvg激战期测试', function () {
|
||
let pinusClient: PinusWSClient;
|
||
let roleInfo;
|
||
|
||
before(function (done) {
|
||
const c = new Client();
|
||
const timer = setInterval(() => {
|
||
if (c.client && c.roleInfo) {
|
||
pinusClient = c.client;
|
||
roleInfo = c.roleInfo;
|
||
clearInterval(timer);
|
||
done();
|
||
}
|
||
}, 500);
|
||
});
|
||
|
||
after(function (done) {
|
||
pinusClient.disconnect();
|
||
// disconnect 后等待 500ms,供服务器清理环境、退出频道等
|
||
setTimeout(() => {
|
||
done();
|
||
}, 500);
|
||
});
|
||
|
||
// 测试保存队伍
|
||
it.skip('测试保存队伍', function (done) {
|
||
const lineup : LineupHero[] = [
|
||
{
|
||
actorId: 1, // 武将
|
||
dataId: 2, // 出兵表上的位置
|
||
order: 3, // 行动
|
||
}
|
||
];
|
||
|
||
pinusClient.request('guild.gvgBattleHandler.saveTeam', {
|
||
index: 1,
|
||
head: 1,
|
||
frame: 1,
|
||
spine: 1,
|
||
lineup,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
// 检查返回值中的 teams
|
||
expect(data.data.teams).to.be.an('array');
|
||
done();
|
||
});
|
||
});
|
||
|
||
// 测试获取城池信息
|
||
it.skip('测试获取城池信息', function (done) {
|
||
const cityId = 1;
|
||
// 通过测试接口尝试创建城市
|
||
// pinusClient.request('guild.gvgBattleHandler.createCity', {
|
||
// cityId, magicWord: DEBUG_MAGIC_WORD
|
||
// }, (data) => {
|
||
// checkSuccessResponse(data);
|
||
// checkCity(data.data.city);
|
||
pinusClient.request('guild.gvgBattleHandler.getCity', {
|
||
cityId,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
// 检查返回值中的 city
|
||
expect(data.data.cityId).to.be.a('number');
|
||
expect(data.data.guardLeague).to.be.an('object');
|
||
expect(data.data.guardLeague.leagueCode).to.be.a('string');
|
||
expect(data.data.guardLeague.name).to.be.a('string');
|
||
expect(data.data.guardLeague.icon).to.be.a('number');
|
||
expect(data.data.guardStartTime).to.be.a('number');
|
||
expect(data.data.startTime).to.be.a('number');
|
||
expect(data.data.endTime).to.be.a('number');
|
||
expect(data.data.ourTeamCnt).to.be.a('number');
|
||
expect(data.data.oppTeamCnt).to.be.a('number');
|
||
done();
|
||
});
|
||
// });
|
||
});
|
||
|
||
// 进入城池
|
||
it.skip('进入城池', function (done) {
|
||
const cityId = 1;
|
||
pinusClient.request('guild.gvgBattleHandler.enterCity', {
|
||
cityId,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
// 检查 city 中的属性类型是否合法
|
||
expect(data.data.cityId).to.be.a('number');
|
||
expect(data.data.ranks).to.be.an('array');
|
||
expect(data.data.recs).to.be.an('array');
|
||
expect(data.data.teams).to.be.an('array');
|
||
data.data.teams.forEach((team) => {
|
||
checkTeam(team);
|
||
});
|
||
done();
|
||
});
|
||
});
|
||
|
||
// 离开城池
|
||
it.skip('离开城池', function (done) {
|
||
pinusClient.request('guild.gvgBattleHandler.leaveCity', {}, (data) => {
|
||
checkSuccessResponse(data);
|
||
done();
|
||
});
|
||
});
|
||
|
||
// 开始移动
|
||
it.skip('开始移动', function (done) {
|
||
const cityId = 1;
|
||
const areaId = 1;
|
||
const teamCode = '';
|
||
pinusClient.request('guild.gvgBattleHandler.startMove', {
|
||
cityId,
|
||
areaId,
|
||
teamCode,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
setTimeout(() => {
|
||
// 停止移动
|
||
it.skip('停止移动', function (done) {
|
||
pinusClient.request('guild.gvgBattleHandler.stopMove', {}, (data) => {
|
||
checkSuccessResponse(data);
|
||
expect(data.data.areaId).to.be.a('number');
|
||
expect(data.data.cityId).to.be.a('number');
|
||
checkTeam(data.data.curTeam);
|
||
// players
|
||
expect(data.data.players).to.be.an('array');
|
||
data.data.players.forEach((player) => {
|
||
checkPlayer(player);
|
||
});
|
||
done();
|
||
});
|
||
});
|
||
}, 2000);
|
||
});
|
||
});
|
||
|
||
// 队伍入驻积分点
|
||
it.skip('队伍入驻积分点', function (done) {
|
||
const cityId = 1;
|
||
const areaId = 1;
|
||
const pointId = 1;
|
||
const teamCode = '';
|
||
pinusClient.request('guild.gvgBattleHandler.teamSettle', {
|
||
cityId,
|
||
areaId,
|
||
teamCode,
|
||
pointId,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
checkTeam(data.data.curTeam);
|
||
done();
|
||
});
|
||
});
|
||
|
||
// 队伍离开积分点
|
||
it.skip('队伍离开积分点', function (done) {
|
||
pinusClient.request('guild.gvgBattleHandler.teamLeave', {}, (data) => {
|
||
checkSuccessResponse(data);
|
||
done();
|
||
});
|
||
});
|
||
|
||
|
||
function battle(teamCode: string, oppoTeamCode: string, isSuccess: boolean, done) {
|
||
pinusClient.request('guild.gvgBattleHandler.battleStart', {
|
||
teamCode,
|
||
oppoTeamCode,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
const { battleCode } = data.data;
|
||
expect(battleCode).to.be.a('string');
|
||
setTimeout(() => {
|
||
// 队伍结束攻击 battleEnd
|
||
it.skip('队伍结束攻击', function (done) {
|
||
pinusClient.request('guild.gvgBattleHandler.battleEnd', {
|
||
battleCode,
|
||
isSuccess,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
if (isSuccess) {
|
||
checkLeagueGoods(data.data.leagueGoods);
|
||
}
|
||
done();
|
||
});
|
||
});
|
||
}, 5000);
|
||
});
|
||
}
|
||
|
||
// 队伍开始攻击且获胜
|
||
it.skip('队伍开始攻击且获胜', function (done) {
|
||
const teamCode = '';
|
||
const oppoTeamCode = '';
|
||
battle(teamCode, oppoTeamCode, true, done);
|
||
});
|
||
|
||
// 队伍开始攻击且失败
|
||
it.skip('队伍开始攻击且失败', function (done) {
|
||
const teamCode = '';
|
||
const oppoTeamCode = '';
|
||
battle(teamCode, oppoTeamCode, false, done);
|
||
});
|
||
|
||
function useItem(itemId: number, teamCode: string, done) {
|
||
pinusClient.request('guild.gvgBattleHandler.useItem', {
|
||
itemId,
|
||
teamCode,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
checkTeam(data.data.team);
|
||
done();
|
||
});
|
||
}
|
||
|
||
// 使用道具
|
||
// ! 不同道具添加多个测试用例
|
||
it.skip('使用道具', function (done) {
|
||
const itemId = 1;
|
||
const teamCode = '';
|
||
useItem(itemId, teamCode, done);
|
||
});
|
||
|
||
// 复活队伍
|
||
it.skip('复活队伍', function (done) {
|
||
const teamCode = '';
|
||
pinusClient.request('guild.gvgBattleHandler.reviveTeam', {}, (data) => {
|
||
checkSuccessResponse(data);
|
||
checkTeam(data.data.team);
|
||
done();
|
||
});
|
||
});
|
||
|
||
// 获取战报 getRecs
|
||
// ! 战报具体内容未检查
|
||
it.skip('获取战报', function (done) {
|
||
const type = 1;
|
||
pinusClient.request('guild.gvgBattleHandler.getRecs', {
|
||
type,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
expect(data.data.recs).to.be.an('array');
|
||
done();
|
||
});
|
||
});
|
||
|
||
// 获取概况
|
||
it.skip('获取概况', function (done) {
|
||
pinusClient.request('guild.gvgBattleHandler.getOverview', {}, (data) => {
|
||
checkSuccessResponse(data);
|
||
expect(data.data.cities).to.be.an('array');
|
||
data.data.cities.forEach((city) => {
|
||
checkCity(city);
|
||
});
|
||
done();
|
||
});
|
||
});
|
||
|
||
// 获取区域上的队伍 getAreaTeams
|
||
it.skip('获取区域上的队伍', function (done) {
|
||
const cityId = 1;
|
||
const areaIds = [1, 2, 3];
|
||
pinusClient.request('guild.gvgBattleHandler.getAreaTeams', {
|
||
cityId,
|
||
areaIds,
|
||
}, (data) => {
|
||
checkSuccessResponse(data);
|
||
expect(data.data.teams).to.be.an('array');
|
||
data.data.teams.forEach((team) => {
|
||
checkTeam(team);
|
||
});
|
||
done();
|
||
});
|
||
});
|
||
})
|
||
|
||
// 检查城市数据是否合法
|
||
export function checkCity(city) {
|
||
expect(city).to.be.an('object');
|
||
expect(city.cityId).to.be.a('number');
|
||
expect(city.configId).to.be.a('number');
|
||
expect(city.userCnt).to.be.a('number');
|
||
expect(city.teamCnt).to.be.a('number');
|
||
if (city.guardLeague) {
|
||
expect(city.guardLeague).to.be.a('string');
|
||
expect(city.guardLeagueName).to.be.a('string');
|
||
}
|
||
}
|
||
|
||
// 检查队伍数据是否合法
|
||
export function checkTeam(team: GVGTeamType) {
|
||
expect(team).to.be.an('object');
|
||
expect(team.teamCode).to.be.a('string');
|
||
expect(team.leagueCode).to.be.a('string');
|
||
expect(team.areaId).to.be.a('number');
|
||
expect(team.cityId).to.be.a('number');
|
||
expect(team.head).to.be.a('number');
|
||
expect(team.frame).to.be.a('number');
|
||
expect(team.spine).to.be.a('number');
|
||
expect(team.durability).to.be.a('number');
|
||
expect(team.restartTime).to.be.a('number');
|
||
expect(team.attackTime).to.be.a('number');
|
||
expect(team.startMoveTime).to.be.a('number');
|
||
expect(team.stopMoveTime).to.be.a('number');
|
||
expect(team.defenseTime).to.be.a('number');
|
||
checkLineup(team.lineup);
|
||
}
|
||
|
||
// 检查阵容数据是否合法
|
||
export function checkLineup(lineup: GVGHeroInfo[]) {
|
||
expect(lineup).to.be.an('array');
|
||
// 循环检查阵容数据是否合法
|
||
lineup.forEach((hero) => {
|
||
expect(hero.actorId).to.be.a('number');
|
||
expect(hero.dataId).to.be.a('number');
|
||
});
|
||
}
|
||
|
||
// 检查玩家数据是否合法
|
||
// ! 不完整
|
||
export function checkPlayer(user: GVGUserDataType) {
|
||
expect(user).to.be.an('object');
|
||
expect(user.roleId).to.be.a('string');
|
||
expect(user.leagueCode).to.be.a('string');
|
||
expect(user.configId).to.be.a('string');
|
||
expect(user.active).to.be.a('number');
|
||
// expect(user.receivedLv).to.be.a('number');
|
||
expect(user.receiveCurrencyTime).to.be.a('number');
|
||
}
|
||
|
||
// check leagueGoods
|
||
export function checkLeagueGoods(leagueGoods) {
|
||
expect(leagueGoods).to.be.an('array');
|
||
leagueGoods.forEach((good) => {
|
||
expect(good).to.be.an('object');
|
||
expect(good.itemType).to.be.a('number');
|
||
expect(good.id).to.be.a('number');
|
||
expect(good.count).to.be.a('number');
|
||
});
|
||
}
|