Adds InputContactMessageContent class, fixes InlineQueryResultArticle tests, de_json super calls for replymarkup objects and factory for InputMessageContent #188

This commit is contained in:
Leandro Toledo 2016-04-23 20:19:51 -03:00
parent 7c8a0e00c0
commit f68b8c3a4a
8 changed files with 63 additions and 12 deletions

View file

@ -41,6 +41,8 @@ class InlineKeyboardMarkup(ReplyMarkup):
@staticmethod
def de_json(data):
data = super(InlineKeyboardMarkup, InlineKeyboardMarkup).de_json(data)
if not data:
return None

View file

@ -24,4 +24,18 @@ from telegram import InputMessageContent
class InputContactMessageContent(InputMessageContent):
pass
"""Base class for Telegram InputContactMessageContent Objects"""
def __init__(self,
phone_number,
first_name,
last_name=None):
# Required
self.phone_number = phone_number
self.first_name = first_name
# Optionals
self.last_name = last_name
@staticmethod
def de_json(data):
return InputContactMessageContent(**data)

View file

@ -35,7 +35,4 @@ class InputLocationMessageContent(InputMessageContent):
@staticmethod
def de_json(data):
data = super(InputLocationMessageContent,
InputLocationMessageContent).de_json(data)
return InputLocationMessageContent(**data)

View file

@ -28,4 +28,33 @@ class InputMessageContent(TelegramObject):
@staticmethod
def de_json(data):
pass
data = super(InputMessageContent, InputMessageContent).de_json(data)
if not data:
return None
try:
from telegram import InputTextMessageContent
return InputTextMessageContent.de_json(data)
except TypeError:
pass
try:
from telegram import InputLocationMessageContent
return InputLocationMessageContent.de_json(data)
except TypeError:
pass
try:
from telegram import InputVenueMessageContent
return InputVenueMessageContent.de_json(data)
except TypeError:
pass
try:
from telegram import InputContactMessageContent
return InputContactMessageContent.de_json(data)
except TypeError:
pass
return None

View file

@ -38,7 +38,4 @@ class InputTextMessageContent(InputMessageContent):
@staticmethod
def de_json(data):
data = super(InputTextMessageContent,
InputTextMessageContent).de_json(data)
return InputTextMessageContent(**data)

View file

@ -42,7 +42,4 @@ class InputVenueMessageContent(InputMessageContent):
@staticmethod
def de_json(data):
data = super(InputVenueMessageContent,
InputVenueMessageContent).de_json(data)
return InputVenueMessageContent(**data)

View file

@ -27,4 +27,9 @@ class ReplyMarkup(TelegramObject):
@staticmethod
def de_json(data):
pass
data = super(ReplyMarkup, ReplyMarkup).de_json(data)
if not data:
return None
return data

View file

@ -40,6 +40,10 @@ class InlineQueryResultArticleTest(BaseTest, unittest.TestCase):
self.id = 'id'
self.type = 'article'
self.title = 'title'
self.input_message_content = telegram.InputTextMessageContent(
'input_message_content')
self.reply_markup = telegram.InlineKeyboardMarkup([[
telegram.InlineKeyboardButton('reply_markup')]])
self.url = 'url'
self.hide_url = True
self.description = 'description'
@ -51,6 +55,8 @@ class InlineQueryResultArticleTest(BaseTest, unittest.TestCase):
'type': self.type,
'id': self.id,
'title': self.title,
'input_message_content': self.input_message_content.to_dict(),
'reply_markup': self.reply_markup.to_dict(),
'url': self.url,
'hide_url': self.hide_url,
'description': self.description,
@ -65,6 +71,10 @@ class InlineQueryResultArticleTest(BaseTest, unittest.TestCase):
self.assertEqual(article.type, self.type)
self.assertEqual(article.id, self.id)
self.assertEqual(article.title, self.title)
self.assertDictEqual(article.input_message_content.to_dict(),
self.input_message_content.to_dict())
self.assertDictEqual(article.reply_markup.to_dict(),
self.reply_markup.to_dict())
self.assertEqual(article.url, self.url)
self.assertEqual(article.hide_url, self.hide_url)
self.assertEqual(article.description, self.description)