mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-26 17:43:21 +01:00
test(channelserver): add handler tests for guild info, alliance, cooking, adventure, and treasure
Cover 5 more handler files with mock-based unit tests, bringing package coverage from 43.7% to 47.7%. Extend mockGuildRepoOps with alliance, cooking, adventure, treasure hunt, and hunt data methods.
This commit is contained in:
200
server/channelserver/handlers_guild_adventure_test.go
Normal file
200
server/channelserver/handlers_guild_adventure_test.go
Normal file
@@ -0,0 +1,200 @@
|
||||
package channelserver
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"erupe-ce/network/mhfpacket"
|
||||
)
|
||||
|
||||
// --- handleMsgMhfLoadGuildAdventure tests ---
|
||||
|
||||
func TestLoadGuildAdventure_NoAdventures(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{
|
||||
adventures: []*GuildAdventure{},
|
||||
}
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfLoadGuildAdventure{AckHandle: 100}
|
||||
|
||||
handleMsgMhfLoadGuildAdventure(session, pkt)
|
||||
|
||||
select {
|
||||
case <-session.sendPackets:
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadGuildAdventure_WithAdventures(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{
|
||||
adventures: []*GuildAdventure{
|
||||
{ID: 1, Destination: 5, Charge: 0, Depart: 1000, Return: 2000, CollectedBy: ""},
|
||||
{ID: 2, Destination: 8, Charge: 100, Depart: 1000, Return: 2000, CollectedBy: "1"},
|
||||
},
|
||||
}
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfLoadGuildAdventure{AckHandle: 100}
|
||||
|
||||
handleMsgMhfLoadGuildAdventure(session, pkt)
|
||||
|
||||
select {
|
||||
case p := <-session.sendPackets:
|
||||
if len(p.data) < 10 {
|
||||
t.Errorf("Response too short for 2 adventures: %d bytes", len(p.data))
|
||||
}
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadGuildAdventure_DBError(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{
|
||||
listAdvErr: errNotFound,
|
||||
}
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfLoadGuildAdventure{AckHandle: 100}
|
||||
|
||||
handleMsgMhfLoadGuildAdventure(session, pkt)
|
||||
|
||||
select {
|
||||
case <-session.sendPackets:
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
|
||||
// --- handleMsgMhfRegistGuildAdventure tests ---
|
||||
|
||||
func TestRegistGuildAdventure_Success(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{}
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfRegistGuildAdventure{
|
||||
AckHandle: 100,
|
||||
Destination: 5,
|
||||
}
|
||||
|
||||
handleMsgMhfRegistGuildAdventure(session, pkt)
|
||||
|
||||
select {
|
||||
case <-session.sendPackets:
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegistGuildAdventure_Error(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{createAdvErr: errNotFound}
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfRegistGuildAdventure{
|
||||
AckHandle: 100,
|
||||
Destination: 5,
|
||||
}
|
||||
|
||||
// Should not panic; error is logged
|
||||
handleMsgMhfRegistGuildAdventure(session, pkt)
|
||||
|
||||
select {
|
||||
case <-session.sendPackets:
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
|
||||
// --- handleMsgMhfAcquireGuildAdventure tests ---
|
||||
|
||||
func TestAcquireGuildAdventure_Success(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfAcquireGuildAdventure{
|
||||
AckHandle: 100,
|
||||
ID: 42,
|
||||
}
|
||||
|
||||
handleMsgMhfAcquireGuildAdventure(session, pkt)
|
||||
|
||||
if guildMock.collectAdvID != 42 {
|
||||
t.Errorf("CollectAdventure ID = %d, want 42", guildMock.collectAdvID)
|
||||
}
|
||||
|
||||
select {
|
||||
case <-session.sendPackets:
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
|
||||
// --- handleMsgMhfChargeGuildAdventure tests ---
|
||||
|
||||
func TestChargeGuildAdventure_Success(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfChargeGuildAdventure{
|
||||
AckHandle: 100,
|
||||
ID: 42,
|
||||
Amount: 500,
|
||||
}
|
||||
|
||||
handleMsgMhfChargeGuildAdventure(session, pkt)
|
||||
|
||||
if guildMock.chargeAdvID != 42 {
|
||||
t.Errorf("ChargeAdventure ID = %d, want 42", guildMock.chargeAdvID)
|
||||
}
|
||||
if guildMock.chargeAdvAmount != 500 {
|
||||
t.Errorf("ChargeAdventure Amount = %d, want 500", guildMock.chargeAdvAmount)
|
||||
}
|
||||
|
||||
select {
|
||||
case <-session.sendPackets:
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
|
||||
// --- handleMsgMhfRegistGuildAdventureDiva tests ---
|
||||
|
||||
func TestRegistGuildAdventureDiva_Success(t *testing.T) {
|
||||
server := createMockServer()
|
||||
guildMock := &mockGuildRepoOps{}
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
server.guildRepo = guildMock
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfRegistGuildAdventureDiva{
|
||||
AckHandle: 100,
|
||||
Destination: 3,
|
||||
Charge: 200,
|
||||
}
|
||||
|
||||
handleMsgMhfRegistGuildAdventureDiva(session, pkt)
|
||||
|
||||
select {
|
||||
case <-session.sendPackets:
|
||||
default:
|
||||
t.Error("No response packet queued")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user