chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
68
internal/store/memory/channel_webpage_resolve_test.go
Normal file
68
internal/store/memory/channel_webpage_resolve_test.go
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
package memory
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"telesrv/internal/domain"
|
||||
)
|
||||
|
||||
// TestChannelStoreResolveWebPage 验证频道 WebPageResolve 模式:只换 media、不碰 body/edit_date,
|
||||
// 事件为 channel_web_page,幂等。
|
||||
func TestChannelStoreResolveWebPage(t *testing.T) {
|
||||
st := NewChannelStore()
|
||||
ctx := context.Background()
|
||||
const creator = int64(1000000301)
|
||||
const url = "https://example.com/c"
|
||||
urlHash := domain.WebPageURLHash(url)
|
||||
|
||||
created, err := st.CreateChannel(ctx, domain.CreateChannelRequest{
|
||||
CreatorUserID: creator, Title: "WP", Megagroup: true, Date: 1700000000,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("create channel: %v", err)
|
||||
}
|
||||
channelID := created.Channel.ID
|
||||
|
||||
sent, err := st.SendChannelMessage(ctx, domain.SendChannelMessageRequest{
|
||||
UserID: creator, ChannelID: channelID, Message: "see " + url, Date: 1700000000,
|
||||
Media: &domain.MessageMedia{Kind: domain.MessageMediaKindWebPage, WebPage: &domain.MessageWebPage{State: domain.MessageWebPageStatePending, ID: urlHash, URL: url}},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("send channel message: %v", err)
|
||||
}
|
||||
|
||||
done := &domain.MessageMedia{Kind: domain.MessageMediaKindWebPage, WebPage: &domain.MessageWebPage{State: domain.MessageWebPageStateDone, ID: urlHash, URL: url, Title: "Example"}}
|
||||
resolveReq := domain.EditChannelMessageRequest{
|
||||
UserID: creator, ChannelID: channelID, ID: sent.Message.ID,
|
||||
Media: done, WebPageResolve: true, ExpectedWebPageID: urlHash,
|
||||
}
|
||||
res, err := st.EditChannelMessage(ctx, resolveReq)
|
||||
if err != nil {
|
||||
t.Fatalf("EditChannelMessage(WebPageResolve): %v", err)
|
||||
}
|
||||
if res.Event.Type != domain.ChannelUpdateWebPage {
|
||||
t.Fatalf("event type = %q, want channel_web_page", res.Event.Type)
|
||||
}
|
||||
if res.Message.Media == nil || res.Message.Media.WebPage == nil || res.Message.Media.WebPage.State != domain.MessageWebPageStateDone {
|
||||
t.Fatalf("message media not resolved: %+v", res.Message.Media)
|
||||
}
|
||||
if res.Message.Body != "see "+url || res.Message.EditDate != 0 {
|
||||
t.Fatalf("body/edit_date changed: body=%q edit_date=%d", res.Message.Body, res.Message.EditDate)
|
||||
}
|
||||
|
||||
if _, err := st.EditChannelMessage(ctx, resolveReq); !errors.Is(err, domain.ErrMessageNotModified) {
|
||||
t.Fatalf("re-resolve err = %v, want ErrMessageNotModified", err)
|
||||
}
|
||||
|
||||
// 错误的 expectedID → 不替换。
|
||||
_, err = st.EditChannelMessage(ctx, domain.EditChannelMessageRequest{
|
||||
UserID: creator, ChannelID: channelID, ID: sent.Message.ID,
|
||||
Media: &domain.MessageMedia{Kind: domain.MessageMediaKindWebPage, WebPage: &domain.MessageWebPage{State: domain.MessageWebPageStateDone, ID: 999, URL: url}},
|
||||
WebPageResolve: true, ExpectedWebPageID: 999,
|
||||
})
|
||||
if !errors.Is(err, domain.ErrMessageNotModified) {
|
||||
t.Fatalf("wrong-id resolve err = %v, want ErrMessageNotModified (already resolved, not pending)", err)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue