mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-27 01:53:19 +01:00
refactor(guild): extract disband, resign, leave, and scout logic into GuildService
Move business logic for guild disband, resign leadership, leave, post scout, and answer scout from handlers into GuildService methods. Handlers now delegate to the service layer and handle only protocol concerns (packet parsing, ACK responses, cross-channel notifications). Adds 22 new table-driven service tests and sentinel errors for typed error handling (ErrNoEligibleLeader, ErrAlreadyInvited, etc.). DonateRP left in handler due to Session coupling.
This commit is contained in:
@@ -17,6 +17,7 @@ func TestOperateGuild_Disband_Success(t *testing.T) {
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
guildMock.guild.LeaderCharID = 1
|
||||
server.guildRepo = guildMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
@@ -49,6 +50,7 @@ func TestOperateGuild_Disband_NotLeader(t *testing.T) {
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
guildMock.guild.LeaderCharID = 999 // different from session charID
|
||||
server.guildRepo = guildMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
@@ -79,6 +81,7 @@ func TestOperateGuild_Disband_RepoError(t *testing.T) {
|
||||
guildMock.guild = &Guild{ID: 10}
|
||||
guildMock.guild.LeaderCharID = 1
|
||||
server.guildRepo = guildMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
@@ -109,6 +112,7 @@ func TestOperateGuild_Resign_TransferLeadership(t *testing.T) {
|
||||
{CharID: 2, OrderIndex: 2, AvoidLeadership: false},
|
||||
}
|
||||
server.guildRepo = guildMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
@@ -149,6 +153,7 @@ func TestOperateGuild_Resign_SkipsAvoidLeadership(t *testing.T) {
|
||||
{CharID: 3, OrderIndex: 3, AvoidLeadership: false},
|
||||
}
|
||||
server.guildRepo = guildMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
@@ -230,6 +235,7 @@ func TestOperateGuild_Leave_AsApplicant(t *testing.T) {
|
||||
guildMock.guild.LeaderCharID = 999
|
||||
server.guildRepo = guildMock
|
||||
server.mailRepo = mailMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
@@ -258,6 +264,7 @@ func TestOperateGuild_Leave_AsMember(t *testing.T) {
|
||||
guildMock.guild.LeaderCharID = 999
|
||||
server.guildRepo = guildMock
|
||||
server.mailRepo = mailMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
@@ -289,6 +296,7 @@ func TestOperateGuild_Leave_MailError(t *testing.T) {
|
||||
guildMock.guild.LeaderCharID = 999
|
||||
server.guildRepo = guildMock
|
||||
server.mailRepo = mailMock
|
||||
ensureGuildService(server)
|
||||
session := createMockSession(1, server)
|
||||
|
||||
pkt := &mhfpacket.MsgMhfOperateGuild{
|
||||
|
||||
Reference in New Issue
Block a user