Skip to content

Commit

Permalink
Merge branch 'develop': v 1.2.3. Add new fields to interfaces + safe_…
Browse files Browse the repository at this point in the history
…kwargs
  • Loading branch information
mahenzon committed Mar 17, 2019
2 parents f142993 + f8ed5af commit cfd2a04
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 13 deletions.
2 changes: 1 addition & 1 deletion aioalice/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())


__version__ = '1.2.2'
__version__ = '1.2.3'
5 changes: 5 additions & 0 deletions aioalice/types/interfaces.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
from attr import attrs, attrib

from aioalice.utils import safe_kwargs
from . import AliceObject


@safe_kwargs
@attrs
class Interfaces(AliceObject):
"""Interfaces object"""
account_linking = attrib(factory=dict)
payments = attrib(factory=dict)
screen = attrib(factory=dict)
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
if sys.version_info < MINIMAL_PY_VERSION:
raise RuntimeError('aioAlice works only with Python {}+'.format('.'.join(map(str, MINIMAL_PY_VERSION))))

__version__ = '1.2.2'
__version__ = '1.2.3'


def get_description():
Expand Down
30 changes: 30 additions & 0 deletions tests/_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,3 +344,33 @@
},
'version': '1.0'
}

REQUEST_NEW_INTERFACES = {
'meta': {
'client_id': 'ru.yandex.searchplugin/7.16 (none none; android 4.4.2)',
'interfaces': {
'account_linking': {},
'payments': {},
'screen': {}
},
'locale': 'ru-RU',
'timezone': 'UTC'
},
'request': {
'command': '',
'nlu': {
'entities': [],
'tokens': [],
},
'original_utterance': '',
'type': 'SimpleUtterance',
},
'session': {
'message_id': 0,
'new': True,
'session_id': 'aa6be578-34b9d8f7-e2f013b9-5c3b058d',
'skill_id': '94d16422-a32f-4932-9f5e-354d31f71998',
'user_id': '30397B6278A36EADCF17D4AF2707BF2C3A8E6BA48E5CD34A30365C1E628A9F9B'
},
'version': '1.0'
}
34 changes: 23 additions & 11 deletions tests/test_types.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import unittest
from functools import partial

from aioalice import types
from aioalice.utils import generate_json_payload
Expand All @@ -18,7 +19,10 @@
EXPECTED_ALICE_RESPONSE_ITEMS_LIST_WITH_BUTTON, \
DATA_FROM_STATION, REQUEST_WITH_NLU, ENTITY_TOKEN, \
ENTITY_VALUE, ENTITY, ENTITY_INTEGER, NLU, \
PING_REQUEST_1
PING_REQUEST_1, REQUEST_NEW_INTERFACES


TestAliceRequest = partial(types.AliceRequest, None) # original_request: https://github.com/surik00/aioalice/pull/2/


class TestAliceTypes(unittest.TestCase):
Expand All @@ -27,17 +31,21 @@ def _assert_payload(self, alice_obj, expected_json):
json_payload = generate_json_payload(**alice_obj.to_json())
self.assertEqual(json_payload, expected_json)

def _test_interfaces(self, interfaces, dct):
if 'account_linking' in dct:
self.assertEqual(interfaces.account_linking, dct['account_linking'])
if 'payments' in dct:
self.assertEqual(interfaces.payments, dct['payments'])
self.assertEqual(interfaces.screen, dct['screen'])

def _test_meta(self, meta, dct):
self.assertEqual(meta.locale, dct['locale'])
self.assertEqual(meta.timezone, dct['timezone'])
self.assertEqual(meta.client_id, dct['client_id'])
if 'flags' in dct:
self.assertEqual(meta.flags, dct['flags'])
if 'interfaces' in dct:
self.assertEqual(
meta.interfaces.screen,
dct['interfaces']['screen']
)
self._test_interfaces(meta.interfaces, dct['interfaces'])

def test_meta(self):
meta = types.Meta(**META)
Expand Down Expand Up @@ -195,7 +203,7 @@ def _test_alice_request(self, arq, dct):
self._test_meta(arq.meta, dct['meta'])

def _test_alice_request_from_dct(self, dct):
alice_request = types.AliceRequest(None, **dct)
alice_request = TestAliceRequest(**dct)
self._test_alice_request(alice_request, dct)

def test_alice_request(self):
Expand All @@ -215,23 +223,23 @@ def test_alice_response(self):
self._test_alice_response(alice_response, ALICE_RESPONSE_WITH_BUTTONS)

def test_response_from_request(self):
alice_request = types.AliceRequest(None, **ALICE_REQUEST)
alice_request = TestAliceRequest(**ALICE_REQUEST)

alice_response = alice_request.response(
EXPECTED_RESPONSE['response']['text']
)
self._assert_payload(alice_response, EXPECTED_RESPONSE)

def test_response_from_request2(self):
alice_request = types.AliceRequest(None, **ALICE_REQUEST)
alice_request = TestAliceRequest(**ALICE_REQUEST)
alice_response = alice_request.response(
RESPONSE_TEXT, tts=TTS,
buttons=[types.Button(BUTTON_TEXT, url=URL)]
)
self._assert_payload(alice_response, EXPECTED_RESPONSE_WITH_BUTTONS)

def test_response_big_image_from_request(self):
alice_request = types.AliceRequest(None, **ALICE_REQUEST)
alice_request = TestAliceRequest(**ALICE_REQUEST)
alice_response = alice_request.response_big_image(
RESPONSE_TEXT, IMAGE_ID, CARD_TITLE, CARD_DESCR,
types.MediaButton(BUTTON_TEXT, URL, MB_PAYLOAD),
Expand All @@ -240,7 +248,7 @@ def test_response_big_image_from_request(self):
self._assert_payload(alice_response, EXPECTED_ALICE_RESPONSE_BIG_IMAGE_WITH_BUTTON)

def test_response_items_list_from_request(self):
alice_request = types.AliceRequest(None, **ALICE_REQUEST)
alice_request = TestAliceRequest(**ALICE_REQUEST)
alice_response = alice_request.response_items_list(
RESPONSE_TEXT, CARD_HEADER_TEXT,
[types.Image(**IMAGE)],
Expand Down Expand Up @@ -331,9 +339,13 @@ def test_request_with_nlu(self):
self._test_alice_request_from_dct(REQUEST_WITH_NLU)

def test_request_with_interfaces(self):
alice_request = types.AliceRequest(**PING_REQUEST_1)
alice_request = TestAliceRequest(**PING_REQUEST_1)
self._test_alice_request(alice_request, PING_REQUEST_1)

def test_request_new_fields_in_interfaces(self):
alice_request = TestAliceRequest(**REQUEST_NEW_INTERFACES)
self._test_alice_request(alice_request, REQUEST_NEW_INTERFACES)


if __name__ == '__main__':
unittest.main()

0 comments on commit cfd2a04

Please sign in to comment.