Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test of international biz for business endpoint. Add unicode_lite… #77

Merged
merged 2 commits into from
Jul 27, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,12 @@ repos:
rev: 18.6b4
hooks:
- id: black
- repo: https://github.com/asottile/reorder_python_imports
rev: v1.1.0
hooks:
- id: reorder-python-imports
args:
- --add-import
- from __future__ import absolute_import
- --add-import
- from __future__ import unicode_literals
3 changes: 3 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

from setuptools import find_packages
from setuptools import setup

Expand Down
14 changes: 13 additions & 1 deletion testing/business_lookup_responses.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import responses

from testing.util import read_json_file


BUSINESS_LOOKUP_RESPONSE = responses.Response(
YELP_SAN_FRANCISCO = responses.Response(
method="GET",
url="https://api.yelp.com/v3/businesses/yelp-san-francisco",
json=read_json_file("business_lookup_yelp_san_francisco.json"),
status=200,
)


SACRE_COEUR_PARIS = responses.Response(
method="GET",
url="https://api.yelp.com/v3/businesses/basilique-du-sacré-cœur-de-montmartre-paris-3", # noqa: E501
json=read_json_file("business_lookup_sacre_coeur_paris.json"),
status=200,
)
3 changes: 3 additions & 0 deletions testing/error_responses.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import responses


Expand Down
97 changes: 97 additions & 0 deletions testing/json/business_lookup_sacre_coeur_paris.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{
"alias": "basilique-du-sacr\u00e9-c\u0153ur-de-montmartre-paris-3",
"categories": [
{
"alias": "churches",
"title": "\u00c9glise"
},
{
"alias": "landmarks",
"title": "Lieu & B\u00e2timent historique"
}
],
"coordinates": {
"latitude": 48.886720769013,
"longitude": 2.3430021056794
},
"display_phone": "01 53 41 89 00",
"hours": [
{
"hours_type": "REGULAR",
"is_open_now": false,
"open": [
{
"day": 0,
"end": "2230",
"is_overnight": false,
"start": "0600"
},
{
"day": 1,
"end": "2230",
"is_overnight": false,
"start": "0600"
},
{
"day": 2,
"end": "2230",
"is_overnight": false,
"start": "0600"
},
{
"day": 3,
"end": "2230",
"is_overnight": false,
"start": "0600"
},
{
"day": 4,
"end": "2230",
"is_overnight": false,
"start": "0600"
},
{
"day": 5,
"end": "2230",
"is_overnight": false,
"start": "0600"
},
{
"day": 6,
"end": "2230",
"is_overnight": false,
"start": "0600"
}
]
}
],
"id": "spIGAtquYQ0S7xai5eJSuA",
"image_url": "https://s3-media2.fl.yelpcdn.com/bphoto/_jdFMkxKj8ejkD2dOduC1A/o.jpg",
"is_claimed": false,
"is_closed": false,
"location": {
"address1": "35 rue du Chevalier de la Barre",
"address2": "",
"address3": "",
"city": "Paris",
"country": "FR",
"cross_streets": "",
"display_address": [
"35 rue du Chevalier de la Barre",
"75018 Paris"
],
"state": "75",
"zip_code": "75018"
},
"name": "Basilique du Sacr\u00e9-C\u0153ur de Montmartre",
"phone": "+33153418900",
"photos": [
"https://s3-media2.fl.yelpcdn.com/bphoto/_jdFMkxKj8ejkD2dOduC1A/o.jpg",
"https://s3-media4.fl.yelpcdn.com/bphoto/xFFrnrUAPZYFvtZMLLWkvQ/o.jpg",
"https://s3-media4.fl.yelpcdn.com/bphoto/70tWE7016eFJ-xjTup-YRA/o.jpg"
],
"rating": 4.5,
"review_count": 538,
"transactions": [],
"url": "https://www.yelp.fr/biz/basilique-du-sacr%C3%A9-c%C5%93ur-de-montmartre-paris-3"
}
64 changes: 60 additions & 4 deletions testing/obj/business.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

from yelp.obj.business import Business
from yelp.obj.location import Location
from yelp.obj.coordinates import Coordinates
from yelp.obj.category import Category
from yelp.obj.hours import Hours
from yelp.obj.coordinates import Coordinates
from yelp.obj.hours import DayHours
from yelp.obj.hours import Hours
from yelp.obj.location import Location


biz_response_obj = Business(
yelp_san_francisco = Business(
id="4kMBvIEWPxWkWKFN__8SxQ",
alias="yelp-san-francisco",
name="Yelp",
Expand Down Expand Up @@ -53,3 +56,56 @@
transactions=[],
attributes=None,
)


sacre_coeur_paris = Business(
alias="basilique-du-sacré-cœur-de-montmartre-paris-3",
attributes=None,
categories=[
Category(alias="churches", title="Église"),
Category(alias="landmarks", title="Lieu & Bâtiment historique"),
],
coordinates=Coordinates(latitude=48.886720769013, longitude=2.3430021056794),
display_phone="01 53 41 89 00",
hours=[
Hours(
hours_type="REGULAR",
is_open_now=False,
open=[
DayHours(day=0, end="2230", is_overnight=False, start="0600"),
DayHours(day=1, end="2230", is_overnight=False, start="0600"),
DayHours(day=2, end="2230", is_overnight=False, start="0600"),
DayHours(day=3, end="2230", is_overnight=False, start="0600"),
DayHours(day=4, end="2230", is_overnight=False, start="0600"),
DayHours(day=5, end="2230", is_overnight=False, start="0600"),
DayHours(day=6, end="2230", is_overnight=False, start="0600"),
],
)
],
id="spIGAtquYQ0S7xai5eJSuA",
image_url="https://s3-media2.fl.yelpcdn.com/bphoto/_jdFMkxKj8ejkD2dOduC1A/o.jpg",
is_claimed=False,
is_closed=False,
location=Location(
address1="35 rue du Chevalier de la Barre",
address2="",
address3="",
city="Paris",
country="FR",
cross_streets="",
display_address=["35 rue du Chevalier de la Barre", "75018 Paris"],
state="75",
zip_code="75018",
),
name="Basilique du Sacré-Cœur de Montmartre",
phone="+33153418900",
photos=[
"https://s3-media2.fl.yelpcdn.com/bphoto/_jdFMkxKj8ejkD2dOduC1A/o.jpg",
"https://s3-media4.fl.yelpcdn.com/bphoto/xFFrnrUAPZYFvtZMLLWkvQ/o.jpg",
"https://s3-media4.fl.yelpcdn.com/bphoto/70tWE7016eFJ-xjTup-YRA/o.jpg",
],
rating=4.5,
review_count=538,
transactions=[],
url="https://www.yelp.fr/biz/basilique-du-sacr%C3%A9-c%C5%93ur-de-montmartre-paris-3", # noqa: E501
)
3 changes: 3 additions & 0 deletions testing/util.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import json
import os.path

Expand Down
5 changes: 4 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# -*- coding: utf-8 -*-
import responses
from __future__ import absolute_import
from __future__ import unicode_literals

import pytest
import responses


@pytest.fixture(autouse=True)
Expand Down
7 changes: 5 additions & 2 deletions tests/endpoint/business_test.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import mock
import pytest

from yelp.endpoint.business import BusinessEndpoints
import yelp.endpoint.business
import pytest
from yelp.endpoint.business import BusinessEndpoints


@pytest.fixture
Expand Down
8 changes: 6 additions & 2 deletions tests/endpoint/conftest.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import mock
import pytest
from yelp.client import Client

import yelp.client
import mock
from yelp.client import Client


@pytest.fixture
Expand Down
6 changes: 5 additions & 1 deletion tests/errors_test.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# -*- coding: utf-8 -*-
from yelp.errors import YelpError
from __future__ import absolute_import
from __future__ import unicode_literals

import mock
import pytest

from yelp.errors import YelpError


def test():
json_response = {
Expand Down
38 changes: 30 additions & 8 deletions tests/integration/business_integration_test.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,42 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import pytest
import responses

import testing.business_lookup_responses as response_fixtures
import testing.obj.business as business_obj_fixtures
from testing.error_responses import ERROR_RESPONSES
from yelp import errors
from yelp.client import Client
import responses
from testing.error_responses import ERROR_RESPONSES
from testing.business_lookup_responses import BUSINESS_LOOKUP_RESPONSE
from testing.obj.business import biz_response_obj


class TestBusinessIntegration:
def test_success(self):
responses.add(BUSINESS_LOOKUP_RESPONSE)
@pytest.mark.parametrize(
["business_alias", "url_params", "mock_response", "expected_response"],
[
(
"yelp-san-francisco",
{},
response_fixtures.YELP_SAN_FRANCISCO,
business_obj_fixtures.yelp_san_francisco,
),
(
"basilique-du-sacré-cœur-de-montmartre-paris-3",
{"locale": "fr_FR"},
response_fixtures.SACRE_COEUR_PARIS,
business_obj_fixtures.sacre_coeur_paris,
),
],
)
def test_success(
self, business_alias, url_params, mock_response, expected_response
):
responses.add(mock_response)
client = Client("BOGUS API KEY")
response = client.business.get_by_id("yelp-san-francisco")
assert response.to_dict() == biz_response_obj.to_dict()
response = client.business.get_by_id(business_alias, **url_params)
assert response.to_dict() == expected_response.to_dict()

@pytest.mark.parametrize(
["url_params", "mock_response", "expected_error"],
Expand Down
13 changes: 12 additions & 1 deletion tests/obj/response_object_test.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

from yelp.obj.response_object import ResponseObject


Expand Down Expand Up @@ -28,9 +31,17 @@ class Dog(ResponseObject):


def test_repr():
assert repr(dog_obj) == (
expected_py3 = (
"Dog(aliases=['Woofus', 'Dogmeat'], "
"favorite_food=DogFood(brand='Kibbles', cost=9.99), "
"favorite_places=[Place(name='dirt pile'), Place(name='fire hydrant')], "
"name='Master Peabody')"
)
expected_py27 = (
"Dog(aliases=[u'Woofus', u'Dogmeat'], "
"favorite_food=DogFood(brand=u'Kibbles', cost=9.99), "
"favorite_places=[Place(name=u'dirt pile'), Place(name=u'fire hydrant')], "
"name=u'Master Peabody')"
)

assert repr(dog_obj) in {expected_py27, expected_py3}
3 changes: 3 additions & 0 deletions yelp/client.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

import requests
import six

Expand Down
3 changes: 3 additions & 0 deletions yelp/config.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

API_ROOT_URL = "https://api.yelp.com"

BUSINESS_PATH = "/v3/businesses/{business_id}"
Expand Down
3 changes: 3 additions & 0 deletions yelp/endpoint/business.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals

from yelp.config import BUSINESS_PATH
from yelp.obj.business import Business

Expand Down
Loading