import unittest
from messagebird import Client

try:
    from unittest.mock import Mock
except ImportError:
    # mock was added to unittest in Python 3.3, but was an external library
    # before.
    from mock import Mock


class TestLookup(unittest.TestCase):

    def test_lookup(self):
        http_client = Mock()
        http_client.request.return_value = '{"href": "https://rest.messagebird.com/lookup/31612345678","countryCode": "NL","countryPrefix": 31,"phoneNumber": 31612345678,"type": "mobile","formats": {"e164": "+31612345678","international": "+31 6 12345678","national": "06 12345678","rfc3966": "tel:+31-6-12345678"},"hlr": {"id": "hlr-id","network": 20416,"reference": "reference2000","status": "active","createdDatetime": "2015-12-15T08:19:24+00:00","statusDatetime": "2015-12-15T08:19:25+00:00"}}'

        lookup = Client('', http_client).lookup('0612345678', {'countryCode': 'NL'})

        http_client.request.assert_called_once_with('lookup/0612345678', 'GET', {'countryCode': 'NL'})

        self.assertEqual('mobile', lookup.type)

    def test_lookup_hlr(self):
        http_client = Mock()
        http_client.request.return_value = '{"id": "hlr-id","network": 20416,"reference": "reference2000","status": "active","createdDatetime": "2015-12-15T08:19:24+00:00","statusDatetime": "2015-12-15T08:19:25+00:00"}'

        lookup_hlr = Client('', http_client).lookup_hlr(31612345678, {'reference': 'reference2000'})

        http_client.request.assert_called_once_with('lookup/31612345678/hlr', 'GET', {'reference': 'reference2000'})

        self.assertEqual(lookup_hlr.status, 'active')

    def test_lookup_hlr_create(self):
        http_client = Mock()
        http_client.request.return_value = '{}'

        Client('', http_client).lookup_hlr_create(31612345678, {'reference': 'MyReference'})

        http_client.request.assert_called_once_with('lookup/31612345678/hlr', 'POST', {'reference': 'MyReference'})