Skip to content

Commit

Permalink
tests for filter by geometry features
Browse files Browse the repository at this point in the history
  • Loading branch information
exxamalte committed Nov 2, 2020
1 parent fcb2996 commit 64daa98
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 3 deletions.
26 changes: 24 additions & 2 deletions tests/__init__.py
@@ -1,9 +1,10 @@
"""Tests for georss-client library."""
from typing import Dict, Optional, Tuple
from typing import Dict, Optional, Tuple, List, Type

from aio_georss_client.feed import GeoRssFeed
from aio_georss_client.feed_entry import FeedEntry
from aio_georss_client.feed_entry import FeedEntry, DEFAULT_FEATURES
from aio_georss_client.xml_parser.feed_item import FeedItem
from aio_georss_client.xml_parser.geometry import Geometry, Point, BoundingBox

MOCK_HOME_COORDINATES = (0.0, 0.0)

Expand All @@ -28,6 +29,27 @@ def _new_entry(self,

class MockSimpleFeedEntry(FeedEntry):

def __init__(self, home_coordinates: Tuple[float, float],
rss_entry: FeedItem,
features: List[Type[Geometry]] = DEFAULT_FEATURES):
super().__init__(home_coordinates, rss_entry)
self._features = features

@property
def features(self) -> List[Type[Geometry]]:
return self._features

@property
def attribution(self) -> Optional[str]:
return "mock attribution"


class MockFeedItem(FeedItem):

def __init__(self, source, geometries):
super().__init__(source)
self._geometries = geometries

@property
def geometries(self) -> Optional[List[Geometry]]:
return self._geometries
29 changes: 28 additions & 1 deletion tests/test_feed_entry.py
Expand Up @@ -2,7 +2,9 @@
import datetime
from unittest import mock

from tests import MockFeedEntry, MockSimpleFeedEntry, MOCK_HOME_COORDINATES
from aio_georss_client.xml_parser.geometry import Point, BoundingBox, Polygon
from . import MockFeedEntry, MockSimpleFeedEntry, MOCK_HOME_COORDINATES, \
MockFeedItem


def test_simple_feed_entry():
Expand Down Expand Up @@ -31,6 +33,31 @@ def test_simple_feed_entry():
assert feed_entry._string2boolean("yes")


def test_feed_entry_features():
"""Test feed entry filtering by feature."""
point = Point(0.0, 0.0)
polygon = Polygon([point, point])
bounding_box = BoundingBox(point, point)
feed_item = MockFeedItem(None, [point, polygon, point, polygon, polygon,
bounding_box])
# 1. Include all
feed_entry = MockSimpleFeedEntry(None, feed_item, [Point, Polygon,
BoundingBox])
assert len(feed_entry.geometries) == 6
# 2. Exclude points
feed_entry = MockSimpleFeedEntry(None, feed_item, [Polygon, BoundingBox])
assert len(feed_entry.geometries) == 4
# 3. Exclude polygons
feed_entry = MockSimpleFeedEntry(None, feed_item, [Point, BoundingBox])
assert len(feed_entry.geometries) == 3
# 4. Exclude bounding boxes
feed_entry = MockSimpleFeedEntry(None, feed_item, [Point, Polygon])
assert len(feed_entry.geometries) == 5
# 5. Exclude all
feed_entry = MockSimpleFeedEntry(None, feed_item, [])
assert len(feed_entry.geometries) == 0


def test_feed_entry_search_in_attributes():
"""Test feed entry behaviour."""
rss_entry = mock.MagicMock()
Expand Down

0 comments on commit 64daa98

Please sign in to comment.