-module(telega@testing@factory). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/telega/testing/factory.gleam"). -export([bot_user/0, user/0, user_with/2, chat/0, chat_with/2, message_with/3, message/1, raw_update_with/2, raw_update/1, text_update_with/3, text_update/1, command_with/2, command/1, command_update_with/4, command_update/1, photo_size_with/1, photo_size/0, audio_with/2, audio/0, video_with/2, video/0, voice_with/2, voice/0, photo_message/1, video_message/1, audio_message/1, voice_message/1, photo_update_with/3, photo_update/0, video_update_with/3, video_update/0, audio_update_with/3, audio_update/0, voice_update_with/3, voice_update/0, message_update_with/3, message_update/1, callback_query_update_with/3, callback_query_update/1]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC( " Data factories for creating test instances of Telegram types.\n" "\n" " All functions return deterministic default values, making tests\n" " reproducible and easy to write. Use `_with` variants for customization.\n" "\n" " ```gleam\n" " import telega/testing/factory\n" "\n" " let update = factory.text_update(\"Hello\")\n" " let cmd = factory.command_update(\"start\")\n" " ```\n" ). -file("src/telega/testing/factory.gleam", 27). ?DOC(" Creates a bot user with sensible defaults.\n"). -spec bot_user() -> telega@model@types:user(). bot_user() -> {user, 1000000, true, <<"TestBot"/utf8>>, none, {some, <<"testbot"/utf8>>}, none, none, none, none, none, none, none, none, none, none, none, none}. -file("src/telega/testing/factory.gleam", 50). ?DOC(" Creates a regular (non-bot) user with sensible defaults.\n"). -spec user() -> telega@model@types:user(). user() -> {user, 987654321, false, <<"TestUser"/utf8>>, none, {some, <<"testuser"/utf8>>}, none, none, none, none, none, none, none, none, none, none, none, none}. -file("src/telega/testing/factory.gleam", 73). ?DOC(" Creates a user with custom id and first_name.\n"). -spec user_with(integer(), binary()) -> telega@model@types:user(). user_with(Id, First_name) -> _record = user(), {user, Id, erlang:element(3, _record), First_name, erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record)}. -file("src/telega/testing/factory.gleam", 78). ?DOC(" Creates a private chat with sensible defaults.\n"). -spec chat() -> telega@model@types:chat(). chat() -> {chat, 123456789, <<"private"/utf8>>, none, none, {some, <<"TestUser"/utf8>>}, none, none, none}. -file("src/telega/testing/factory.gleam", 92). ?DOC(" Creates a chat with custom id and type.\n"). -spec chat_with(integer(), binary()) -> telega@model@types:chat(). chat_with(Id, Type_) -> _record = chat(), {chat, Id, Type_, erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record)}. -file("src/telega/testing/factory.gleam", 102). ?DOC(" Creates a message with custom text, from user, and chat.\n"). -spec message_with( binary(), telega@model@types:user(), telega@model@types:chat() ) -> telega@model@types:message(). message_with(Text, From, Chat) -> {message, 1, none, none, {some, From}, none, none, none, none, 1640995200, none, none, Chat, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, {some, Text}, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}. -file("src/telega/testing/factory.gleam", 97). ?DOC(" Creates a message with the given text, using default user and chat.\n"). -spec message(binary()) -> telega@model@types:message(). message(Text) -> message_with(Text, user(), chat()). -file("src/telega/testing/factory.gleam", 231). ?DOC(" Creates a raw `types.Update` with custom update_id.\n"). -spec raw_update_with(telega@model@types:message(), integer()) -> telega@model@types:update(). raw_update_with(Message, Update_id) -> {update, Update_id, {some, Message}, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}. -file("src/telega/testing/factory.gleam", 226). ?DOC(" Creates a raw `types.Update` wrapping a message.\n"). -spec raw_update(telega@model@types:message()) -> telega@model@types:update(). raw_update(Message) -> raw_update_with(Message, 1). -file("src/telega/testing/factory.gleam", 271). ?DOC(" Creates a typed `TextUpdate` with custom from_id and chat_id.\n"). -spec text_update_with(binary(), integer(), integer()) -> telega@update:update(). text_update_with(Text, From_id, Chat_id) -> From = user_with(From_id, <<"TestUser"/utf8>>), Chat = chat_with(Chat_id, <<"private"/utf8>>), Msg = message_with(Text, From, Chat), {text_update, From_id, Chat_id, Text, Msg, raw_update(Msg)}. -file("src/telega/testing/factory.gleam", 266). ?DOC(" Creates a typed `TextUpdate` with default user/chat IDs.\n"). -spec text_update(binary()) -> telega@update:update(). text_update(Text) -> text_update_with(Text, 987654321, 123456789). -file("src/telega/testing/factory.gleam", 294). ?DOC(" Creates a `Command` record with a payload.\n"). -spec command_with(binary(), gleam@option:option(binary())) -> telega@update:command(). command_with(Cmd, Payload) -> {command, <<"/"/utf8, Cmd/binary>>, Cmd, Payload}. -file("src/telega/testing/factory.gleam", 289). ?DOC(" Creates a `Command` record.\n"). -spec command(binary()) -> telega@update:command(). command(Cmd) -> command_with(Cmd, none). -file("src/telega/testing/factory.gleam", 312). ?DOC(" Creates a typed `CommandUpdate` with custom payload, from_id, and chat_id.\n"). -spec command_update_with( binary(), gleam@option:option(binary()), integer(), integer() ) -> telega@update:update(). command_update_with(Cmd, Payload, From_id, Chat_id) -> From = user_with(From_id, <<"TestUser"/utf8>>), Chat = chat_with(Chat_id, <<"private"/utf8>>), Msg = message_with(<<"/"/utf8, Cmd/binary>>, From, Chat), Command = command_with(Cmd, Payload), {command_update, From_id, Chat_id, Command, Msg, raw_update(Msg)}. -file("src/telega/testing/factory.gleam", 302). ?DOC(" Creates a typed `CommandUpdate` with default user/chat IDs.\n"). -spec command_update(binary()) -> telega@update:update(). command_update(Cmd) -> command_update_with(Cmd, none, 987654321, 123456789). -file("src/telega/testing/factory.gleam", 341). ?DOC(" Creates a `PhotoSize` with a custom file_id.\n"). -spec photo_size_with(binary()) -> telega@model@types:photo_size(). photo_size_with(File_id) -> {photo_size, File_id, <>, 640, 480, {some, 12345}}. -file("src/telega/testing/factory.gleam", 336). ?DOC(" Creates a `PhotoSize` with sensible defaults.\n"). -spec photo_size() -> telega@model@types:photo_size(). photo_size() -> photo_size_with(<<"test_photo"/utf8>>). -file("src/telega/testing/factory.gleam", 357). ?DOC(" Creates an `Audio` with custom file_id and duration.\n"). -spec audio_with(binary(), integer()) -> telega@model@types:audio(). audio_with(File_id, Duration) -> {audio, File_id, <>, Duration, none, none, none, {some, <<"audio/mpeg"/utf8>>}, none, none}. -file("src/telega/testing/factory.gleam", 352). ?DOC(" Creates an `Audio` with sensible defaults.\n"). -spec audio() -> telega@model@types:audio(). audio() -> audio_with(<<"test_audio"/utf8>>, 30). -file("src/telega/testing/factory.gleam", 380). ?DOC(" Creates a `Video` with custom file_id and duration.\n"). -spec video_with(binary(), integer()) -> telega@model@types:video(). video_with(File_id, Duration) -> {video, File_id, <>, 1280, 720, Duration, none, none, none, none, none, {some, <<"video/mp4"/utf8>>}, none}. -file("src/telega/testing/factory.gleam", 375). ?DOC(" Creates a `Video` with sensible defaults.\n"). -spec video() -> telega@model@types:video(). video() -> video_with(<<"test_video"/utf8>>, 60). -file("src/telega/testing/factory.gleam", 406). ?DOC(" Creates a `Voice` with custom file_id and duration.\n"). -spec voice_with(binary(), integer()) -> telega@model@types:voice(). voice_with(File_id, Duration) -> {voice, File_id, <>, Duration, {some, <<"audio/ogg"/utf8>>}, none}. -file("src/telega/testing/factory.gleam", 401). ?DOC(" Creates a `Voice` with sensible defaults.\n"). -spec voice() -> telega@model@types:voice(). voice() -> voice_with(<<"test_voice"/utf8>>, 5). -file("src/telega/testing/factory.gleam", 424). ?DOC(" Creates a message with photos attached.\n"). -spec photo_message(list(telega@model@types:photo_size())) -> telega@model@types:message(). photo_message(Photos) -> _record = message(<<""/utf8>>), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), erlang:element(39, _record), erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), {some, Photos}, erlang:element(44, _record), erlang:element(45, _record), erlang:element(46, _record), erlang:element(47, _record), erlang:element(48, _record), erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)}. -file("src/telega/testing/factory.gleam", 429). ?DOC(" Creates a message with a video attached.\n"). -spec video_message(telega@model@types:video()) -> telega@model@types:message(). video_message(Video) -> _record = message(<<""/utf8>>), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), erlang:element(39, _record), erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), erlang:element(43, _record), erlang:element(44, _record), erlang:element(45, _record), {some, Video}, erlang:element(47, _record), erlang:element(48, _record), erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)}. -file("src/telega/testing/factory.gleam", 434). ?DOC(" Creates a message with audio attached.\n"). -spec audio_message(telega@model@types:audio()) -> telega@model@types:message(). audio_message(Audio) -> _record = message(<<""/utf8>>), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), {some, Audio}, erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), erlang:element(43, _record), erlang:element(44, _record), erlang:element(45, _record), erlang:element(46, _record), erlang:element(47, _record), erlang:element(48, _record), erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)}. -file("src/telega/testing/factory.gleam", 439). ?DOC(" Creates a message with a voice note attached.\n"). -spec voice_message(telega@model@types:voice()) -> telega@model@types:message(). voice_message(Voice) -> _record = message(<<""/utf8>>), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), erlang:element(39, _record), erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), erlang:element(43, _record), erlang:element(44, _record), erlang:element(45, _record), erlang:element(46, _record), erlang:element(47, _record), {some, Voice}, erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)}. -file("src/telega/testing/factory.gleam", 457). ?DOC(" Creates a typed `PhotoUpdate` with custom photos, from_id, and chat_id.\n"). -spec photo_update_with( list(telega@model@types:photo_size()), integer(), integer() ) -> telega@update:update(). photo_update_with(Photos, From_id, Chat_id) -> From = user_with(From_id, <<"TestUser"/utf8>>), Chat = chat_with(Chat_id, <<"private"/utf8>>), Msg = begin _record = message_with(<<""/utf8>>, From, Chat), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), erlang:element(39, _record), erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), {some, Photos}, erlang:element(44, _record), erlang:element(45, _record), erlang:element(46, _record), erlang:element(47, _record), erlang:element(48, _record), erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)} end, {photo_update, From_id, Chat_id, Photos, Msg, raw_update(Msg)}. -file("src/telega/testing/factory.gleam", 448). ?DOC(" Creates a typed `PhotoUpdate` with default user/chat IDs.\n"). -spec photo_update() -> telega@update:update(). photo_update() -> photo_update_with([photo_size()], 987654321, 123456789). -file("src/telega/testing/factory.gleam", 489). ?DOC(" Creates a typed `VideoUpdate` with custom video, from_id, and chat_id.\n"). -spec video_update_with(telega@model@types:video(), integer(), integer()) -> telega@update:update(). video_update_with(Video, From_id, Chat_id) -> From = user_with(From_id, <<"TestUser"/utf8>>), Chat = chat_with(Chat_id, <<"private"/utf8>>), Msg = begin _record = message_with(<<""/utf8>>, From, Chat), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), erlang:element(39, _record), erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), erlang:element(43, _record), erlang:element(44, _record), erlang:element(45, _record), {some, Video}, erlang:element(47, _record), erlang:element(48, _record), erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)} end, {video_update, From_id, Chat_id, Video, Msg, raw_update(Msg)}. -file("src/telega/testing/factory.gleam", 480). ?DOC(" Creates a typed `VideoUpdate` with default user/chat IDs.\n"). -spec video_update() -> telega@update:update(). video_update() -> video_update_with(video(), 987654321, 123456789). -file("src/telega/testing/factory.gleam", 521). ?DOC(" Creates a typed `AudioUpdate` with custom audio, from_id, and chat_id.\n"). -spec audio_update_with(telega@model@types:audio(), integer(), integer()) -> telega@update:update(). audio_update_with(Audio, From_id, Chat_id) -> From = user_with(From_id, <<"TestUser"/utf8>>), Chat = chat_with(Chat_id, <<"private"/utf8>>), Msg = begin _record = message_with(<<""/utf8>>, From, Chat), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), {some, Audio}, erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), erlang:element(43, _record), erlang:element(44, _record), erlang:element(45, _record), erlang:element(46, _record), erlang:element(47, _record), erlang:element(48, _record), erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)} end, {audio_update, From_id, Chat_id, Audio, Msg, raw_update(Msg)}. -file("src/telega/testing/factory.gleam", 512). ?DOC(" Creates a typed `AudioUpdate` with default user/chat IDs.\n"). -spec audio_update() -> telega@update:update(). audio_update() -> audio_update_with(audio(), 987654321, 123456789). -file("src/telega/testing/factory.gleam", 553). ?DOC(" Creates a typed `VoiceUpdate` with custom voice, from_id, and chat_id.\n"). -spec voice_update_with(telega@model@types:voice(), integer(), integer()) -> telega@update:update(). voice_update_with(Voice, From_id, Chat_id) -> From = user_with(From_id, <<"TestUser"/utf8>>), Chat = chat_with(Chat_id, <<"private"/utf8>>), Msg = begin _record = message_with(<<""/utf8>>, From, Chat), {message, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), erlang:element(16, _record), erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record), erlang:element(28, _record), erlang:element(29, _record), erlang:element(30, _record), erlang:element(31, _record), erlang:element(32, _record), none, erlang:element(34, _record), erlang:element(35, _record), erlang:element(36, _record), erlang:element(37, _record), erlang:element(38, _record), erlang:element(39, _record), erlang:element(40, _record), erlang:element(41, _record), erlang:element(42, _record), erlang:element(43, _record), erlang:element(44, _record), erlang:element(45, _record), erlang:element(46, _record), erlang:element(47, _record), {some, Voice}, erlang:element(49, _record), erlang:element(50, _record), erlang:element(51, _record), erlang:element(52, _record), erlang:element(53, _record), erlang:element(54, _record), erlang:element(55, _record), erlang:element(56, _record), erlang:element(57, _record), erlang:element(58, _record), erlang:element(59, _record), erlang:element(60, _record), erlang:element(61, _record), erlang:element(62, _record), erlang:element(63, _record), erlang:element(64, _record), erlang:element(65, _record), erlang:element(66, _record), erlang:element(67, _record), erlang:element(68, _record), erlang:element(69, _record), erlang:element(70, _record), erlang:element(71, _record), erlang:element(72, _record), erlang:element(73, _record), erlang:element(74, _record), erlang:element(75, _record), erlang:element(76, _record), erlang:element(77, _record), erlang:element(78, _record), erlang:element(79, _record), erlang:element(80, _record), erlang:element(81, _record), erlang:element(82, _record), erlang:element(83, _record), erlang:element(84, _record), erlang:element(85, _record), erlang:element(86, _record), erlang:element(87, _record), erlang:element(88, _record), erlang:element(89, _record), erlang:element(90, _record), erlang:element(91, _record), erlang:element(92, _record), erlang:element(93, _record), erlang:element(94, _record), erlang:element(95, _record), erlang:element(96, _record), erlang:element(97, _record), erlang:element(98, _record), erlang:element(99, _record), erlang:element(100, _record), erlang:element(101, _record), erlang:element(102, _record), erlang:element(103, _record), erlang:element(104, _record), erlang:element(105, _record), erlang:element(106, _record), erlang:element(107, _record), erlang:element(108, _record), erlang:element(109, _record), erlang:element(110, _record), erlang:element(111, _record), erlang:element(112, _record), erlang:element(113, _record), erlang:element(114, _record), erlang:element(115, _record)} end, {voice_update, From_id, Chat_id, Voice, Msg, raw_update(Msg)}. -file("src/telega/testing/factory.gleam", 544). ?DOC(" Creates a typed `VoiceUpdate` with default user/chat IDs.\n"). -spec voice_update() -> telega@update:update(). voice_update() -> voice_update_with(voice(), 987654321, 123456789). -file("src/telega/testing/factory.gleam", 585). ?DOC(" Creates a typed `MessageUpdate` with custom from_id and chat_id.\n"). -spec message_update_with(telega@model@types:message(), integer(), integer()) -> telega@update:update(). message_update_with(Message, From_id, Chat_id) -> {message_update, From_id, Chat_id, Message, raw_update(Message)}. -file("src/telega/testing/factory.gleam", 576). ?DOC(" Creates a typed `MessageUpdate` with default user/chat IDs.\n"). -spec message_update(telega@model@types:message()) -> telega@update:update(). message_update(Message) -> message_update_with(Message, 987654321, 123456789). -file("src/telega/testing/factory.gleam", 603). ?DOC(" Creates a typed `CallbackQueryUpdate` with custom from_id and chat_id.\n"). -spec callback_query_update_with(binary(), integer(), integer()) -> telega@update:update(). callback_query_update_with(Data, From_id, Chat_id) -> From = user_with(From_id, <<"TestUser"/utf8>>), Chat = chat_with(Chat_id, <<"private"/utf8>>), Msg = message_with(<<""/utf8>>, From, Chat), Query = {callback_query, <<"test_callback_query"/utf8>>, From, {some, {message_maybe_inaccessible_message, Msg}}, none, <<"test_chat_instance"/utf8>>, {some, Data}, none}, Raw = begin _record = raw_update(Msg), {update, erlang:element(2, _record), none, erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record), erlang:element(9, _record), erlang:element(10, _record), erlang:element(11, _record), erlang:element(12, _record), erlang:element(13, _record), erlang:element(14, _record), erlang:element(15, _record), {some, Query}, erlang:element(17, _record), erlang:element(18, _record), erlang:element(19, _record), erlang:element(20, _record), erlang:element(21, _record), erlang:element(22, _record), erlang:element(23, _record), erlang:element(24, _record), erlang:element(25, _record), erlang:element(26, _record), erlang:element(27, _record)} end, {callback_query_update, From_id, Chat_id, Query, Raw}. -file("src/telega/testing/factory.gleam", 594). ?DOC(" Creates a typed `CallbackQueryUpdate` with default user/chat IDs.\n"). -spec callback_query_update(binary()) -> telega@update:update(). callback_query_update(Data) -> callback_query_update_with(Data, 987654321, 123456789).