From 409adf32e64979a777852b170cc98f296986969e Mon Sep 17 00:00:00 2001 From: Bernardo Gomes Date: Sun, 1 Mar 2020 21:25:43 -0300 Subject: [PATCH 1/2] Removed check of variable on dict. --- flask_googlemaps/__init__.py | 7 +- flask_googlemaps/tests/__init__.py | 0 flask_googlemaps/tests/test_map.py | 44 ++++++++ poetry.lock | 155 ++++++++++++++++++++++++++++- pyproject.toml | 1 + 5 files changed, 200 insertions(+), 7 deletions(-) create mode 100644 flask_googlemaps/tests/__init__.py create mode 100644 flask_googlemaps/tests/test_map.py diff --git a/flask_googlemaps/__init__.py b/flask_googlemaps/__init__.py index 0f0e753..05ec0e1 100644 --- a/flask_googlemaps/__init__.py +++ b/flask_googlemaps/__init__.py @@ -114,13 +114,10 @@ def build_marker_dict(self, marker, icon=None): marker_dict["icon"] = marker[3] return marker_dict - def add_marker(self, lat=None, lng=None, **kwargs): - if lat is not None: - kwargs["lat"] = lat - if lng is not None: - kwargs["lng"] = lng + def add_marker(self, **kwargs): if "lat" not in kwargs or "lng" not in kwargs: raise AttributeError("lat and lng required") + self.markers.append(kwargs) def build_rectangles(self, rectangles): diff --git a/flask_googlemaps/tests/__init__.py b/flask_googlemaps/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/flask_googlemaps/tests/test_map.py b/flask_googlemaps/tests/test_map.py new file mode 100644 index 0000000..b881444 --- /dev/null +++ b/flask_googlemaps/tests/test_map.py @@ -0,0 +1,44 @@ +import pytest +from flask_googlemaps import Map + + +class TestFunctionAddMarker: + """ + This Class is to test function add marker. + """ + + google_map = None + + @pytest.fixture(autouse=True) + def config_test(self): + self.google_map = Map( + identifier="view-side", # for DOM element + varname="mymap", # for JS object name + lat=37.4419, + lng=-122.1419, + ) + + @pytest.mark.parametrize("marker", [{}, {"lat": 1}, {"lng": 1}]) + def test_it_should_raise_a_attribute_error_when_is_missing_params(self, marker): + """ + Test check the validation of marker. + This should raise expetion when the lat, lng or both are missing. + """ + with pytest.raises(AttributeError) as error: + self.google_map.add_marker(**marker) + + assert str(error.value) == "lat and lng required" + + @pytest.mark.parametrize( + "marker", + [ + {"lat": 10, "lng": 20, "icon": "red"}, + {"lat": 10, "lng": 20, "icon": "red", "infobox": "teste"}, + ], + ) + def test_it_should_add_to_marker_list_a_new_valid_marker(self, marker): + """ + Test check if add_marker is adding a new market to markers_list. + """ + self.google_map.add_marker(**marker) + assert len(self.google_map.markers) == 1 diff --git a/poetry.lock b/poetry.lock index bb41ee8..efb624c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -32,6 +32,15 @@ wrapt = ">=1.11.0,<1.12.0" python = "<3.8" version = ">=1.4.0,<1.5" +[[package]] +category = "dev" +description = "Atomic file writes." +marker = "sys_platform == \"win32\"" +name = "atomicwrites" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.3.0" + [[package]] category = "dev" description = "Classes Without Boilerplate" @@ -178,6 +187,22 @@ Mako = ["mako"] Mustache = ["pystache"] test = ["mako", "minimock", "nose", "pystache"] +[[package]] +category = "dev" +description = "Read metadata from Python packages" +marker = "python_version < \"3.8\"" +name = "importlib-metadata" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "1.5.0" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "rst.linker"] +testing = ["packaging", "importlib-resources"] + [[package]] category = "dev" description = "IPython-enabled pdb" @@ -312,6 +337,26 @@ optional = false python-versions = "*" version = "0.6.1" +[[package]] +category = "dev" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" +optional = false +python-versions = ">=3.5" +version = "8.2.0" + +[[package]] +category = "dev" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.1" + +[package.dependencies] +pyparsing = ">=2.0.2" +six = "*" + [[package]] category = "dev" description = "A Python Parser" @@ -353,6 +398,22 @@ optional = false python-versions = "*" version = "0.7.5" +[[package]] +category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.1" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +dev = ["pre-commit", "tox"] + [[package]] category = "dev" description = "Library for building powerful interactive command lines in Python" @@ -375,6 +436,14 @@ optional = false python-versions = "*" version = "0.6.0" +[[package]] +category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.8.1" + [[package]] category = "dev" description = "Python style guide checker" @@ -414,6 +483,40 @@ colorama = "*" isort = ">=4.2.5,<5" mccabe = ">=0.6,<0.7" +[[package]] +category = "dev" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.6" + +[[package]] +category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" +optional = false +python-versions = ">=3.5" +version = "5.3.5" + +[package.dependencies] +atomicwrites = ">=1.0" +attrs = ">=17.4.0" +colorama = "*" +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +checkqa-mypy = ["mypy (v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + [[package]] category = "dev" description = "Advanced Python dictionaries with dot notation access" @@ -497,7 +600,6 @@ version = "1.4.1" [[package]] category = "dev" description = "Measures number of Terminal column cells of wide-character codes" -marker = "python_version >= \"3.4\"" name = "wcwidth" optional = false python-versions = "*" @@ -523,8 +625,21 @@ optional = false python-versions = "*" version = "1.11.2" +[[package]] +category = "dev" +description = "Backport of pathlib-compatible object wrapper for zip files" +marker = "python_version < \"3.8\"" +name = "zipp" +optional = false +python-versions = ">=3.6" +version = "3.0.0" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["jaraco.itertools", "func-timeout"] + [metadata] -content-hash = "dda5ada022372ea82a846c91b4120037ab0b12ee1c11a5bf8d6235655e065a36" +content-hash = "fca7cbff51d0683d138bf96f7de7c17397a276b56e288d4fbdfb006ebbb97a9a" python-versions = ">=3.6" [metadata.files] @@ -540,6 +655,10 @@ astroid = [ {file = "astroid-2.3.3-py3-none-any.whl", hash = "sha256:840947ebfa8b58f318d42301cf8c0a20fd794a33b61cc4638e28e9e61ba32f42"}, {file = "astroid-2.3.3.tar.gz", hash = "sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a"}, ] +atomicwrites = [ + {file = "atomicwrites-1.3.0-py2.py3-none-any.whl", hash = "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4"}, + {file = "atomicwrites-1.3.0.tar.gz", hash = "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"}, +] attrs = [ {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, @@ -584,6 +703,10 @@ gitchangelog = [ {file = "gitchangelog-3.0.4-py2.py3-none-any.whl", hash = "sha256:45f8b8e64cece0d9bb03a35ecd8ee62c1c7157f8dac0ef3cb68381bfcc1bde29"}, {file = "gitchangelog-3.0.4.tar.gz", hash = "sha256:3d8d6a730450fbd5b0a9bc58d0dd3e269c967d7eb4fece0c5cff4372a3f77421"}, ] +importlib-metadata = [ + {file = "importlib_metadata-1.5.0-py2.py3-none-any.whl", hash = "sha256:b97607a1a18a5100839aec1dc26a1ea17ee0d93b20b0f008d80a5a050afb200b"}, + {file = "importlib_metadata-1.5.0.tar.gz", hash = "sha256:06f5b3a99029c7134207dd882428a66992a9de2bef7c2b699b5641f9886c3302"}, +] ipdb = [ {file = "ipdb-0.12.3.tar.gz", hash = "sha256:5d9a4a0e3b7027a158fc6f2929934341045b9c3b0b86ed5d7e84e409653f72fd"}, ] @@ -673,6 +796,14 @@ mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] +more-itertools = [ + {file = "more-itertools-8.2.0.tar.gz", hash = "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507"}, + {file = "more_itertools-8.2.0-py3-none-any.whl", hash = "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c"}, +] +packaging = [ + {file = "packaging-20.1-py2.py3-none-any.whl", hash = "sha256:170748228214b70b672c581a3dd610ee51f733018650740e98c7df862a583f73"}, + {file = "packaging-20.1.tar.gz", hash = "sha256:e665345f9eef0c621aa0bf2f8d78cf6d21904eef16a93f020240b704a57f1334"}, +] parso = [ {file = "parso-0.6.1-py2.py3-none-any.whl", hash = "sha256:951af01f61e6dccd04159042a0706a31ad437864ec6e25d0d7a96a9fbb9b0095"}, {file = "parso-0.6.1.tar.gz", hash = "sha256:56b2105a80e9c4df49de85e125feb6be69f49920e121406f15e7acde6c9dfc57"}, @@ -689,6 +820,10 @@ pickleshare = [ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] prompt-toolkit = [ {file = "prompt_toolkit-1.0.18-py2-none-any.whl", hash = "sha256:f7eec66105baf40eda9ab026cd8b2e251337eea8d111196695d82e0c5f0af852"}, {file = "prompt_toolkit-1.0.18-py3-none-any.whl", hash = "sha256:37925b37a4af1f6448c76b7606e0285f79f434ad246dda007a27411cca730c6d"}, @@ -698,6 +833,10 @@ ptyprocess = [ {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, ] +py = [ + {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, + {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, +] pycodestyle = [ {file = "pycodestyle-2.5.0-py2.py3-none-any.whl", hash = "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56"}, {file = "pycodestyle-2.5.0.tar.gz", hash = "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"}, @@ -714,6 +853,14 @@ pylint = [ {file = "pylint-2.4.4-py3-none-any.whl", hash = "sha256:886e6afc935ea2590b462664b161ca9a5e40168ea99e5300935f6591ad467df4"}, {file = "pylint-2.4.4.tar.gz", hash = "sha256:3db5468ad013380e987410a8d6956226963aed94ecb5f9d3a28acca6d9ac36cd"}, ] +pyparsing = [ + {file = "pyparsing-2.4.6-py2.py3-none-any.whl", hash = "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec"}, + {file = "pyparsing-2.4.6.tar.gz", hash = "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f"}, +] +pytest = [ + {file = "pytest-5.3.5-py3-none-any.whl", hash = "sha256:ff615c761e25eb25df19edddc0b970302d2a9091fbce0e7213298d85fb61fef6"}, + {file = "pytest-5.3.5.tar.gz", hash = "sha256:0d5fe9189a148acc3c3eb2ac8e1ac0742cb7618c084f3d228baaec0c254b318d"}, +] python-box = [ {file = "python-box-3.4.6.tar.gz", hash = "sha256:694a7555e3ff9fbbce734bbaef3aad92b8e4ed0659d3ed04d56b6a0a0eff26a9"}, {file = "python_box-3.4.6-py2.py3-none-any.whl", hash = "sha256:a71d3dc9dbaa34c8597d3517c89a8041bd62fa875f23c0f3dad55e1958e3ce10"}, @@ -795,3 +942,7 @@ werkzeug = [ wrapt = [ {file = "wrapt-1.11.2.tar.gz", hash = "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"}, ] +zipp = [ + {file = "zipp-3.0.0-py3-none-any.whl", hash = "sha256:12248a63bbdf7548f89cb4c7cda4681e537031eda29c02ea29674bc6854460c2"}, + {file = "zipp-3.0.0.tar.gz", hash = "sha256:7c0f8e91abc0dc07a5068f315c52cb30c66bfbc581e5b50704c8a2f6ebae794a"}, +] diff --git a/pyproject.toml b/pyproject.toml index d3e0a36..c8480c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,7 @@ flake8 = "^3.7.9" black = "^19.10b0" gitchangelog = "^3.0.4" pylint = "^2.4.4" +pytest = "5.3.5" [build-system] requires = ["poetry>=0.12"] From d5d37c75fe075172bf52d148c1c39fe0ea60ddaa Mon Sep 17 00:00:00 2001 From: Bernardo Gomes Date: Sun, 15 Mar 2020 06:30:59 -0300 Subject: [PATCH 2/2] Formated line length. --- flask_googlemaps/__init__.py | 53 +++++++++++++++++++++--------- flask_googlemaps/tests/test_map.py | 2 +- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/flask_googlemaps/__init__.py b/flask_googlemaps/__init__.py index 05ec0e1..68859a1 100644 --- a/flask_googlemaps/__init__.py +++ b/flask_googlemaps/__init__.py @@ -775,24 +775,45 @@ def set_googlemaps_loaded(): g.googlemaps_loaded = True return "" -def get_address(API_KEY,lat,lon): + +def get_address(API_KEY, lat, lon): add_dict = dict() - response = rq.get('https://maps.googleapis.com/maps/api/geocode/json?latlng='+','.join(map(str,[lat,lon]))+'&key='+API_KEY).json() - add_dict['zip'] = response['results'][0]['address_components'][-1]['long_name'] - add_dict['country'] = response['results'][0]['address_components'][-2]['long_name'] - add_dict['state'] = response['results'][0]['address_components'][-3]['long_name'] - add_dict['city'] = response['results'][0]['address_components'][-4]['long_name'] - add_dict['locality'] = response['results'][0]['address_components'][-5]['long_name'] - add_dict['road'] = response['results'][0]['address_components'][-6]['long_name'] - add_dict['formatted_address'] = response['results'][0]['formatted_address'] + response = rq.get( + "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + + ",".join(map(str, [lat, lon])) + + "&key=" + + API_KEY + ).json() + add_dict["zip"] = response["results"][0]["address_components"][-1][ + "long_name" + ] + add_dict["country"] = response["results"][0]["address_components"][-2][ + "long_name" + ] + add_dict["state"] = response["results"][0]["address_components"][-3][ + "long_name" + ] + add_dict["city"] = response["results"][0]["address_components"][-4][ + "long_name" + ] + add_dict["locality"] = response["results"][0]["address_components"][-5][ + "long_name" + ] + add_dict["road"] = response["results"][0]["address_components"][-6][ + "long_name" + ] + add_dict["formatted_address"] = response["results"][0]["formatted_address"] return add_dict - - - -def get_coordinates( API_KEY,address_text): - response = rq.get('https://maps.googleapis.com/maps/api/geocode/json?address='+address_text+'&key='+API_KEY).json() - return response['results'][0]['geometry']['location'] - + + +def get_coordinates(API_KEY, address_text): + response = rq.get( + "https://maps.googleapis.com/maps/api/geocode/json?address=" + + address_text + + "&key=" + + API_KEY + ).json() + return response["results"][0]["geometry"]["location"] def is_googlemaps_loaded(): diff --git a/flask_googlemaps/tests/test_map.py b/flask_googlemaps/tests/test_map.py index b881444..e2ec1c1 100644 --- a/flask_googlemaps/tests/test_map.py +++ b/flask_googlemaps/tests/test_map.py @@ -19,7 +19,7 @@ def config_test(self): ) @pytest.mark.parametrize("marker", [{}, {"lat": 1}, {"lng": 1}]) - def test_it_should_raise_a_attribute_error_when_is_missing_params(self, marker): + def test_should_raise_attribute_error_when_is_missing_params(self, marker): """ Test check the validation of marker. This should raise expetion when the lat, lng or both are missing.