From 777961f2c6a74c3036f4c9bf323276f453a35b4d Mon Sep 17 00:00:00 2001 From: Harshil <37377066+harshil21@users.noreply.github.com> Date: Wed, 3 Jul 2024 00:35:38 -0400 Subject: [PATCH] Add field invoice_payload to TPUser --- telegram/_stars.py | 13 +++++++++++-- tests/test_stars.py | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/telegram/_stars.py b/telegram/_stars.py index 8cb6ac1311f..a3cce71dd91 100644 --- a/telegram/_stars.py +++ b/telegram/_stars.py @@ -305,20 +305,29 @@ class TransactionPartnerUser(TransactionPartner): Args: user (:class:`telegram.User`): Information about the user. + invoice_payload (:obj:`str`, optional): Bot-specified invoice payload. Attributes: type (:obj:`str`): The type of the transaction partner, always :tg-const:`telegram.TransactionPartner.USER`. user (:class:`telegram.User`): Information about the user. + invoice_payload (:obj:`str`): Optional. Bot-specified invoice payload. """ - __slots__ = ("user",) + __slots__ = ("invoice_payload", "user") - def __init__(self, user: "User", *, api_kwargs: Optional[JSONDict] = None) -> None: + def __init__( + self, + user: "User", + invoice_payload: Optional[str] = None, + *, + api_kwargs: Optional[JSONDict] = None, + ) -> None: super().__init__(type=TransactionPartner.USER, api_kwargs=api_kwargs) with self._unfrozen(): self.user: User = user + self.invoice_payload: Optional[str] = invoice_payload self._id_attrs = ( self.type, self.user, diff --git a/tests/test_stars.py b/tests/test_stars.py index 74f367cb0d2..47dcacb9ef8 100644 --- a/tests/test_stars.py +++ b/tests/test_stars.py @@ -147,6 +147,7 @@ def transaction_partner(tp_scope_class_and_type): return tp_scope_class_and_type[0].de_json( { "type": tp_scope_class_and_type[1], + "invoice_payload": TestTransactionPartnerBase.invoice_payload, "withdrawal_state": TestTransactionPartnerBase.withdrawal_state.to_dict(), "user": TestTransactionPartnerBase.user.to_dict(), }, @@ -359,6 +360,7 @@ def test_equality(self): class TestTransactionPartnerBase: withdrawal_state = withdrawal_state_succeeded() user = transaction_partner_user().user + invoice_payload = "payload" class TestTransactionPartner(TestTransactionPartnerBase): @@ -374,11 +376,14 @@ def test_de_json(self, bot, tp_scope_class_and_type): json_dict = { "type": type_, + "invoice_payload": self.invoice_payload, "withdrawal_state": self.withdrawal_state.to_dict(), "user": self.user.to_dict(), } tp = TransactionPartner.de_json(json_dict, bot) - assert set(tp.api_kwargs.keys()) == {"user", "withdrawal_state"} - set(cls.__slots__) + assert set(tp.api_kwargs.keys()) == {"user", "withdrawal_state", "invoice_payload"} - set( + cls.__slots__ + ) assert isinstance(tp, TransactionPartner) assert type(tp) is cls @@ -387,6 +392,7 @@ def test_de_json(self, bot, tp_scope_class_and_type): assert tp.withdrawal_state == self.withdrawal_state if "user" in cls.__slots__: assert tp.user == self.user + assert tp.invoice_payload == self.invoice_payload assert cls.de_json(None, bot) is None assert TransactionPartner.de_json({}, bot) is None @@ -394,6 +400,7 @@ def test_de_json(self, bot, tp_scope_class_and_type): def test_de_json_invalid_type(self, bot): json_dict = { "type": "invalid", + "invoice_payload": self.invoice_payload, "withdrawal_state": self.withdrawal_state.to_dict(), "user": self.user.to_dict(), } @@ -401,6 +408,7 @@ def test_de_json_invalid_type(self, bot): assert tp.api_kwargs == { "withdrawal_state": self.withdrawal_state.to_dict(), "user": self.user.to_dict(), + "invoice_payload": self.invoice_payload, } assert type(tp) is TransactionPartner @@ -411,6 +419,7 @@ def test_de_json_subclass(self, tp_scope_class, bot): TransactionPartnerFragment instance.""" json_dict = { "type": "invalid", + "invoice_payload": self.invoice_payload, "withdrawal_state": self.withdrawal_state.to_dict(), "user": self.user.to_dict(), } @@ -421,8 +430,9 @@ def test_to_dict(self, transaction_partner): assert isinstance(tp_dict, dict) assert tp_dict["type"] == transaction_partner.type - if hasattr(transaction_partner, "web_app"): + if hasattr(transaction_partner, "user"): assert tp_dict["user"] == transaction_partner.user.to_dict() + assert tp_dict["invoice_payload"] == transaction_partner.invoice_payload if hasattr(transaction_partner, "withdrawal_state"): assert tp_dict["withdrawal_state"] == transaction_partner.withdrawal_state.to_dict() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy