Files
OpenFlare/backend/plugins/domain/msg_gateway/service/bot_runner_test.go
T
ryan 1e19d8114a refactor(msg_gateway): decouple bot gateway and push notification architecture
- Split shared monolithic consts into bot, push, and errs with typed sentinel errors
- Restructure model layer into distinct bot and push subdomains
- Refactor DAO layer to enforce single-owner principle and remove cross-table raw SQL queries
- Decompose 1150+ line service/push.go into push_channel, push_event, push_trigger, push_worker, and push_template
- Clean up controller layer with generic request handlers and parameter validation in controller/base.go
- Streamline plugin.go to core Cordis lifecycle orchestration and remove re-export bloat
- Verify all unit tests, race tests, Cordis architecture rules, and Swagger generation pass cleanly
2026-09-02 23:21:36 +08:00

35 lines
1.1 KiB
Go

// Copyright 2026 Arctel.net
// SPDX-License-Identifier: Apache-2.0
package service_test
import (
"Wavelet/plugins/domain/msg_gateway/model/do"
"Wavelet/plugins/domain/msg_gateway/service"
"context"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type stubChannel struct{}
func (stubChannel) Type() string { return "stub" }
func (stubChannel) Connect(context.Context) error { return nil }
func (stubChannel) Disconnect(context.Context) error { return nil }
func (stubChannel) Send(context.Context, do.Recipient, do.OutboundMessage) error { return nil }
func (stubChannel) Capabilities() do.Capability { return do.Capability{Text: true} }
func TestRegisterLookup(t *testing.T) {
service.Register("stub", func(do.ChannelConfig, service.Handler) (service.Channel, error) {
return stubChannel{}, nil
})
fn, ok := service.Lookup("stub")
require.True(t, ok)
ch, err := fn(do.ChannelConfig{}, nil)
require.NoError(t, err)
assert.Equal(t, "stub", ch.Type())
}