aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbodqhrohro <bodqhrohro@gmail.com>2019-12-02 19:25:55 +0300
committerbodqhrohro <bodqhrohro@gmail.com>2019-12-02 19:25:55 +0300
commitca4923f5635e2696b4e59d01fec4866b568d4f23 (patch)
treefd7c63948bf0cb8579c345aaf5a740f621b18341
parent9c25d4ad8f2ccfa156a8cfc4c0d4d7dc35bdd95c (diff)
Tests for message formatters, fix broken timestamp tests
-rw-r--r--telegram/utils.go4
-rw-r--r--telegram/utils_test.go474
2 files changed, 471 insertions, 7 deletions
diff --git a/telegram/utils.go b/telegram/utils.go
index 6ec4405..8b3eb13 100644
--- a/telegram/utils.go
+++ b/telegram/utils.go
@@ -222,7 +222,7 @@ func (c *Client) formatMessage(chatID int64, messageID int64, preview bool, mess
str.WriteString(fmt.Sprintf("%v | %s | ", message.Id, c.formatContact(message.SenderUserId)))
// TODO: timezone
if !preview {
- str.WriteString(time.Unix(int64(message.Date), 0).Format("02 Jan 2006 15:04:05 | "))
+ str.WriteString(time.Unix(int64(message.Date), 0).UTC().Format("02 Jan 2006 15:04:05 | "))
}
var text string
@@ -344,8 +344,8 @@ func (c *Client) contentToFilename(content client.MessageContent) (*client.File,
case client.TypeMessagePhoto:
photo, _ := content.(*client.MessagePhoto)
sizes := photo.Photo.Sizes
- file := sizes[len(sizes)-1].Photo
if len(sizes) > 1 {
+ file := sizes[len(sizes)-1].Photo
return file, strconv.Itoa(int(file.Id)) + ".jpg"
} else {
return nil, ""
diff --git a/telegram/utils_test.go b/telegram/utils_test.go
index 8b1b025..7371f7f 100644
--- a/telegram/utils_test.go
+++ b/telegram/utils_test.go
@@ -4,10 +4,12 @@ import (
"testing"
"time"
+ "dev.narayana.im/narayana/telegabber/config"
+
"github.com/zelenin/go-tdlib/client"
)
-const testTimeFormat string = "15:03 02/01/2006"
+const testTimeFormat string = "15:04 02/01/2006"
func TestOnlineStatus(t *testing.T) {
show, status := userStatusToText(client.UserStatus(&client.UserStatusOnline{}))
@@ -27,8 +29,9 @@ func TestOnlineOfflineAway(t *testing.T) {
timestamp := time.Now().Unix() - 3599
time := time.Unix(timestamp, 0)
show, status := userStatusToText(client.UserStatus(&client.UserStatusOffline{WasOnline: int32(timestamp)}))
- if show != "away" || status != "Last seen at "+time.Format(testTimeFormat) {
- t.Errorf("Wrong away status: %v, %v", show, status)
+ trueStatus := "Last seen at " + time.Format(testTimeFormat)
+ if show != "away" || status != trueStatus {
+ t.Errorf("Wrong away status: %v, %v, should be %v", show, status, trueStatus)
}
}
@@ -36,7 +39,468 @@ func TestOnlineOfflineXa(t *testing.T) {
timestamp := time.Now().Unix() - 3601
time := time.Unix(timestamp, 0)
show, status := userStatusToText(client.UserStatus(&client.UserStatusOffline{WasOnline: int32(timestamp)}))
- if show != "xa" || status != "Last seen at "+time.Format(testTimeFormat) {
- t.Errorf("Wrong xa status: %v, %v", show, status)
+ trueStatus := "Last seen at " + time.Format(testTimeFormat)
+ if show != "xa" || status != trueStatus {
+ t.Errorf("Wrong xa status: %v, %v, should be %v", show, status, trueStatus)
+ }
+}
+
+func TestFormatMessageOneline(t *testing.T) {
+ message := client.Message{
+ Id: 42,
+ Content: &client.MessageText{
+ Text: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+
+ text := (&Client{}).formatMessage(0, 0, true, &message)
+ if text != "42 | | tist" {
+ t.Errorf("Wrong oneline message formatting: %v", text)
+ }
+}
+
+func TestFormatMessageMultiline(t *testing.T) {
+ message := client.Message{
+ Id: 42,
+ Content: &client.MessageText{
+ Text: &client.FormattedText{
+ Text: "tist\nziz",
+ },
+ },
+ }
+
+ text := (&Client{}).formatMessage(0, 0, true, &message)
+ if text != "42 | | tist" {
+ t.Errorf("Wrong multiline message formatting: %v", text)
+ }
+}
+
+func TestFormatMessageOnelinePreview(t *testing.T) {
+ message := client.Message{
+ Id: 42,
+ Date: 1200000000,
+ Content: &client.MessageText{
+ Text: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+
+ text := (&Client{}).formatMessage(0, 0, false, &message)
+ if text != "42 | | 10 Jan 2008 21:20:00 | tist" {
+ t.Errorf("Wrong oneline preview message formatting: %v", text)
+ }
+}
+
+func TestFormatMessageMultilinePreview(t *testing.T) {
+ message := client.Message{
+ Id: 42,
+ Date: 1200000000,
+ Content: &client.MessageText{
+ Text: &client.FormattedText{
+ Text: "tist\nziz",
+ },
+ },
+ }
+
+ text := (&Client{}).formatMessage(0, 0, false, &message)
+ if text != "42 | | 10 Jan 2008 21:20:00 | tist\nziz" {
+ t.Errorf("Wrong multiline preview message formatting: %v", text)
+ }
+}
+
+func TestFormatContent(t *testing.T) {
+ file := client.File{
+ Size: 23899,
+ Remote: &client.RemoteFile{
+ Id: "tist",
+ },
+ }
+ c := Client{
+ content: &config.TelegramContentConfig{
+ Link: "localhvost",
+ },
+ }
+
+ content := c.formatContent(&file, "a.jpg")
+ if content != "a.jpg (23 kbytes) | localhvost/b0896d9e9f1de7d2af59b080c3f0947b838c5c6c64f71c68a4b690a15de2ccf8.jpg" {
+ t.Errorf("Wrong file label: %v", content)
+ }
+}
+
+func TestMessageToTextSticker(t *testing.T) {
+ sticker := client.Message{
+ Content: &client.MessageSticker{
+ Sticker: &client.Sticker{
+ Emoji: "💩",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&sticker)
+ if text != "💩" {
+ t.Errorf("Not poop")
+ }
+}
+
+func TestMessageToTextGroup(t *testing.T) {
+ group := client.Message{
+ Content: &client.MessageBasicGroupChatCreate{},
+ }
+ text := (&Client{}).messageToText(&group)
+ if text != "has created chat" {
+ t.Errorf("Who created the group?")
+ }
+}
+
+func TestMessageToTextSupergroup(t *testing.T) {
+ supergroup := client.Message{
+ Content: &client.MessageSupergroupChatCreate{},
+ }
+ text := (&Client{}).messageToText(&supergroup)
+ if text != "has created chat" {
+ t.Errorf("Who created the supergroup?")
+ }
+}
+
+func TestMessageChatJoin(t *testing.T) {
+ join := client.Message{
+ Content: &client.MessageChatJoinByLink{},
+ }
+ text := (&Client{}).messageToText(&join)
+ if text != "joined chat via invite link" {
+ t.Errorf("Non-joined")
+ }
+}
+
+func TestMessageChatAddNoMembers(t *testing.T) {
+ add := client.Message{
+ Content: &client.MessageChatAddMembers{},
+ }
+ text := (&Client{}).messageToText(&add)
+ if text != "invited " {
+ t.Errorf("Invited someone anyway")
+ }
+}
+
+func TestMessageChatChangeTitle(t *testing.T) {
+ title := client.Message{
+ Content: &client.MessageChatChangeTitle{
+ Title: "Anime",
+ },
+ }
+ text := (&Client{}).messageToText(&title)
+ if text != "chat title set to: Anime" {
+ t.Errorf("How to patch KDE2 for FreeBSD?")
+ }
+}
+
+func TestMessageLocation(t *testing.T) {
+ location := client.Message{
+ Content: &client.MessageLocation{
+ Location: &client.Location{
+ Latitude: 50.8,
+ Longitude: 42.0167,
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&location)
+ if text != "coordinates: 50.8,42.0167 | https://www.google.com/maps/search/50.8,42.0167/" {
+ t.Errorf("Excuse me, I'm lost")
+ }
+}
+
+func TestMessagePhoto(t *testing.T) {
+ photo := client.Message{
+ Content: &client.MessagePhoto{
+ Caption: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&photo)
+ if text != "tist" {
+ t.Errorf("Wrong photo label")
+ }
+}
+
+func TestMessageAudio(t *testing.T) {
+ audio := client.Message{
+ Content: &client.MessageAudio{
+ Caption: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&audio)
+ if text != "tist" {
+ t.Errorf("Wrong audio label")
+ }
+}
+
+func TestMessageVideo(t *testing.T) {
+ video := client.Message{
+ Content: &client.MessageVideo{
+ Caption: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&video)
+ if text != "tist" {
+ t.Errorf("Wrong video label")
+ }
+}
+
+func TestMessageDocument(t *testing.T) {
+ document := client.Message{
+ Content: &client.MessageDocument{
+ Caption: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&document)
+ if text != "tist" {
+ t.Errorf("Wrong document label")
+ }
+}
+
+func TestMessageText(t *testing.T) {
+ textMessage := client.Message{
+ Content: &client.MessageText{
+ Text: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&textMessage)
+ if text != "tist" {
+ t.Errorf("Wrong text message")
+ }
+}
+
+func TestMessageVoice(t *testing.T) {
+ voice := client.Message{
+ Content: &client.MessageVoiceNote{
+ Caption: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&voice)
+ if text != "tist" {
+ t.Errorf("Wrong voice label")
+ }
+}
+
+func TestMessageVideoNote(t *testing.T) {
+ videoNote := client.Message{
+ Content: &client.MessageVideoNote{},
+ }
+ text := (&Client{}).messageToText(&videoNote)
+ if text != "" {
+ t.Errorf("Wrong video note label")
+ }
+}
+
+func TestMessageAnimation(t *testing.T) {
+ animation := client.Message{
+ Content: &client.MessageAnimation{
+ Caption: &client.FormattedText{
+ Text: "tist",
+ },
+ },
+ }
+ text := (&Client{}).messageToText(&animation)
+ if text != "tist" {
+ t.Errorf("Wrong animation label")
+ }
+}
+
+func TestMessageUnknown(t *testing.T) {
+ unknown := client.Message{
+ Content: &client.MessageExpiredPhoto{},
+ }
+ text := (&Client{}).messageToText(&unknown)
+ if text != "unknown message (messageExpiredPhoto)" {
+ t.Errorf("Wrong label for unknown message")
+ }
+}
+
+func TestContentToFilenameSticker(t *testing.T) {
+ sticker := client.MessageSticker{
+ Sticker: &client.Sticker{},
+ }
+ _, filename := (&Client{}).contentToFilename(&sticker)
+ if filename != "sticker.webp" {
+ t.Errorf("Wrong sticker filename")
+ }
+}
+
+func TestContentToFilenameVoice(t *testing.T) {
+ voice := client.MessageVoiceNote{
+ VoiceNote: &client.VoiceNote{
+ Duration: 56,
+ },
+ }
+ _, filename := (&Client{}).contentToFilename(&voice)
+ if filename != "voice note (56 s.).oga" {
+ t.Errorf("Wrong voice note filename")
+ }
+}
+
+func TestContentToFilenameVideoNote(t *testing.T) {
+ video := client.MessageVideoNote{
+ VideoNote: &client.VideoNote{
+ Duration: 56,
+ },
+ }
+ _, filename := (&Client{}).contentToFilename(&video)
+ if filename != "video note (56 s.).mp4" {
+ t.Errorf("Wrong video note filename")
+ }
+}
+
+func TestContentToFilenameAnimation(t *testing.T) {
+ animation := client.MessageAnimation{
+ Animation: &client.Animation{},
+ }
+ _, filename := (&Client{}).contentToFilename(&animation)
+ if filename != "animation.mp4" {
+ t.Errorf("Wrong animation filename")
+ }
+}
+
+func TestContentToFilenamePhoto(t *testing.T) {
+ photo := client.MessagePhoto{
+ Photo: &client.Photo{
+ Sizes: []*client.PhotoSize{
+ &client.PhotoSize{
+ Photo: &client.File{},
+ },
+ &client.PhotoSize{
+ Photo: &client.File{
+ Id: 56,
+ },
+ },
+ },
+ },
+ }
+ _, filename := (&Client{}).contentToFilename(&photo)
+ if filename != "56.jpg" {
+ t.Errorf("Wrong photo filename")
+ }
+}
+
+func TestContentToFilenamePhotoNoSizes(t *testing.T) {
+ photo := client.MessagePhoto{
+ Photo: &client.Photo{
+ Sizes: []*client.PhotoSize{},
+ },
+ }
+ _, filename := (&Client{}).contentToFilename(&photo)
+ if filename != "" {
+ t.Errorf("Wrong filename of sizeless photo")
+ }
+}
+
+func TestContentToFilenameAudio(t *testing.T) {
+ audio := client.MessageAudio{
+ Audio: &client.Audio{
+ FileName: "swine.mp3",
+ },
+ }
+ _, filename := (&Client{}).contentToFilename(&audio)
+ if filename != "swine.mp3" {
+ t.Errorf("Not oinking, shame on you!")
+ }
+}
+
+func TestContentToFilenameVideo(t *testing.T) {
+ video := client.MessageVideo{
+ Video: &client.Video{
+ FileName: "swine.3gp",
+ },
+ }
+ _, filename := (&Client{}).contentToFilename(&video)
+ if filename != "swine.3gp" {
+ t.Errorf("Not pigdancing, shame on you!")
+ }
+}
+
+func TestContentToFilenameDocument(t *testing.T) {
+ document := client.MessageDocument{
+ Document: &client.Document{
+ FileName: "swine.doc",
+ },
+ }
+ _, filename := (&Client{}).contentToFilename(&document)
+ if filename != "swine.doc" {
+ t.Errorf("Not hoofstomping, shame on you!")
+ }
+}
+
+func TestContentToFilenameUnknown(t *testing.T) {
+ unknown := client.MessageExpiredPhoto{}
+ _, filename := (&Client{}).contentToFilename(&unknown)
+ if filename != "" {
+ t.Errorf("Wrong filename of unknown content")
+ }
+}
+
+func TestMessageToPrefix1(t *testing.T) {
+ message := client.Message{
+ Id: 42,
+ IsOutgoing: true,
+ ForwardInfo: &client.MessageForwardInfo{
+ Origin: &client.MessageForwardOriginHiddenUser{
+ SenderName: "ziz",
+ },
+ },
+ }
+ prefix := (&Client{}).messageToPrefix(&message, "")
+ if prefix != "➡ 42 | fwd: anonymous (ziz)" {
+ t.Errorf("Wrong prefix: %v", prefix)
+ }
+}
+
+func TestMessageToPrefix2(t *testing.T) {
+ message := client.Message{
+ Id: 56,
+ ForwardInfo: &client.MessageForwardInfo{
+ Origin: &client.MessageForwardOriginChannel{
+ AuthorSignature: "zaz",
+ },
+ },
+ }
+ prefix := (&Client{}).messageToPrefix(&message, "")
+ if prefix != "⬅ 56 | fwd: (zaz)" {
+ t.Errorf("Wrong prefix: %v", prefix)
+ }
+}
+
+func TestMessageToPrefix3(t *testing.T) {
+ message := client.Message{
+ Id: 56,
+ ForwardInfo: &client.MessageForwardInfo{
+ Origin: &client.MessageForwardOriginChannel{},
+ },
+ }
+ prefix := (&Client{}).messageToPrefix(&message, "a.jpg")
+ if prefix != "⬅ 56 | fwd: | file: a.jpg" {
+ t.Errorf("Wrong prefix: %v", prefix)
+ }
+}
+
+func TestMessageToPrefix4(t *testing.T) {
+ message := client.Message{
+ Id: 23,
+ IsOutgoing: true,
+ }
+ prefix := (&Client{}).messageToPrefix(&message, "")
+ if prefix != "➡ 23" {
+ t.Errorf("Wrong prefix: %v", prefix)
}
}