Beispiel #1
0
    def test_equality(self):
        a = OrderInfo(
            'name', 'number', 'mail',
            ShippingAddress('GB', '', 'London', '12 Grimmauld Place', '',
                            'WC1'))
        b = OrderInfo(
            'name', 'number', 'mail',
            ShippingAddress('GB', '', 'London', '12 Grimmauld Place', '',
                            'WC1'))
        c = OrderInfo(
            'name', 'number', 'mail',
            ShippingAddress('GB', '', 'London', '13 Grimmauld Place', '',
                            'WC1'))
        d = OrderInfo(
            'name', 'number', 'e-mail',
            ShippingAddress('GB', '', 'London', '12 Grimmauld Place', '',
                            'WC1'))
        e = ShippingAddress('GB', '', 'London', '12 Grimmauld Place', '',
                            'WC1')

        assert a == b
        assert hash(a) == hash(b)

        assert a != c
        assert hash(a) != hash(c)

        assert a != d
        assert hash(a) != hash(d)

        assert a != e
        assert hash(a) != hash(e)
Beispiel #2
0
def order_info():
    return OrderInfo(
        TestOrderInfo.name,
        TestOrderInfo.phone_number,
        TestOrderInfo.email,
        TestOrderInfo.shipping_address,
    )
    def de_json(cls, data, bot):
        if not data:
            return None

        data = super(SuccessfulPayment, cls).de_json(data, bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(**data)
Beispiel #4
0
    def de_json(cls, data, bot):
        if not data:
            return None

        data = super(SuccessfulPayment, cls).de_json(data, bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(**data)
Beispiel #5
0
    def de_json(cls, data: Optional[JSONDict], bot: 'Bot') -> Optional['SuccessfulPayment']:
        data = cls.parse_data(data)

        if not data:
            return None

        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(**data)
Beispiel #6
0
    def test_equality(self):
        a = OrderInfo(
            "name",
            "number",
            "mail",
            ShippingAddress("GB", "", "London", "12 Grimmauld Place", "",
                            "WC1"),
        )
        b = OrderInfo(
            "name",
            "number",
            "mail",
            ShippingAddress("GB", "", "London", "12 Grimmauld Place", "",
                            "WC1"),
        )
        c = OrderInfo(
            "name",
            "number",
            "mail",
            ShippingAddress("GB", "", "London", "13 Grimmauld Place", "",
                            "WC1"),
        )
        d = OrderInfo(
            "name",
            "number",
            "e-mail",
            ShippingAddress("GB", "", "London", "12 Grimmauld Place", "",
                            "WC1"),
        )
        e = ShippingAddress("GB", "", "London", "12 Grimmauld Place", "",
                            "WC1")

        assert a == b
        assert hash(a) == hash(b)

        assert a != c
        assert hash(a) != hash(c)

        assert a != d
        assert hash(a) != hash(d)

        assert a != e
        assert hash(a) != hash(e)
    def de_json(cls, data, bot):
        if not data:
            return None

        data = super(PreCheckoutQuery, cls).de_json(data, bot)

        data['from_user'] = User.de_json(data.pop('from'), bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(**data)
    def de_json(cls, data, bot):
        if not data:
            return None

        data = super(PreCheckoutQuery, cls).de_json(data, bot)

        data['from_user'] = User.de_json(data.pop('from'), bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(**data)
Beispiel #9
0
    def de_json(cls, data: Optional[JSONDict], bot: 'Bot') -> Optional['SuccessfulPayment']:
        """See :meth:`telegram.TelegramObject.de_json`."""
        data = cls._parse_data(data)

        if not data:
            return None

        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(**data)
    def de_json(cls, data: Optional[JSONDict], bot: 'Bot') -> Optional['PreCheckoutQuery']:
        data = cls.parse_data(data)

        if not data:
            return None

        data['from_user'] = User.de_json(data.pop('from'), bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(bot=bot, **data)
    def de_json(cls, data, bot):
        if not data:
            return None

        data = super().de_json(data, bot)

        data['from_user'] = User.de_json(data.pop('from'), bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(bot=bot, **data)
    def de_json(cls, data: Optional[JSONDict], bot: 'Bot') -> Optional['PreCheckoutQuery']:
        """See :meth:`telegram.TelegramObject.de_json`."""
        data = cls._parse_data(data)

        if not data:
            return None

        data['from_user'] = User.de_json(data.pop('from'), bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return cls(bot=bot, **data)
Beispiel #13
0
    def test_de_json(self, bot):
        json_dict = {
            "name": TestOrderInfo.name,
            "phone_number": TestOrderInfo.phone_number,
            "email": TestOrderInfo.email,
            "shipping_address": TestOrderInfo.shipping_address.to_dict(),
        }
        order_info = OrderInfo.de_json(json_dict, bot)

        assert order_info.name == self.name
        assert order_info.phone_number == self.phone_number
        assert order_info.email == self.email
        assert order_info.shipping_address == self.shipping_address
    def test_de_json(self, bot):
        json_dict = {
            'name': TestOrderInfo.name,
            'phone_number': TestOrderInfo.phone_number,
            'email': TestOrderInfo.email,
            'shipping_address': TestOrderInfo.shipping_address.to_dict()
        }
        order_info = OrderInfo.de_json(json_dict, bot)

        assert order_info.name == self.name
        assert order_info.phone_number == self.phone_number
        assert order_info.email == self.email
        assert order_info.shipping_address == self.shipping_address
Beispiel #15
0
    def test_de_json(self, bot):
        json_dict = {
            'name': TestOrderInfo.name,
            'phone_number': TestOrderInfo.phone_number,
            'email': TestOrderInfo.email,
            'shipping_address': TestOrderInfo.shipping_address.to_dict()
        }
        order_info = OrderInfo.de_json(json_dict, bot)

        assert order_info.name == self.name
        assert order_info.phone_number == self.phone_number
        assert order_info.email == self.email
        assert order_info.shipping_address == self.shipping_address
    def de_json(data, bot):
        """
        Args:
            data (dict):
            bot (telegram.Bot):

        Returns:
            telegram.SuccessfulPayment:
        """
        if not data:
            return None

        data = super(SuccessfulPayment, SuccessfulPayment).de_json(data, bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return SuccessfulPayment(**data)
    def de_json(data, bot):
        """
        Args:
            data (dict):
            bot (telegram.Bot):

        Returns:
            telegram.PreCheckoutQuery:
        """
        if not data:
            return None

        data = super(PreCheckoutQuery, PreCheckoutQuery).de_json(data, bot)

        data['from_user'] = User.de_json(data.pop('from'), bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return PreCheckoutQuery(**data)
    def de_json(data, bot):
        """
        Args:
            data (dict):
            bot (telegram.Bot):

        Returns:
            telegram.PreCheckoutQuery:
        """
        if not data:
            return None

        data = super(PreCheckoutQuery, PreCheckoutQuery).de_json(data, bot)

        data['from_user'] = User.de_json(data.pop('from'), bot)
        data['order_info'] = OrderInfo.de_json(data.get('order_info'), bot)

        return PreCheckoutQuery(**data)
class TestPreCheckoutQuery(object):
    id = 5
    invoice_payload = 'invoice_payload'
    shipping_option_id = 'shipping_option_id'
    currency = 'EUR'
    total_amount = 100
    from_user = User(0, '', False)
    order_info = OrderInfo()

    def test_de_json(self, bot):
        json_dict = {
            'id': self.id,
            'invoice_payload': self.invoice_payload,
            'shipping_option_id': self.shipping_option_id,
            'currency': self.currency,
            'total_amount': self.total_amount,
            'from': self.from_user.to_dict(),
            'order_info': self.order_info.to_dict()
        }
        pre_checkout_query = PreCheckoutQuery.de_json(json_dict, bot)

        assert pre_checkout_query.bot is bot
        assert pre_checkout_query.id == self.id
        assert pre_checkout_query.invoice_payload == self.invoice_payload
        assert pre_checkout_query.shipping_option_id == self.shipping_option_id
        assert pre_checkout_query.currency == self.currency
        assert pre_checkout_query.from_user == self.from_user
        assert pre_checkout_query.order_info == self.order_info

    def test_to_dict(self, pre_checkout_query):
        pre_checkout_query_dict = pre_checkout_query.to_dict()

        assert isinstance(pre_checkout_query_dict, dict)
        assert pre_checkout_query_dict['id'] == pre_checkout_query.id
        assert pre_checkout_query_dict[
            'invoice_payload'] == pre_checkout_query.invoice_payload
        assert (pre_checkout_query_dict['shipping_option_id'] ==
                pre_checkout_query.shipping_option_id)
        assert pre_checkout_query_dict[
            'currency'] == pre_checkout_query.currency
        assert pre_checkout_query_dict[
            'from'] == pre_checkout_query.from_user.to_dict()
        assert pre_checkout_query_dict[
            'order_info'] == pre_checkout_query.order_info.to_dict()

    def test_answer(self, monkeypatch, pre_checkout_query):
        def test(*args, **kwargs):
            return args[1] == pre_checkout_query.id

        monkeypatch.setattr('telegram.Bot.answer_pre_checkout_query', test)
        assert pre_checkout_query.answer()

    def test_equality(self):
        a = PreCheckoutQuery(self.id, self.from_user, self.currency,
                             self.total_amount, self.invoice_payload)
        b = PreCheckoutQuery(self.id, self.from_user, self.currency,
                             self.total_amount, self.invoice_payload)
        c = PreCheckoutQuery(self.id, None, '', 0, '')
        d = PreCheckoutQuery(0, self.from_user, self.currency,
                             self.total_amount, self.invoice_payload)
        e = Update(self.id)

        assert a == b
        assert hash(a) == hash(b)
        assert a is not b

        assert a == c
        assert hash(a) == hash(c)

        assert a != d
        assert hash(a) != hash(d)

        assert a != e
        assert hash(a) != hash(e)
class TestSuccessfulPayment:
    invoice_payload = 'invoice_payload'
    shipping_option_id = 'shipping_option_id'
    currency = 'EUR'
    total_amount = 100
    order_info = OrderInfo()
    telegram_payment_charge_id = 'telegram_payment_charge_id'
    provider_payment_charge_id = 'provider_payment_charge_id'

    def test_slot_behaviour(self, successful_payment, recwarn, mro_slots):
        inst = successful_payment
        for attr in inst.__slots__:
            assert getattr(inst, attr, 'err') != 'err', f"got extra slot '{attr}'"
        assert not inst.__dict__, f"got missing slot(s): {inst.__dict__}"
        assert len(mro_slots(inst)) == len(set(mro_slots(inst))), "duplicate slot"
        inst.custom, inst.currency = 'should give warning', self.currency
        assert len(recwarn) == 1 and 'custom' in str(recwarn[0].message), recwarn.list

    def test_de_json(self, bot):
        json_dict = {
            'invoice_payload': self.invoice_payload,
            'shipping_option_id': self.shipping_option_id,
            'currency': self.currency,
            'total_amount': self.total_amount,
            'order_info': self.order_info.to_dict(),
            'telegram_payment_charge_id': self.telegram_payment_charge_id,
            'provider_payment_charge_id': self.provider_payment_charge_id,
        }
        successful_payment = SuccessfulPayment.de_json(json_dict, bot)

        assert successful_payment.invoice_payload == self.invoice_payload
        assert successful_payment.shipping_option_id == self.shipping_option_id
        assert successful_payment.currency == self.currency
        assert successful_payment.order_info == self.order_info
        assert successful_payment.telegram_payment_charge_id == self.telegram_payment_charge_id
        assert successful_payment.provider_payment_charge_id == self.provider_payment_charge_id

    def test_to_dict(self, successful_payment):
        successful_payment_dict = successful_payment.to_dict()

        assert isinstance(successful_payment_dict, dict)
        assert successful_payment_dict['invoice_payload'] == successful_payment.invoice_payload
        assert (
            successful_payment_dict['shipping_option_id'] == successful_payment.shipping_option_id
        )
        assert successful_payment_dict['currency'] == successful_payment.currency
        assert successful_payment_dict['order_info'] == successful_payment.order_info.to_dict()
        assert (
            successful_payment_dict['telegram_payment_charge_id']
            == successful_payment.telegram_payment_charge_id
        )
        assert (
            successful_payment_dict['provider_payment_charge_id']
            == successful_payment.provider_payment_charge_id
        )

    def test_equality(self):
        a = SuccessfulPayment(
            self.currency,
            self.total_amount,
            self.invoice_payload,
            self.telegram_payment_charge_id,
            self.provider_payment_charge_id,
        )
        b = SuccessfulPayment(
            self.currency,
            self.total_amount,
            self.invoice_payload,
            self.telegram_payment_charge_id,
            self.provider_payment_charge_id,
        )
        c = SuccessfulPayment(
            '', 0, '', self.telegram_payment_charge_id, self.provider_payment_charge_id
        )
        d = SuccessfulPayment(
            self.currency,
            self.total_amount,
            self.invoice_payload,
            self.telegram_payment_charge_id,
            '',
        )

        assert a == b
        assert hash(a) == hash(b)
        assert a is not b

        assert a == c
        assert hash(a) == hash(c)

        assert a != d
        assert hash(a) != hash(d)
class TestPreCheckoutQuery:
    id_ = 5
    invoice_payload = "invoice_payload"
    shipping_option_id = "shipping_option_id"
    currency = "EUR"
    total_amount = 100
    from_user = User(0, "", False)
    order_info = OrderInfo()

    def test_slot_behaviour(self, pre_checkout_query, mro_slots):
        inst = pre_checkout_query
        for attr in inst.__slots__:
            assert getattr(inst, attr, "err") != "err", f"got extra slot '{attr}'"
        assert len(mro_slots(inst)) == len(set(mro_slots(inst))), "duplicate slot"

    def test_de_json(self, bot):
        json_dict = {
            "id": self.id_,
            "invoice_payload": self.invoice_payload,
            "shipping_option_id": self.shipping_option_id,
            "currency": self.currency,
            "total_amount": self.total_amount,
            "from": self.from_user.to_dict(),
            "order_info": self.order_info.to_dict(),
        }
        pre_checkout_query = PreCheckoutQuery.de_json(json_dict, bot)

        assert pre_checkout_query.get_bot() is bot
        assert pre_checkout_query.id == self.id_
        assert pre_checkout_query.invoice_payload == self.invoice_payload
        assert pre_checkout_query.shipping_option_id == self.shipping_option_id
        assert pre_checkout_query.currency == self.currency
        assert pre_checkout_query.from_user == self.from_user
        assert pre_checkout_query.order_info == self.order_info

    def test_to_dict(self, pre_checkout_query):
        pre_checkout_query_dict = pre_checkout_query.to_dict()

        assert isinstance(pre_checkout_query_dict, dict)
        assert pre_checkout_query_dict["id"] == pre_checkout_query.id
        assert pre_checkout_query_dict["invoice_payload"] == pre_checkout_query.invoice_payload
        assert (
            pre_checkout_query_dict["shipping_option_id"] == pre_checkout_query.shipping_option_id
        )
        assert pre_checkout_query_dict["currency"] == pre_checkout_query.currency
        assert pre_checkout_query_dict["from"] == pre_checkout_query.from_user.to_dict()
        assert pre_checkout_query_dict["order_info"] == pre_checkout_query.order_info.to_dict()

    async def test_answer(self, monkeypatch, pre_checkout_query):
        async def make_assertion(*_, **kwargs):
            return kwargs["pre_checkout_query_id"] == pre_checkout_query.id

        assert check_shortcut_signature(
            PreCheckoutQuery.answer, Bot.answer_pre_checkout_query, ["pre_checkout_query_id"], []
        )
        assert await check_shortcut_call(
            pre_checkout_query.answer,
            pre_checkout_query.get_bot(),
            "answer_pre_checkout_query",
        )
        assert await check_defaults_handling(
            pre_checkout_query.answer, pre_checkout_query.get_bot()
        )

        monkeypatch.setattr(
            pre_checkout_query.get_bot(), "answer_pre_checkout_query", make_assertion
        )
        assert await pre_checkout_query.answer(ok=True)

    def test_equality(self):
        a = PreCheckoutQuery(
            self.id_, self.from_user, self.currency, self.total_amount, self.invoice_payload
        )
        b = PreCheckoutQuery(
            self.id_, self.from_user, self.currency, self.total_amount, self.invoice_payload
        )
        c = PreCheckoutQuery(self.id_, None, "", 0, "")
        d = PreCheckoutQuery(
            0, self.from_user, self.currency, self.total_amount, self.invoice_payload
        )
        e = Update(self.id_)

        assert a == b
        assert hash(a) == hash(b)
        assert a is not b

        assert a == c
        assert hash(a) == hash(c)

        assert a != d
        assert hash(a) != hash(d)

        assert a != e
        assert hash(a) != hash(e)
class TestSuccessfulPayment:
    invoice_payload = "invoice_payload"
    shipping_option_id = "shipping_option_id"
    currency = "EUR"
    total_amount = 100
    order_info = OrderInfo()
    telegram_payment_charge_id = "telegram_payment_charge_id"
    provider_payment_charge_id = "provider_payment_charge_id"

    def test_slot_behaviour(self, successful_payment, mro_slots):
        inst = successful_payment
        for attr in inst.__slots__:
            assert getattr(inst, attr,
                           "err") != "err", f"got extra slot '{attr}'"
        assert len(mro_slots(inst)) == len(set(
            mro_slots(inst))), "duplicate slot"

    def test_de_json(self, bot):
        json_dict = {
            "invoice_payload": self.invoice_payload,
            "shipping_option_id": self.shipping_option_id,
            "currency": self.currency,
            "total_amount": self.total_amount,
            "order_info": self.order_info.to_dict(),
            "telegram_payment_charge_id": self.telegram_payment_charge_id,
            "provider_payment_charge_id": self.provider_payment_charge_id,
        }
        successful_payment = SuccessfulPayment.de_json(json_dict, bot)

        assert successful_payment.invoice_payload == self.invoice_payload
        assert successful_payment.shipping_option_id == self.shipping_option_id
        assert successful_payment.currency == self.currency
        assert successful_payment.order_info == self.order_info
        assert successful_payment.telegram_payment_charge_id == self.telegram_payment_charge_id
        assert successful_payment.provider_payment_charge_id == self.provider_payment_charge_id

    def test_to_dict(self, successful_payment):
        successful_payment_dict = successful_payment.to_dict()

        assert isinstance(successful_payment_dict, dict)
        assert successful_payment_dict[
            "invoice_payload"] == successful_payment.invoice_payload
        assert (successful_payment_dict["shipping_option_id"] ==
                successful_payment.shipping_option_id)
        assert successful_payment_dict[
            "currency"] == successful_payment.currency
        assert successful_payment_dict[
            "order_info"] == successful_payment.order_info.to_dict()
        assert (successful_payment_dict["telegram_payment_charge_id"] ==
                successful_payment.telegram_payment_charge_id)
        assert (successful_payment_dict["provider_payment_charge_id"] ==
                successful_payment.provider_payment_charge_id)

    def test_equality(self):
        a = SuccessfulPayment(
            self.currency,
            self.total_amount,
            self.invoice_payload,
            self.telegram_payment_charge_id,
            self.provider_payment_charge_id,
        )
        b = SuccessfulPayment(
            self.currency,
            self.total_amount,
            self.invoice_payload,
            self.telegram_payment_charge_id,
            self.provider_payment_charge_id,
        )
        c = SuccessfulPayment("", 0, "", self.telegram_payment_charge_id,
                              self.provider_payment_charge_id)
        d = SuccessfulPayment(
            self.currency,
            self.total_amount,
            self.invoice_payload,
            self.telegram_payment_charge_id,
            "",
        )

        assert a == b
        assert hash(a) == hash(b)
        assert a is not b

        assert a == c
        assert hash(a) == hash(c)

        assert a != d
        assert hash(a) != hash(d)
class TestSuccessfulPayment(object):
    invoice_payload = 'invoice_payload'
    shipping_option_id = 'shipping_option_id'
    currency = 'EUR'
    total_amount = 100
    order_info = OrderInfo()
    telegram_payment_charge_id = 'telegram_payment_charge_id'
    provider_payment_charge_id = 'provider_payment_charge_id'

    def test_de_json(self, bot):
        json_dict = {
            'invoice_payload': self.invoice_payload,
            'shipping_option_id': self.shipping_option_id,
            'currency': self.currency,
            'total_amount': self.total_amount,
            'order_info': self.order_info.to_dict(),
            'telegram_payment_charge_id': self.telegram_payment_charge_id,
            'provider_payment_charge_id': self.provider_payment_charge_id
        }
        successful_payment = SuccessfulPayment.de_json(json_dict, bot)

        assert successful_payment.invoice_payload == self.invoice_payload
        assert successful_payment.shipping_option_id == self.shipping_option_id
        assert successful_payment.currency == self.currency
        assert successful_payment.order_info == self.order_info
        assert successful_payment.telegram_payment_charge_id == self.telegram_payment_charge_id
        assert successful_payment.provider_payment_charge_id == self.provider_payment_charge_id

    @staticmethod
    def test_to_dict(successful_payment):
        successful_payment_dict = successful_payment.to_dict()

        assert isinstance(successful_payment_dict, dict)
        assert successful_payment_dict[
            'invoice_payload'] == successful_payment.invoice_payload
        assert (successful_payment_dict['shipping_option_id'] ==
                successful_payment.shipping_option_id)
        assert successful_payment_dict[
            'currency'] == successful_payment.currency
        assert successful_payment_dict[
            'order_info'] == successful_payment.order_info.to_dict()
        assert (successful_payment_dict['telegram_payment_charge_id'] ==
                successful_payment.telegram_payment_charge_id)
        assert (successful_payment_dict['provider_payment_charge_id'] ==
                successful_payment.provider_payment_charge_id)

    def test_equality(self):
        a = SuccessfulPayment(self.currency, self.total_amount,
                              self.invoice_payload,
                              self.telegram_payment_charge_id,
                              self.provider_payment_charge_id)
        b = SuccessfulPayment(self.currency, self.total_amount,
                              self.invoice_payload,
                              self.telegram_payment_charge_id,
                              self.provider_payment_charge_id)
        c = SuccessfulPayment('', 0, '', self.telegram_payment_charge_id,
                              self.provider_payment_charge_id)
        d = SuccessfulPayment(self.currency, self.total_amount,
                              self.invoice_payload,
                              self.telegram_payment_charge_id, '')

        assert a == b
        assert hash(a) == hash(b)
        assert a is not b

        assert a == c
        assert hash(a) == hash(c)

        assert a != d
        assert hash(a) != hash(d)
class TestPreCheckoutQuery:
    id_ = 5
    invoice_payload = 'invoice_payload'
    shipping_option_id = 'shipping_option_id'
    currency = 'EUR'
    total_amount = 100
    from_user = User(0, '', False)
    order_info = OrderInfo()

    def test_slot_behaviour(self, pre_checkout_query, recwarn, mro_slots):
        inst = pre_checkout_query
        for attr in inst.__slots__:
            assert getattr(inst, attr, 'err') != 'err', f"got extra slot '{attr}'"
        assert not inst.__dict__, f"got missing slot(s): {inst.__dict__}"
        assert len(mro_slots(inst)) == len(set(mro_slots(inst))), "duplicate slot"
        inst.custom, inst.id = 'should give warning', self.id_
        assert len(recwarn) == 1 and 'custom' in str(recwarn[0].message), recwarn.list

    def test_de_json(self, bot):
        json_dict = {
            'id': self.id_,
            'invoice_payload': self.invoice_payload,
            'shipping_option_id': self.shipping_option_id,
            'currency': self.currency,
            'total_amount': self.total_amount,
            'from': self.from_user.to_dict(),
            'order_info': self.order_info.to_dict(),
        }
        pre_checkout_query = PreCheckoutQuery.de_json(json_dict, bot)

        assert pre_checkout_query.bot is bot
        assert pre_checkout_query.id == self.id_
        assert pre_checkout_query.invoice_payload == self.invoice_payload
        assert pre_checkout_query.shipping_option_id == self.shipping_option_id
        assert pre_checkout_query.currency == self.currency
        assert pre_checkout_query.from_user == self.from_user
        assert pre_checkout_query.order_info == self.order_info

    def test_to_dict(self, pre_checkout_query):
        pre_checkout_query_dict = pre_checkout_query.to_dict()

        assert isinstance(pre_checkout_query_dict, dict)
        assert pre_checkout_query_dict['id'] == pre_checkout_query.id
        assert pre_checkout_query_dict['invoice_payload'] == pre_checkout_query.invoice_payload
        assert (
            pre_checkout_query_dict['shipping_option_id'] == pre_checkout_query.shipping_option_id
        )
        assert pre_checkout_query_dict['currency'] == pre_checkout_query.currency
        assert pre_checkout_query_dict['from'] == pre_checkout_query.from_user.to_dict()
        assert pre_checkout_query_dict['order_info'] == pre_checkout_query.order_info.to_dict()

    def test_answer(self, monkeypatch, pre_checkout_query):
        def make_assertion(*_, **kwargs):
            return kwargs['pre_checkout_query_id'] == pre_checkout_query.id

        assert check_shortcut_signature(
            PreCheckoutQuery.answer, Bot.answer_pre_checkout_query, ['pre_checkout_query_id'], []
        )
        assert check_shortcut_call(
            pre_checkout_query.answer,
            pre_checkout_query.bot,
            'answer_pre_checkout_query',
        )
        assert check_defaults_handling(pre_checkout_query.answer, pre_checkout_query.bot)

        monkeypatch.setattr(pre_checkout_query.bot, 'answer_pre_checkout_query', make_assertion)
        assert pre_checkout_query.answer(ok=True)

    def test_equality(self):
        a = PreCheckoutQuery(
            self.id_, self.from_user, self.currency, self.total_amount, self.invoice_payload
        )
        b = PreCheckoutQuery(
            self.id_, self.from_user, self.currency, self.total_amount, self.invoice_payload
        )
        c = PreCheckoutQuery(self.id_, None, '', 0, '')
        d = PreCheckoutQuery(
            0, self.from_user, self.currency, self.total_amount, self.invoice_payload
        )
        e = Update(self.id_)

        assert a == b
        assert hash(a) == hash(b)
        assert a is not b

        assert a == c
        assert hash(a) == hash(c)

        assert a != d
        assert hash(a) != hash(d)

        assert a != e
        assert hash(a) != hash(e)
Beispiel #25
0
class TestPreCheckoutQuery:
    id_ = 5
    invoice_payload = 'invoice_payload'
    shipping_option_id = 'shipping_option_id'
    currency = 'EUR'
    total_amount = 100
    from_user = User(0, '', False)
    order_info = OrderInfo()

    def test_de_json(self, bot):
        json_dict = {
            'id': self.id_,
            'invoice_payload': self.invoice_payload,
            'shipping_option_id': self.shipping_option_id,
            'currency': self.currency,
            'total_amount': self.total_amount,
            'from': self.from_user.to_dict(),
            'order_info': self.order_info.to_dict(),
        }
        pre_checkout_query = PreCheckoutQuery.de_json(json_dict, bot)

        assert pre_checkout_query.bot is bot
        assert pre_checkout_query.id == self.id_
        assert pre_checkout_query.invoice_payload == self.invoice_payload
        assert pre_checkout_query.shipping_option_id == self.shipping_option_id
        assert pre_checkout_query.currency == self.currency
        assert pre_checkout_query.from_user == self.from_user
        assert pre_checkout_query.order_info == self.order_info

    def test_to_dict(self, pre_checkout_query):
        pre_checkout_query_dict = pre_checkout_query.to_dict()

        assert isinstance(pre_checkout_query_dict, dict)
        assert pre_checkout_query_dict['id'] == pre_checkout_query.id
        assert pre_checkout_query_dict[
            'invoice_payload'] == pre_checkout_query.invoice_payload
        assert (pre_checkout_query_dict['shipping_option_id'] ==
                pre_checkout_query.shipping_option_id)
        assert pre_checkout_query_dict[
            'currency'] == pre_checkout_query.currency
        assert pre_checkout_query_dict[
            'from'] == pre_checkout_query.from_user.to_dict()
        assert pre_checkout_query_dict[
            'order_info'] == pre_checkout_query.order_info.to_dict()

    def test_answer(self, monkeypatch, pre_checkout_query):
        def make_assertion(*_, **kwargs):
            return kwargs['pre_checkout_query_id'] == pre_checkout_query.id

        assert check_shortcut_signature(PreCheckoutQuery.answer,
                                        Bot.answer_pre_checkout_query,
                                        ['pre_checkout_query_id'], [])
        assert check_shortcut_call(
            pre_checkout_query.answer,
            pre_checkout_query.bot,
            'answer_pre_checkout_query',
        )
        assert check_defaults_handling(pre_checkout_query.answer,
                                       pre_checkout_query.bot)

        monkeypatch.setattr(pre_checkout_query.bot,
                            'answer_pre_checkout_query', make_assertion)
        assert pre_checkout_query.answer(ok=True)

    def test_equality(self):
        a = PreCheckoutQuery(self.id_, self.from_user, self.currency,
                             self.total_amount, self.invoice_payload)
        b = PreCheckoutQuery(self.id_, self.from_user, self.currency,
                             self.total_amount, self.invoice_payload)
        c = PreCheckoutQuery(self.id_, None, '', 0, '')
        d = PreCheckoutQuery(0, self.from_user, self.currency,
                             self.total_amount, self.invoice_payload)
        e = Update(self.id_)

        assert a == b
        assert hash(a) == hash(b)
        assert a is not b

        assert a == c
        assert hash(a) == hash(c)

        assert a != d
        assert hash(a) != hash(d)

        assert a != e
        assert hash(a) != hash(e)