Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions Emulsion.Tests/Telegram/FunogramTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@ open Emulsion
open Emulsion.Telegram
open Emulsion.Telegram.Funogram

[<Literal>]
let private selfUserId = 100500L
[<Literal>]
let private groupId = 200600L
[<Literal>]
let private chatName = "test_room"

let private createUser username firstName lastName = {
Id = 0L
Expand All @@ -24,6 +28,8 @@ let private createUser username firstName lastName = {
let private currentChat = {
defaultChat with
Id = groupId
Username = Some chatName
Type = SuperGroup
}

let private createMessage from text : Funogram.Telegram.Types.Message =
Expand Down Expand Up @@ -65,6 +71,21 @@ let private createStickerMessage from emoji =
}
}

let private createPhoto() = seq {
{ FileId = ""
Width = 0
Height = 0
FileSize = None
}
}

let private createPhotoMessage from =
{ defaultMessage with
From = Some from
Chat = currentChat
Photo = Some <| createPhoto()
}

let private createMessageWithCaption from caption =
{ defaultMessage with
From = Some from
Expand Down Expand Up @@ -316,6 +337,23 @@ module ReadMessageTests =
readMessage message
)

[<Fact>]
let readPhotoMessage() =
let message = createPhotoMessage originalUser
Assert.Equal(
authoredTelegramMessage "@originalUser" "[Photo]: https://t.me/test_room/1",
readMessage message
)

[<Fact>]
let readPhotoWithCaptionMessage() =
let message = { createMessageWithCaption originalUser "test" with
Photo = Some <| createPhoto() }
Assert.Equal(
authoredTelegramMessage "@originalUser" "[Photo with caption \"test\"]: https://t.me/test_room/1",
readMessage message
)

[<Fact>]
let readPollMessage() =
let message = createPoll originalUser "Question?" [|"Option 1"; "Option 2"|]
Expand Down
13 changes: 13 additions & 0 deletions Emulsion/Telegram/Funogram.fs
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,23 @@ module MessageConverter =
formatWithAuthor author text
|> markAsQuote quoteSettings.linePrefix

let private getLinkToMessage (message: FunogramMessage) =
match message with
| { MessageId = id
Chat = { Type = SuperGroup
Username = Some chatName } } ->
sprintf "https://t.me/%s/%d" chatName id
| _ -> "[DATA UNRECOGNIZED]"

let private getAuthoredMessageBodyText (message: FunogramMessage) =
let text =
match message with
| { Text = Some text } -> applyEntities message.Entities text
| { Photo = Some _; Caption = Some caption} ->
let caption = applyEntities message.CaptionEntities caption
sprintf "[Photo with caption \"%s\"]: %s" caption (getLinkToMessage message)
| { Photo = Some _ } ->
sprintf "[Photo]: %s" (getLinkToMessage message)
| { Caption = Some caption } ->
let caption = applyEntities message.CaptionEntities caption
sprintf "[Content with caption \"%s\"]" caption
Expand Down